[pypy-svn] r77773 - in pypy/branch/jitffi/pypy/module/_ffi: . test
antocuni at codespeak.net
antocuni at codespeak.net
Mon Oct 11 10:58:29 CEST 2010
Author: antocuni
Date: Mon Oct 11 10:58:22 2010
New Revision: 77773
Modified:
pypy/branch/jitffi/pypy/module/_ffi/interp_ffi.py
pypy/branch/jitffi/pypy/module/_ffi/test/test__ffi.py
Log:
raise TypeError if the number of actual arguments is not the expected one
Modified: pypy/branch/jitffi/pypy/module/_ffi/interp_ffi.py
==============================================================================
--- pypy/branch/jitffi/pypy/module/_ffi/interp_ffi.py (original)
+++ pypy/branch/jitffi/pypy/module/_ffi/interp_ffi.py Mon Oct 11 10:58:22 2010
@@ -55,7 +55,14 @@
@jit.unroll_safe
def build_argchain(self, space, argtypes, args_w):
- assert len(args_w) == len(argtypes) # XXX: raise OperationError
+ if len(args_w) != len(argtypes):
+ arg = 'arguments'
+ if len(argtypes) == 1:
+ arg = 'argument'
+ raise operationerrfmt(space.w_TypeError,
+ '%s() takes exactly %d %s (%d given)',
+ self.func.name, len(argtypes), arg, len(args_w))
+ #
argchain = libffi.ArgChain()
for i in range(len(args_w)):
argtype = argtypes[i]
Modified: pypy/branch/jitffi/pypy/module/_ffi/test/test__ffi.py
==============================================================================
--- pypy/branch/jitffi/pypy/module/_ffi/test/test__ffi.py (original)
+++ pypy/branch/jitffi/pypy/module/_ffi/test/test__ffi.py Mon Oct 11 10:58:22 2010
@@ -84,3 +84,10 @@
assert get_dummy() == 0
assert set_dummy(42) is None
assert get_dummy() == 42
+
+ def test_TypeError_numargs(self):
+ from _ffi import CDLL, types
+ libfoo = CDLL(self.libfoo_name)
+ sum_xy = libfoo.getfunc('sum_xy', [types.sint, types.sint], types.sint)
+ raises(TypeError, "sum_xy(1, 2, 3)")
+ raises(TypeError, "sum_xy(1)")
More information about the Pypy-commit
mailing list