@@ -135,6 +135,7 @@ var grammarTestData = []struct {
135
135
{"a(b,c)" , "eval" , "Expression(body=Call(func=Name(id='a', ctx=Load()), args=[Name(id='b', ctx=Load()), Name(id='c', ctx=Load())], keywords=[], starargs=None, kwargs=None))" , nil , "" },
136
136
{"a(b,*c)" , "eval" , "Expression(body=Call(func=Name(id='a', ctx=Load()), args=[Name(id='b', ctx=Load())], keywords=[], starargs=Name(id='c', ctx=Load()), kwargs=None))" , nil , "" },
137
137
{"a(*b)" , "eval" , "Expression(body=Call(func=Name(id='a', ctx=Load()), args=[], keywords=[], starargs=Name(id='b', ctx=Load()), kwargs=None))" , nil , "" },
138
+ {"a(*b,c)" , "eval" , "" , py .SyntaxError , "only named arguments may follow *expression" },
138
139
{"a(b,*c,**d)" , "eval" , "Expression(body=Call(func=Name(id='a', ctx=Load()), args=[Name(id='b', ctx=Load())], keywords=[], starargs=Name(id='c', ctx=Load()), kwargs=Name(id='d', ctx=Load())))" , nil , "" },
139
140
{"a(b,**c)" , "eval" , "Expression(body=Call(func=Name(id='a', ctx=Load()), args=[Name(id='b', ctx=Load())], keywords=[], starargs=None, kwargs=Name(id='c', ctx=Load())))" , nil , "" },
140
141
{"a(a=b)" , "eval" , "Expression(body=Call(func=Name(id='a', ctx=Load()), args=[], keywords=[keyword(arg='a', value=Name(id='b', ctx=Load()))], starargs=None, kwargs=None))" , nil , "" },
@@ -244,6 +245,7 @@ var grammarTestData = []struct {
244
245
{"a **= b" , "exec" , "Module(body=[AugAssign(target=Name(id='a', ctx=Store()), op=Pow(), value=Name(id='b', ctx=Load()))])" , nil , "" },
245
246
{"a //= b" , "exec" , "Module(body=[AugAssign(target=Name(id='a', ctx=Store()), op=FloorDiv(), value=Name(id='b', ctx=Load()))])" , nil , "" },
246
247
{"a //= yield b" , "exec" , "Module(body=[AugAssign(target=Name(id='a', ctx=Store()), op=FloorDiv(), value=Yield(value=Name(id='b', ctx=Load())))])" , nil , "" },
248
+ {"a <> b" , "exec" , "" , py .SyntaxError , "invalid syntax" },
247
249
{"a.b += 1" , "exec" , "Module(body=[AugAssign(target=Attribute(value=Name(id='a', ctx=Load()), attr='b', ctx=Store()), op=Add(), value=Num(n=1))])" , nil , "" },
248
250
{"a = b" , "exec" , "Module(body=[Assign(targets=[Name(id='a', ctx=Store())], value=Name(id='b', ctx=Load()))])" , nil , "" },
249
251
{"a = 007" , "exec" , "" , py .SyntaxError , "illegal decimal with leading zero" },
@@ -253,6 +255,19 @@ var grammarTestData = []struct {
253
255
{"a, b = *a" , "exec" , "Module(body=[Assign(targets=[Tuple(elts=[Name(id='a', ctx=Store()), Name(id='b', ctx=Store())], ctx=Store())], value=Starred(value=Name(id='a', ctx=Load()), ctx=Load()))])" , nil , "" },
254
256
{"a = yield a" , "exec" , "Module(body=[Assign(targets=[Name(id='a', ctx=Store())], value=Yield(value=Name(id='a', ctx=Load())))])" , nil , "" },
255
257
{"a.b = 1" , "exec" , "Module(body=[Assign(targets=[Attribute(value=Name(id='a', ctx=Load()), attr='b', ctx=Store())], value=Num(n=1))])" , nil , "" },
258
+ {"f() = 1" , "exec" , "" , py .SyntaxError , "can't assign to function call" },
259
+ {"lambda: x = 1" , "exec" , "" , py .SyntaxError , "can't assign to lambda" },
260
+ {"(a + b) = 1" , "exec" , "" , py .SyntaxError , "can't assign to operator" },
261
+ {"(x for x in xs) = 1" , "exec" , "" , py .SyntaxError , "can't assign to generator expression" },
262
+ {"(yield x) = 1" , "exec" , "" , py .SyntaxError , "can't assign to yield expression" },
263
+ {"[x for x in xs] = 1" , "exec" , "" , py .SyntaxError , "can't assign to list comprehension" },
264
+ {"{x for x in xs} = 1" , "exec" , "" , py .SyntaxError , "can't assign to set comprehension" },
265
+ {"{x:x for x in xs} = 1" , "exec" , "" , py .SyntaxError , "can't assign to dict comprehension" },
266
+ {"{} = 1" , "exec" , "" , py .SyntaxError , "can't assign to literal" },
267
+ {"None = 1" , "exec" , "" , py .SyntaxError , "can't assign to keyword" },
268
+ {"... = 1" , "exec" , "" , py .SyntaxError , "can't assign to Ellipsis" },
269
+ {"(a < b) = 1" , "exec" , "" , py .SyntaxError , "can't assign to comparison" },
270
+ {"(a if b else c) = 1" , "exec" , "" , py .SyntaxError , "can't assign to conditional expression" },
256
271
{"lambda: a" , "eval" , "Expression(body=Lambda(args=arguments(args=[], vararg=None, kwonlyargs=[], kw_defaults=[], kwarg=None, defaults=[]), body=Name(id='a', ctx=Load())))" , nil , "" },
257
272
{"lambda: lambda: a" , "eval" , "Expression(body=Lambda(args=arguments(args=[], vararg=None, kwonlyargs=[], kw_defaults=[], kwarg=None, defaults=[]), body=Lambda(args=arguments(args=[], vararg=None, kwonlyargs=[], kw_defaults=[], kwarg=None, defaults=[]), body=Name(id='a', ctx=Load()))))" , nil , "" },
258
273
{"lambda a: a" , "eval" , "Expression(body=Lambda(args=arguments(args=[arg(arg='a', annotation=None)], vararg=None, kwonlyargs=[], kw_defaults=[], kwarg=None, defaults=[]), body=Name(id='a', ctx=Load())))" , nil , "" },
@@ -284,6 +299,7 @@ var grammarTestData = []struct {
284
299
{"def fn(**kws): pass" , "exec" , "Module(body=[FunctionDef(name='fn', args=arguments(args=[], vararg=None, kwonlyargs=[], kw_defaults=[], kwarg=arg(arg='kws', annotation=None), defaults=[]), body=[Pass()], decorator_list=[], returns=None)])" , nil , "" },
285
300
{"def fn() -> None: pass" , "exec" , "Module(body=[FunctionDef(name='fn', args=arguments(args=[], vararg=None, kwonlyargs=[], kw_defaults=[], kwarg=None, defaults=[]), body=[Pass()], decorator_list=[], returns=NameConstant(value=None))])" , nil , "" },
286
301
{"def fn(a:'potato') -> 'sausage': pass" , "exec" , "Module(body=[FunctionDef(name='fn', args=arguments(args=[arg(arg='a', annotation=Str(s='potato'))], vararg=None, kwonlyargs=[], kw_defaults=[], kwarg=None, defaults=[]), body=[Pass()], decorator_list=[], returns=Str(s='sausage'))])" , nil , "" },
302
+ {"del f()" , "exec" , "" , py .SyntaxError , "can't delete function call" },
287
303
{"class A: pass" , "exec" , "Module(body=[ClassDef(name='A', bases=[], keywords=[], starargs=None, kwargs=None, body=[Pass()], decorator_list=[])])" , nil , "" },
288
304
{"class A(): pass" , "exec" , "Module(body=[ClassDef(name='A', bases=[], keywords=[], starargs=None, kwargs=None, body=[Pass()], decorator_list=[])])" , nil , "" },
289
305
{"class A(B): pass" , "exec" , "Module(body=[ClassDef(name='A', bases=[Name(id='B', ctx=Load())], keywords=[], starargs=None, kwargs=None, body=[Pass()], decorator_list=[])])" , nil , "" },
0 commit comments