Fix AST rewriting with starred expressions in function calls

This commit is contained in:
Thomas Kluyver 2015-07-15 15:31:35 -07:00 committed by Bruno Oliveira
parent 26e7532756
commit d4789f1ac4
1 changed files with 6 additions and 4 deletions

View File

@ -769,10 +769,7 @@ class AssertionRewriter(ast.NodeVisitor):
new_kwargs = []
for arg in call.args:
res, expl = self.visit(arg)
if type(arg) is ast.Starred:
arg_expls.append("*" + expl)
else:
arg_expls.append(expl)
arg_expls.append(expl)
new_args.append(res)
for keyword in call.keywords:
res, expl = self.visit(keyword.value)
@ -789,6 +786,11 @@ class AssertionRewriter(ast.NodeVisitor):
outer_expl = "%s\n{%s = %s\n}" % (res_expl, res_expl, expl)
return res, outer_expl
def visit_Starred(self, starred):
# From Python 3.5, a Starred node can appear in a function call
res, expl = self.visit(starred.value)
return starred, '*' + expl
def visit_Call_legacy(self, call):
"""
visit `ast.Call nodes on 3.4 and below`