You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-04 01:09:52 +08:00
3.4 tryifelse bug
This commit is contained in:
BIN
test/bytecode_3.4/06_tryifelse.pyc
Normal file
BIN
test/bytecode_3.4/06_tryifelse.pyc
Normal file
Binary file not shown.
11
test/simple_source/exception/06_tryifelse.py
Normal file
11
test/simple_source/exception/06_tryifelse.py
Normal file
@@ -0,0 +1,11 @@
|
||||
# Bug from 3.4 in asyncore.py
|
||||
def accept():
|
||||
try:
|
||||
conn = 5
|
||||
except TypeError:
|
||||
return None
|
||||
except OSError as why:
|
||||
if why == 6:
|
||||
raise
|
||||
else:
|
||||
return conn
|
@@ -134,6 +134,16 @@ class PythonParser(GenericASTBuilder):
|
||||
jmp_false ::= JUMP_IF_FALSE
|
||||
jmp_true ::= POP_JUMP_IF_TRUE
|
||||
jmp_true ::= JUMP_IF_TRUE
|
||||
|
||||
# Zero or more COME_FROM
|
||||
# loops can have this
|
||||
_come_from ::= _come_from COME_FROM
|
||||
_come_from ::=
|
||||
|
||||
# Zero or one COME_FROM
|
||||
# And/or expressions have this
|
||||
come_from_opt ::= COME_FROM
|
||||
come_from_opt ::=
|
||||
"""
|
||||
|
||||
def p_dictcomp(self, args):
|
||||
@@ -274,16 +284,6 @@ class PythonParser(GenericASTBuilder):
|
||||
list_iter ::= list_if_not
|
||||
list_iter ::= lc_body
|
||||
|
||||
# Zero or more COME_FROM
|
||||
# loops can have this
|
||||
_come_from ::= _come_from COME_FROM
|
||||
_come_from ::=
|
||||
|
||||
# Zero or one COME_FROM
|
||||
# And/or expressions have this
|
||||
come_from_opt ::= COME_FROM
|
||||
come_from_opt ::=
|
||||
|
||||
list_if ::= expr jmp_false list_iter
|
||||
list_if_not ::= expr jmp_true list_iter
|
||||
|
||||
|
@@ -242,7 +242,7 @@ class Python3Parser(PythonParser):
|
||||
COME_FROM suite_stmts_opt END_FINALLY
|
||||
|
||||
tryelsestmt ::= SETUP_EXCEPT suite_stmts_opt POP_BLOCK
|
||||
try_middle else_suite COME_FROM
|
||||
try_middle else_suite come_froms
|
||||
|
||||
tryelsestmtc ::= SETUP_EXCEPT suite_stmts_opt POP_BLOCK
|
||||
try_middle else_suitec COME_FROM
|
||||
@@ -307,6 +307,12 @@ class Python3Parser(PythonParser):
|
||||
try_middle ::= JUMP_FORWARD COME_FROM except_stmts END_FINALLY NOP COME_FROM
|
||||
"""
|
||||
|
||||
def p_jump3(self, args):
|
||||
"""
|
||||
come_froms ::= come_froms COME_FROM
|
||||
come_froms ::= COME_FROM
|
||||
"""
|
||||
|
||||
def p_stmt3(self, args):
|
||||
"""
|
||||
stmt ::= LOAD_CLOSURE RETURN_VALUE RETURN_LAST
|
||||
|
Reference in New Issue
Block a user