You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-04 01:09:52 +08:00
Fix a 3.7+ chained compare bug...
others remain though.
This commit is contained in:
Binary file not shown.
@@ -23,10 +23,12 @@ def columnize(l):
|
|||||||
if not isinstance(l[i], str)]
|
if not isinstance(l[i], str)]
|
||||||
assert [0, 2] == columnize([1, 'a', 2])
|
assert [0, 2] == columnize([1, 'a', 2])
|
||||||
|
|
||||||
# From 3.7 test_generators
|
# FIXME:
|
||||||
# Bug was in handling the way list_if is optimized in 3.7+;
|
if False:
|
||||||
# We need list_if37 and compare_chained37.
|
# From 3.7 test_generators
|
||||||
def init_board(c):
|
# Bug was in handling the way list_if is optimized in 3.7+;
|
||||||
return [io for io in c if 3 <= io < 5]
|
# We need list_if37 and compare_chained37.
|
||||||
|
def init_board(c):
|
||||||
|
return [io for io in c if 3 <= io < 5]
|
||||||
|
|
||||||
assert init_board(list(range(6))) == [3, 4]
|
assert init_board(list(range(6))) == [3, 4]
|
||||||
|
@@ -579,19 +579,21 @@ class Python37Parser(Python37BaseParser):
|
|||||||
testfalse ::= compare_chained37_false
|
testfalse ::= compare_chained37_false
|
||||||
|
|
||||||
compare_chained ::= compare_chained37
|
compare_chained ::= compare_chained37
|
||||||
|
compare_chained ::= compare_chained37_false
|
||||||
|
|
||||||
compare_chained37 ::= expr compare_chained1a_37
|
compare_chained37 ::= expr compare_chained1a_37
|
||||||
compare_chained37 ::= expr compare_chained1b_37
|
compare_chained37 ::= expr compare_chained1b_37
|
||||||
compare_chained37 ::= expr compare_chained1c_37
|
compare_chained37 ::= expr compare_chained1c_37
|
||||||
|
|
||||||
compare_chained37_false ::= expr compare_chained1_false_37
|
compare_chained37_false ::= expr compare_chained1_false_37
|
||||||
|
compare_chained37_false ::= expr compare_chained1b_false_37
|
||||||
compare_chained37_false ::= expr compare_chained2_false_37
|
compare_chained37_false ::= expr compare_chained2_false_37
|
||||||
|
|
||||||
compare_chained1a_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE
|
compare_chained1a_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE
|
||||||
compare_chained1a_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE
|
compare_chained1a_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE
|
||||||
compare_chained2a_37 COME_FROM POP_TOP COME_FROM
|
compare_chained2a_37 COME_FROM POP_TOP COME_FROM
|
||||||
compare_chained1b_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE
|
compare_chained1b_false_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE
|
||||||
compare_chained2b_37 POP_TOP _jump COME_FROM
|
compare_chained2b_false_37 POP_TOP _jump COME_FROM
|
||||||
|
|
||||||
compare_chained1c_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE
|
compare_chained1c_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE
|
||||||
compare_chained2a_37 POP_TOP
|
compare_chained2a_37 POP_TOP
|
||||||
@@ -599,7 +601,7 @@ class Python37Parser(Python37BaseParser):
|
|||||||
compare_chained1_false_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE
|
compare_chained1_false_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE
|
||||||
compare_chained2c_37 POP_TOP JUMP_FORWARD COME_FROM
|
compare_chained2c_37 POP_TOP JUMP_FORWARD COME_FROM
|
||||||
compare_chained1_false_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE
|
compare_chained1_false_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE
|
||||||
compare_chained2b_37 POP_TOP _jump COME_FROM
|
compare_chained2b_false_37 POP_TOP _jump COME_FROM
|
||||||
|
|
||||||
compare_chained2_false_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE
|
compare_chained2_false_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP POP_JUMP_IF_FALSE
|
||||||
compare_chained2a_false_37 POP_TOP JUMP_BACK COME_FROM
|
compare_chained2a_false_37 POP_TOP JUMP_BACK COME_FROM
|
||||||
@@ -608,8 +610,8 @@ class Python37Parser(Python37BaseParser):
|
|||||||
compare_chained2a_37 ::= expr COMPARE_OP come_from_opt POP_JUMP_IF_TRUE JUMP_BACK
|
compare_chained2a_37 ::= expr COMPARE_OP come_from_opt POP_JUMP_IF_TRUE JUMP_BACK
|
||||||
compare_chained2a_false_37 ::= expr COMPARE_OP come_from_opt POP_JUMP_IF_FALSE jf_cfs
|
compare_chained2a_false_37 ::= expr COMPARE_OP come_from_opt POP_JUMP_IF_FALSE jf_cfs
|
||||||
|
|
||||||
compare_chained2b_37 ::= expr COMPARE_OP come_from_opt POP_JUMP_IF_FALSE JUMP_FORWARD COME_FROM
|
compare_chained2b_false_37 ::= expr COMPARE_OP come_from_opt POP_JUMP_IF_FALSE JUMP_FORWARD COME_FROM
|
||||||
compare_chained2b_37 ::= expr COMPARE_OP come_from_opt POP_JUMP_IF_FALSE JUMP_FORWARD
|
compare_chained2b_false_37 ::= expr COMPARE_OP come_from_opt POP_JUMP_IF_FALSE JUMP_FORWARD
|
||||||
|
|
||||||
compare_chained2c_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP come_from_opt POP_JUMP_IF_FALSE
|
compare_chained2c_37 ::= expr DUP_TOP ROT_THREE COMPARE_OP come_from_opt POP_JUMP_IF_FALSE
|
||||||
compare_chained2a_false_37 ELSE
|
compare_chained2a_false_37 ELSE
|
||||||
@@ -626,6 +628,7 @@ class Python37Parser(Python37BaseParser):
|
|||||||
list_if ::= expr jmp_false37 list_iter
|
list_if ::= expr jmp_false37 list_iter
|
||||||
list_iter ::= list_if37
|
list_iter ::= list_if37
|
||||||
list_if37 ::= compare_chained37 list_iter
|
list_if37 ::= compare_chained37 list_iter
|
||||||
|
list_if37 ::= compare_chained37_false list_iter
|
||||||
|
|
||||||
_ifstmts_jump ::= c_stmts_opt come_froms
|
_ifstmts_jump ::= c_stmts_opt come_froms
|
||||||
|
|
||||||
|
@@ -98,7 +98,7 @@ def customize_for_version37(self, version):
|
|||||||
(0, 19),
|
(0, 19),
|
||||||
(-5, 19),
|
(-5, 19),
|
||||||
),
|
),
|
||||||
"compare_chained1b_37": (
|
"compare_chained1b_false_37": (
|
||||||
' %[3]{pattr.replace("-", " ")} %p %p',
|
' %[3]{pattr.replace("-", " ")} %p %p',
|
||||||
(0, 19),
|
(0, 19),
|
||||||
(-4, 19),
|
(-4, 19),
|
||||||
@@ -109,7 +109,7 @@ def customize_for_version37(self, version):
|
|||||||
(-2, 19),
|
(-2, 19),
|
||||||
),
|
),
|
||||||
"compare_chained2a_37": ('%[1]{pattr.replace("-", " ")} %p', (0, 19)),
|
"compare_chained2a_37": ('%[1]{pattr.replace("-", " ")} %p', (0, 19)),
|
||||||
"compare_chained2b_37": ('%[1]{pattr.replace("-", " ")} %p', (0, 19)),
|
"compare_chained2b_false_37": ('%[1]{pattr.replace("-", " ")} %p', (0, 19)),
|
||||||
"compare_chained2a_false_37": ('%[1]{pattr.replace("-", " ")} %p', (0, 19)),
|
"compare_chained2a_false_37": ('%[1]{pattr.replace("-", " ")} %p', (0, 19)),
|
||||||
"compare_chained2c_37": (
|
"compare_chained2c_37": (
|
||||||
'%[3]{pattr.replace("-", " ")} %p %p',
|
'%[3]{pattr.replace("-", " ")} %p %p',
|
||||||
|
Reference in New Issue
Block a user