diff options
author | Carl Friedrich Bolz-Tereick <cfbolz@gmx.de> | 2019-07-08 21:17:56 (GMT) |
---|---|---|
committer | Ivan Levkivskyi <levkivskyi@gmail.com> | 2019-07-08 21:17:56 (GMT) |
commit | 110a47c4f42cf4db88edc1876899fff8f05190fb (patch) | |
tree | b649c1aa3583487925f65e2c4bcec5d71bb54f24 /Lib/test/test_ast.py | |
parent | 66b4150f6f001640521ae6c9571cd4325cd67394 (diff) | |
download | cpython-110a47c4f42cf4db88edc1876899fff8f05190fb.zip cpython-110a47c4f42cf4db88edc1876899fff8f05190fb.tar.gz cpython-110a47c4f42cf4db88edc1876899fff8f05190fb.tar.bz2 |
bpo-18374: fix wrong col_offset of some ast.BinOp instances (GH-14607)
Nested BinOp instances (e.g. a+b+c) had a wrong col_offset for the
second BinOp (e.g. 2 instead of 0 in the example). Fix it by using the
correct st node to copy the line and col_offset from in ast.c.
Diffstat (limited to 'Lib/test/test_ast.py')
-rw-r--r-- | Lib/test/test_ast.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/Lib/test/test_ast.py b/Lib/test/test_ast.py index e251e25..1e07c57 100644 --- a/Lib/test/test_ast.py +++ b/Lib/test/test_ast.py @@ -576,6 +576,36 @@ class AST_Tests(unittest.TestCase): with support.swap_attr(unicodedata, 'normalize', bad_normalize): self.assertRaises(TypeError, ast.parse, '\u03D5') + def test_issue18374_binop_col_offset(self): + tree = ast.parse('4+5+6+7') + parent_binop = tree.body[0].value + child_binop = parent_binop.left + grandchild_binop = child_binop.left + self.assertEqual(parent_binop.col_offset, 0) + self.assertEqual(parent_binop.end_col_offset, 7) + self.assertEqual(child_binop.col_offset, 0) + self.assertEqual(child_binop.end_col_offset, 5) + self.assertEqual(grandchild_binop.col_offset, 0) + self.assertEqual(grandchild_binop.end_col_offset, 3) + + tree = ast.parse('4+5-\\\n 6-7') + parent_binop = tree.body[0].value + child_binop = parent_binop.left + grandchild_binop = child_binop.left + self.assertEqual(parent_binop.col_offset, 0) + self.assertEqual(parent_binop.lineno, 1) + self.assertEqual(parent_binop.end_col_offset, 4) + self.assertEqual(parent_binop.end_lineno, 2) + + self.assertEqual(child_binop.col_offset, 0) + self.assertEqual(parent_binop.lineno, 1) + self.assertEqual(child_binop.end_col_offset, 2) + self.assertEqual(parent_binop.end_lineno, 2) + + self.assertEqual(grandchild_binop.col_offset, 0) + self.assertEqual(parent_binop.lineno, 1) + self.assertEqual(grandchild_binop.end_col_offset, 3) + self.assertEqual(parent_binop.end_lineno, 2) class ASTHelpers_Test(unittest.TestCase): maxDiff = None |