Output try-except-finally statements where appropriate.

This commit is contained in:
Mark Dickinson 2010-06-30 08:46:53 +00:00
parent 8d6d760422
commit 81ad8ccdfb
2 changed files with 23 additions and 5 deletions

View File

@ -80,7 +80,18 @@ elif cond2:
suite2
"""
try_except_finally = """\
try:
suite1
except ex1:
suite2
except ex2:
suite3
else:
suite4
finally:
suite5
"""
class ASTTestCase(unittest.TestCase):
def assertASTEqual(self, ast1, ast2):
@ -181,6 +192,9 @@ class UnparseTestCase(ASTTestCase):
self.check_roundtrip(elif1)
self.check_roundtrip(elif2)
def test_try_except_finally(self):
self.check_roundtrip(try_except_finally)
class DirectoryTestCase(ASTTestCase):
"""Test roundtrip behaviour on all files in Lib and Lib/test."""

View File

@ -169,10 +169,14 @@ class Unparser:
self.leave()
def _TryFinally(self, t):
self.fill("try")
self.enter()
self.dispatch(t.body)
self.leave()
if len(t.body) == 1 and isinstance(t.body[0], ast.TryExcept):
# try-except-finally
self.dispatch(t.body)
else:
self.fill("try")
self.enter()
self.dispatch(t.body)
self.leave()
self.fill("finally")
self.enter()