diff options
author | Raymond Hettinger <python@rcn.com> | 2003-05-31 07:04:16 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2003-05-31 07:04:16 (GMT) |
commit | 40174c358fc87cd1af79969e60da5d76093768a3 (patch) | |
tree | 0ea3e622119884d25d7540adc3c333861d4d5d2a | |
parent | ca2a2f11d0ee7c8dee0f74d001c6f3f7d15adac9 (diff) | |
download | cpython-40174c358fc87cd1af79969e60da5d76093768a3.zip cpython-40174c358fc87cd1af79969e60da5d76093768a3.tar.gz cpython-40174c358fc87cd1af79969e60da5d76093768a3.tar.bz2 |
SF bug #733667: kwargs handled incorrectly
The fast_function() inlining optimization only
applies when there are zero keyword arguments.
-rw-r--r-- | Lib/test/test_extcall.py | 11 | ||||
-rw-r--r-- | Python/ceval.c | 2 |
2 files changed, 12 insertions, 1 deletions
diff --git a/Lib/test/test_extcall.py b/Lib/test/test_extcall.py index d3c2e3f..f85baf8 100644 --- a/Lib/test/test_extcall.py +++ b/Lib/test/test_extcall.py @@ -1,6 +1,9 @@ from test.test_support import verify, verbose, TestFailed, sortdict from UserList import UserList +def e(a, b): + print a, b + def f(*a, **k): print a, sortdict(k) @@ -22,6 +25,14 @@ f(1, 2, 3, **{'a':4, 'b':5}) f(1, 2, 3, *(4, 5), **{'a':6, 'b':7}) f(1, 2, 3, x=4, y=5, *(6, 7), **{'a':8, 'b':9}) +# Verify clearing of SF bug #733667 +try: + e(c=3) +except TypeError: + pass +else: + print "should raise TypeError: e() got an unexpected keyword argument 'c'" + try: g() except TypeError, err: diff --git a/Python/ceval.c b/Python/ceval.c index 85e9e6b..c652b07 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -3468,7 +3468,7 @@ fast_function(PyObject *func, PyObject ***pp_stack, int n, int na, int nk) PCALL(PCALL_FUNCTION); PCALL(PCALL_FAST_FUNCTION); - if (argdefs == NULL && co->co_argcount == n && + if (argdefs == NULL && co->co_argcount == n && nk==0 && co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { PyFrameObject *f; PyObject *retval = NULL; |