You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-02 16:44:46 +08:00
BIN
test/bytecode_3.6/02_tryfinally_return.pyc
Normal file
BIN
test/bytecode_3.6/02_tryfinally_return.pyc
Normal file
Binary file not shown.
6
test/simple_source/bug36/02_tryfinally_return.py
Normal file
6
test/simple_source/bug36/02_tryfinally_return.py
Normal file
@@ -0,0 +1,6 @@
|
||||
# Python 3.6 sometimes omits END_FINALLY. See issue #182
|
||||
def foo():
|
||||
try:
|
||||
x = 1
|
||||
finally:
|
||||
return
|
@@ -106,6 +106,10 @@ class Python36Parser(Python35Parser):
|
||||
COME_FROM_FINALLY suite_stmts_opt END_FINALLY
|
||||
except_suite_finalize ::= SETUP_FINALLY returns
|
||||
COME_FROM_FINALLY suite_stmts_opt END_FINALLY _jump
|
||||
|
||||
stmt ::= tryfinally_return_stmt
|
||||
tryfinally_return_stmt ::= SETUP_FINALLY suite_stmts_opt POP_BLOCK LOAD_CONST
|
||||
COME_FROM_FINALLY
|
||||
"""
|
||||
|
||||
def customize_grammar_rules(self, tokens, customize):
|
||||
|
@@ -507,6 +507,9 @@ def customize_for_version3(self, version):
|
||||
'try_except36': ( '%|try:\n%+%c%-%c\n\n', 1, 2 ),
|
||||
'except_return': ( '%|except:\n%+%c%-', 3 ),
|
||||
'unpack_list': ( '*%c', (0, 'list') ),
|
||||
'tryfinally_return_stmt':
|
||||
( '%|try:\n%+%c%-%|finally:\n%+%|return%-\n\n', 1 ),
|
||||
|
||||
'call_ex' : (
|
||||
'%c(%p)',
|
||||
(0, 'expr'), (1, 100)),
|
||||
|
Reference in New Issue
Block a user