3.4: correct picking up parameter names on oa function call

This commit is contained in:
rocky
2015-12-19 20:52:18 -05:00
parent 18ce905edf
commit aa2fc0f5a5
4 changed files with 6 additions and 2 deletions

BIN
test/bytecode_2.7/def1.pyc Normal file

Binary file not shown.

BIN
test/bytecode_2.7/left.pyc Normal file

Binary file not shown.

View File

@@ -1061,6 +1061,7 @@ class Traverser(walker.Walker, object):
return name
# node[-1] == MAKE_xxx_n
defparams = node[:node[-1].attr]
code = node[code_index].attr
@@ -1092,7 +1093,8 @@ class Traverser(walker.Walker, object):
# params = map(lambda name, default: build_param(ast, name, default),
# paramnames, defparams)
params = []
for name, default in map(lambda a, b: (a, b), paramnames, defparams):
for i, name in enumerate(paramnames):
default = defparams[i] if len(defparams) > i else None
params.append( build_param(ast, name, default) )
params.reverse() # back to correct order

View File

@@ -1292,6 +1292,7 @@ class Walker(GenericASTTraversal, object):
else:
return name
# node[-1] == MAKE_xxx_n
defparams = node[:node[-1].attr]
code = node[code_index].attr
@@ -1323,7 +1324,8 @@ class Walker(GenericASTTraversal, object):
# params = map(lambda name, default: build_param(ast, name, default),
# paramnames, defparams)
params = []
for name, default in map(lambda a, b: (a, b), paramnames, defparams):
for i, name in enumerate(paramnames):
default = defparams[i] if len(defparams) > i else None
params.append( build_param(ast, name, default) )
params.reverse() # back to correct order