3.6 omit END_FINALLY sometimes

Fixes #182
This commit is contained in:
rocky
2018-07-05 21:47:36 -04:00
parent 5c88f804c1
commit 1b71cfef07
4 changed files with 13 additions and 0 deletions

Binary file not shown.

View File

@@ -0,0 +1,6 @@
# Python 3.6 sometimes omits END_FINALLY. See issue #182
def foo():
try:
x = 1
finally:
return

View File

@@ -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):

View File

@@ -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)),