diff options
author | Pablo Galindo <Pablogsal@gmail.com> | 2021-05-19 18:03:04 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-19 18:03:04 (GMT) |
commit | 33c0c90dea06fda1df99482521559ebef7210bea (patch) | |
tree | 109035144aecedfa8dbf63ab2d2c0cd5b396568d /Lib/test | |
parent | 24ccc89547a6ebac058b2c56db4ad4142fdbebea (diff) | |
download | cpython-33c0c90dea06fda1df99482521559ebef7210bea.zip cpython-33c0c90dea06fda1df99482521559ebef7210bea.tar.gz cpython-33c0c90dea06fda1df99482521559ebef7210bea.tar.bz2 |
bpo-44168: Fix error message in the parser for keyword arguments for invalid expressions (GH-26210)
Diffstat (limited to 'Lib/test')
-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 5840721..3b1128e 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)", |