Fix bug in 3.7 chained comparison semantic action

This commit is contained in:
rocky
2020-01-24 06:14:28 -05:00
parent 5c31fdc362
commit 10695d882e
8 changed files with 27 additions and 0 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -14,3 +14,23 @@ def _is_valid_netmask(netmask):
# See in 2.6.9 quopri.py ishex():
assert not '0' <= __file__ <= '9' or 'a' <= __file__ <= 'f' or 'A' <= __file__ <= 'F'
# From 3.7 bug-grammar.py
# Bug in 3.7 was handling the last line where compare_chained -> compare_chained37 and
# therefore compare_chained has one child, not two as it normally does.
def test_comparison():
### comparison: expr (comp_op expr)*
### comp_op: '<'|'>'|'=='|'>='|'<='|'!='|'in'|'not' 'in'|'is'|'is' 'not'
if 1: pass
x = (1 == 1)
if 1 == 1: pass
if 1 != 1: pass
if 1 < 1: pass
if 1 > 1: pass
if 1 <= 1: pass
if 1 >= 1: pass
if 1 in (): pass
if 1 not in (): pass
if 1 < 1 > 1 == 1 >= 1 <= 1 != 1 in 1 not in 1 is 1 is not 1: pass

View File

@@ -276,6 +276,13 @@ def customize_for_version37(self, version):
self.n_call = n_call
def n_compare_chained(node):
if node[0] == "compare_chained37":
self.default(node[0])
else:
self.default(node)
self.n_compare_chained = n_compare_chained
def n_importlist37(node):
if len(node) == 1:
self.default(node)