bpo-43017: Improve error message for unparenthesised tuples in comprehensions (GH24314)
diff --git a/Lib/test/test_named_expressions.py b/Lib/test/test_named_expressions.py
index 5908f12..20ac2e6 100644
--- a/Lib/test/test_named_expressions.py
+++ b/Lib/test/test_named_expressions.py
@@ -101,7 +101,8 @@ def test_named_expression_invalid_16(self):
def test_named_expression_invalid_17(self):
code = "[i := 0, j := 1 for i, j in [(1, 2), (3, 4)]]"
- with self.assertRaisesRegex(SyntaxError, "invalid syntax"):
+ with self.assertRaisesRegex(SyntaxError,
+ "did you forget parentheses around the comprehension target?"):
exec(code, {}, {})
def test_named_expression_invalid_in_class_body(self):
diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py
index c8d191d..604474f 100644
--- a/Lib/test/test_syntax.py
+++ b/Lib/test/test_syntax.py
@@ -235,6 +235,21 @@
Traceback (most recent call last):
SyntaxError: invalid syntax
+Comprehensions creating tuples without parentheses
+should produce a specialized error message:
+
+>>> [x,y for x,y in range(100)]
+Traceback (most recent call last):
+SyntaxError: did you forget parentheses around the comprehension target?
+
+>>> {x,y for x,y in range(100)}
+Traceback (most recent call last):
+SyntaxError: did you forget parentheses around the comprehension target?
+
+>>> {x,y: None for x,y in range(100)}
+Traceback (most recent call last):
+SyntaxError: did you forget parentheses around the comprehension target?
+
From compiler_complex_args():
>>> def f(None=1):