mirror of
https://github.com/python/cpython.git
synced 2025-11-02 03:01:58 +00:00
this is patch
[ 988698 ] compiler.transformer fix for (a, b) = 1, 2 fixing bug [ 988613 ] compiler.transformer and tuple unpacking
This commit is contained in:
parent
ca1a775ab9
commit
3f06189332
2 changed files with 38 additions and 1 deletions
37
Lib/test/test_transformer.py
Normal file
37
Lib/test/test_transformer.py
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
import unittest
|
||||
from test import test_support
|
||||
from compiler import transformer, ast
|
||||
from compiler import compile
|
||||
|
||||
class Tests(unittest.TestCase):
|
||||
|
||||
def testMultipleLHS(self):
|
||||
""" Test multiple targets on the left hand side. """
|
||||
|
||||
snippets = ['a, b = 1, 2',
|
||||
'(a, b) = 1, 2',
|
||||
'((a, b), c) = (1, 2), 3']
|
||||
|
||||
for s in snippets:
|
||||
a = transformer.parse(s)
|
||||
assert isinstance(a, ast.Module)
|
||||
child1 = a.getChildNodes()[0]
|
||||
assert isinstance(child1, ast.Stmt)
|
||||
child2 = child1.getChildNodes()[0]
|
||||
assert isinstance(child2, ast.Assign)
|
||||
|
||||
# This actually tests the compiler, but it's a way to assure the ast
|
||||
# is correct
|
||||
c = compile(s, '<string>', 'single')
|
||||
vals = {}
|
||||
exec c in vals
|
||||
assert vals['a'] == 1
|
||||
assert vals['b'] == 2
|
||||
|
||||
def test_main():
|
||||
test_support.run_unittest(
|
||||
Tests
|
||||
)
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue