示例#1
0
 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)])
示例#2
0
 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')
示例#3
0
 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))
示例#4
0
 def atom_call(state, p):
     return ast.Call(p[0], p[2].get_element_list(), srcpos=sr(p))
示例#5
0
 def expression_call(state, p):
     return ast.Call(p[0], p[2].get_element_list())