You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-02 08:34:46 +08:00
Fix bug in 3.7 chained comparison semantic action
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
test/bytecode_3.7_run/01_triple_compare.pyc
Normal file
BIN
test/bytecode_3.7_run/01_triple_compare.pyc
Normal file
Binary file not shown.
BIN
test/bytecode_3.8_run/01_triple_compare.pyc
Normal file
BIN
test/bytecode_3.8_run/01_triple_compare.pyc
Normal file
Binary file not shown.
@@ -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
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user