def test_various_kinds_of_calls(self): r = self.parse('x(1, 2, 3)') assert r == ast.Call( ast.Identifier('x'), [ast.Number(1), ast.Number(2), ast.Number(3)]) r = self.parse('(1)(2)') assert r == ast.Call(ast.Number(1), [ast.Number(2)])
def test_call_with_named_args(self): r = self.parse('x(a=1, b=2)') assert r == ast.Call(ast.Identifier('x'), [], [ ast.NamedArg('a', ast.Number(1)), ast.NamedArg('b', ast.Number(2)), ]) r = self.parse('x(1, b=2)') assert r == ast.Call(ast.Identifier('x'), [ast.Number(1)], [ ast.NamedArg('b', ast.Number(2)), ]) self.parse_bad('x(1=b)') self.parse_bad('x(1, a=2, 3')
def atom_call(state, p): arglist = p[2].get_element_list() rawargs = [] namedargs = [] now_named = False for arg in arglist: if isinstance(arg, ast.NamedArg): now_named = True namedargs.append(arg) else: if now_named: errorhandler(state, p[2], msg="Named args before regular args") rawargs.append(arg) return ast.Call(p[0], rawargs[:], namedargs[:], srcpos=sr(p))
def atom_call(state, p): return ast.Call(p[0], p[2].get_element_list(), srcpos=sr(p))
def expression_call(state, p): return ast.Call(p[0], p[2].get_element_list())