From 81ad8ccdfbabbfbda2ad304e8dbbfec84625f485 Mon Sep 17 00:00:00 2001 From: Mark Dickinson Date: Wed, 30 Jun 2010 08:46:53 +0000 Subject: Output try-except-finally statements where appropriate. --- Demo/parser/test_unparse.py | 16 +++++++++++++++- Demo/parser/unparse.py | 12 ++++++++---- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/Demo/parser/test_unparse.py b/Demo/parser/test_unparse.py index 7d85f16..3a795e9 100644 --- a/Demo/parser/test_unparse.py +++ b/Demo/parser/test_unparse.py @@ -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.""" diff --git a/Demo/parser/unparse.py b/Demo/parser/unparse.py index 03dd9e1..fa8f434 100644 --- a/Demo/parser/unparse.py +++ b/Demo/parser/unparse.py @@ -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() -- cgit v0.12