You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-04 09:22:40 +08:00
Fix two Python 3.0 bugs...
* don't add _[0] list comprehension variables * add POP_TOP in _ifstmts_jmp; c_stmst for now isn't optional
This commit is contained in:
BIN
test/bytecode_3.0/05_abc_test.pyc
Normal file
BIN
test/bytecode_3.0/05_abc_test.pyc
Normal file
Binary file not shown.
@@ -29,7 +29,8 @@ class Python30Parser(Python31Parser):
|
|||||||
# Specifically POP_TOP is more prevelant since there is no POP_JUMP_IF_...
|
# Specifically POP_TOP is more prevelant since there is no POP_JUMP_IF_...
|
||||||
# instructions
|
# instructions
|
||||||
|
|
||||||
_ifstmts_jump ::= c_stmts_opt JUMP_FORWARD _come_froms POP_TOP COME_FROM
|
_ifstmts_jump ::= c_stmts JUMP_FORWARD _come_froms POP_TOP COME_FROM
|
||||||
|
_ifstmts_jump ::= c_stmts POP_TOP
|
||||||
|
|
||||||
# Used to keep index order the same in semantic actions
|
# Used to keep index order the same in semantic actions
|
||||||
jb_pop_top ::= JUMP_BACK POP_TOP
|
jb_pop_top ::= JUMP_BACK POP_TOP
|
||||||
|
@@ -156,6 +156,22 @@ def customize_for_version3(self, version):
|
|||||||
self.prune()
|
self.prune()
|
||||||
self.n_classdef3 = n_classdef3
|
self.n_classdef3 = n_classdef3
|
||||||
|
|
||||||
|
if version == 3.0:
|
||||||
|
# In Python 3.0 there is code to move from _[dd] into
|
||||||
|
# the iteration variable. These rules we can ignore
|
||||||
|
# since we pick up the iteration variable some other way and
|
||||||
|
# we definitely don't include in the source _[dd].
|
||||||
|
def n_comp_iter(node):
|
||||||
|
if node[0] == 'expr':
|
||||||
|
n = node[0][0]
|
||||||
|
if (n == 'LOAD_FAST' and
|
||||||
|
n.pattr[0:2] == '_['):
|
||||||
|
self.prune()
|
||||||
|
pass
|
||||||
|
pass
|
||||||
|
# Not this special case, procede as normal...
|
||||||
|
self.default(node)
|
||||||
|
self.n_comp_iter = n_comp_iter
|
||||||
|
|
||||||
if version >= 3.3:
|
if version >= 3.3:
|
||||||
def n_yield_from(node):
|
def n_yield_from(node):
|
||||||
|
Reference in New Issue
Block a user