Skip to content

Commit a4f2421

Browse files
CPython developersyouknowone
authored andcommitted
Update test_dictcomps from CPython 3.10.5
1 parent c62076e commit a4f2421

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

Lib/test/test_dictcomps.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ def test_illegal_assignment(self):
7979
compile("{x: y for y, x in ((1, 2), (3, 4))} = 5", "<test>",
8080
"exec")
8181

82-
with self.assertRaisesRegex(SyntaxError, "cannot assign"):
82+
with self.assertRaisesRegex(SyntaxError, "illegal expression"):
8383
compile("{x: y for y, x in ((1, 2), (3, 4))} += 5", "<test>",
8484
"exec")
8585

@@ -113,5 +113,22 @@ def add_call(pos, value):
113113
self.assertEqual(actual, expected)
114114
self.assertEqual(actual_calls, expected_calls)
115115

116+
def test_assignment_idiom_in_comprehensions(self):
117+
expected = {1: 1, 2: 4, 3: 9, 4: 16}
118+
actual = {j: j*j for i in range(4) for j in [i+1]}
119+
self.assertEqual(actual, expected)
120+
expected = {3: 2, 5: 6, 7: 12, 9: 20}
121+
actual = {j+k: j*k for i in range(4) for j in [i+1] for k in [j+1]}
122+
self.assertEqual(actual, expected)
123+
expected = {3: 2, 5: 6, 7: 12, 9: 20}
124+
actual = {j+k: j*k for i in range(4) for j, k in [(i+1, i+2)]}
125+
self.assertEqual(actual, expected)
126+
127+
def test_star_expression(self):
128+
expected = {0: 0, 1: 1, 2: 4, 3: 9}
129+
self.assertEqual({i: i*i for i in [*range(4)]}, expected)
130+
self.assertEqual({i: i*i for i in (*range(4),)}, expected)
131+
132+
116133
if __name__ == "__main__":
117134
unittest.main()

0 commit comments

Comments
 (0)