diff options
Diffstat (limited to 'Lib/test/test_syntax.py')
-rw-r--r-- | Lib/test/test_syntax.py | 43 |
1 files changed, 24 insertions, 19 deletions
diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py index 58407212b49..3b1128e9af3 100644 --- a/Lib/test/test_syntax.py +++ b/Lib/test/test_syntax.py @@ -458,28 +458,33 @@ SyntaxError: expected ':' ... 290, 291, 292, 293, 294, 295, 296, 297, 298, 299) # doctest: +ELLIPSIS (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ..., 297, 298, 299) -# >>> f(lambda x: x[0] = 3) -# Traceback (most recent call last): -# SyntaxError: expression cannot contain assignment, perhaps you meant "=="? +>>> f(lambda x: x[0] = 3) +Traceback (most recent call last): +SyntaxError: expression cannot contain assignment, perhaps you meant "=="? + +# Check that this error doesn't trigger for names: +>>> f(a={x: for x in {}}) +Traceback (most recent call last): +SyntaxError: invalid syntax The grammar accepts any test (basically, any expression) in the keyword slot of a call site. Test a few different options. -# >>> f(x()=2) -# Traceback (most recent call last): -# SyntaxError: expression cannot contain assignment, perhaps you meant "=="? -# >>> f(a or b=1) -# Traceback (most recent call last): -# SyntaxError: expression cannot contain assignment, perhaps you meant "=="? -# >>> f(x.y=1) -# Traceback (most recent call last): -# SyntaxError: expression cannot contain assignment, perhaps you meant "=="? -# >>> f((x)=2) -# Traceback (most recent call last): -# SyntaxError: expression cannot contain assignment, perhaps you meant "=="? -# >>> f(True=2) -# Traceback (most recent call last): -# SyntaxError: cannot assign to True here. Maybe you meant '==' instead of '='? +>>> f(x()=2) +Traceback (most recent call last): +SyntaxError: expression cannot contain assignment, perhaps you meant "=="? +>>> f(a or b=1) +Traceback (most recent call last): +SyntaxError: expression cannot contain assignment, perhaps you meant "=="? +>>> f(x.y=1) +Traceback (most recent call last): +SyntaxError: expression cannot contain assignment, perhaps you meant "=="? +>>> f((x)=2) +Traceback (most recent call last): +SyntaxError: expression cannot contain assignment, perhaps you meant "=="? +>>> f(True=2) +Traceback (most recent call last): +SyntaxError: expression cannot contain assignment, perhaps you meant "=="? >>> f(__debug__=1) Traceback (most recent call last): SyntaxError: cannot assign to __debug__ @@ -1422,7 +1427,7 @@ def case(x): case(34) """ compile(code, "<string>", "exec") - + def test_multiline_compiler_error_points_to_the_end(self): self._check_error( "call(\na=1,\na=1\n)", |