diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2016-09-11 21:52:40 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2016-09-11 21:52:40 (GMT) |
commit | b72810583e68531bb4231f42f1ce3ff4c0c9958b (patch) | |
tree | 410e81d9e6d1b561ccd96372319e0b5eb53eec34 /Python/compile.c | |
parent | 29097d5a6aa13729583f98cd09923f97addb7819 (diff) | |
download | cpython-b72810583e68531bb4231f42f1ce3ff4c0c9958b.zip cpython-b72810583e68531bb4231f42f1ce3ff4c0c9958b.tar.gz cpython-b72810583e68531bb4231f42f1ce3ff4c0c9958b.tar.bz2 |
Issue #27213: Fixed different issues with reworked CALL_FUNCTION* opcodes.
* BUILD_TUPLE_UNPACK and BUILD_MAP_UNPACK_WITH_CALL no longer generated with
single tuple or dict.
* Restored more informative error messages for incorrect var-positional and
var-keyword arguments.
* Removed code duplications in _PyEval_EvalCodeWithName().
* Removed redundant runtime checks and parameters in _PyStack_AsDict().
* Added a workaround and enabled previously disabled test in test_traceback.
* Removed dead code from the dis module.
Diffstat (limited to 'Python/compile.c')
-rw-r--r-- | Python/compile.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/Python/compile.c b/Python/compile.c index 6bab86e..9502fee 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -3503,7 +3503,7 @@ compiler_call_helper(struct compiler *c, asdl_seq *keywords) { Py_ssize_t i, nseen, nelts, nkwelts; - int musttupleunpack = 0, mustdictunpack = 0; + int mustdictunpack = 0; /* the number of tuples and dictionaries on the stack */ Py_ssize_t nsubargs = 0, nsubkwargs = 0; @@ -3532,7 +3532,6 @@ compiler_call_helper(struct compiler *c, } VISIT(c, expr, elt->v.Starred.value); nsubargs++; - musttupleunpack = 1; } else { VISIT(c, expr, elt); @@ -3541,13 +3540,13 @@ compiler_call_helper(struct compiler *c, } /* Same dance again for keyword arguments */ - if (musttupleunpack || mustdictunpack) { + if (nsubargs || mustdictunpack) { if (nseen) { /* Pack up any trailing positional arguments. */ ADDOP_I(c, BUILD_TUPLE, nseen); nsubargs++; } - if (musttupleunpack || nsubargs > 1) { + if (nsubargs > 1) { /* If we ended up with more than one stararg, we need to concatenate them into a single sequence. */ ADDOP_I(c, BUILD_TUPLE_UNPACK, nsubargs); @@ -3579,7 +3578,7 @@ compiler_call_helper(struct compiler *c, return 0; nsubkwargs++; } - if (mustdictunpack || nsubkwargs > 1) { + if (nsubkwargs > 1) { /* Pack it all up */ ADDOP_I(c, BUILD_MAP_UNPACK_WITH_CALL, nsubkwargs); } |