SF bug #733667: kwargs handled incorrectly
The fast_function() inlining optimization only applies when there are zero keyword arguments.
This commit is contained in:
parent
ca2a2f11d0
commit
40174c358f
|
@ -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:
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue