summaryrefslogtreecommitdiffstats
path: root/Python/compile.c
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2016-09-11 21:52:40 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2016-09-11 21:52:40 (GMT)
commitb72810583e68531bb4231f42f1ce3ff4c0c9958b (patch)
tree410e81d9e6d1b561ccd96372319e0b5eb53eec34 /Python/compile.c
parent29097d5a6aa13729583f98cd09923f97addb7819 (diff)
downloadcpython-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.c9
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);
}