Commit 81ad8ccd authored by Mark Dickinson's avatar Mark Dickinson

Output try-except-finally statements where appropriate.

parent 8d6d7604
...@@ -80,7 +80,18 @@ elif cond2: ...@@ -80,7 +80,18 @@ elif cond2:
suite2 suite2
""" """
try_except_finally = """\
try:
suite1
except ex1:
suite2
except ex2:
suite3
else:
suite4
finally:
suite5
"""
class ASTTestCase(unittest.TestCase): class ASTTestCase(unittest.TestCase):
def assertASTEqual(self, ast1, ast2): def assertASTEqual(self, ast1, ast2):
...@@ -181,6 +192,9 @@ class UnparseTestCase(ASTTestCase): ...@@ -181,6 +192,9 @@ class UnparseTestCase(ASTTestCase):
self.check_roundtrip(elif1) self.check_roundtrip(elif1)
self.check_roundtrip(elif2) self.check_roundtrip(elif2)
def test_try_except_finally(self):
self.check_roundtrip(try_except_finally)
class DirectoryTestCase(ASTTestCase): class DirectoryTestCase(ASTTestCase):
"""Test roundtrip behaviour on all files in Lib and Lib/test.""" """Test roundtrip behaviour on all files in Lib and Lib/test."""
......
...@@ -169,6 +169,10 @@ class Unparser: ...@@ -169,6 +169,10 @@ class Unparser:
self.leave() self.leave()
def _TryFinally(self, t): def _TryFinally(self, t):
if len(t.body) == 1 and isinstance(t.body[0], ast.TryExcept):
# try-except-finally
self.dispatch(t.body)
else:
self.fill("try") self.fill("try")
self.enter() self.enter()
self.dispatch(t.body) self.dispatch(t.body)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment