summaryrefslogtreecommitdiff
path: root/Demo/parser/unparse.py
diff options
context:
space:
mode:
authorMark Dickinson <dickinsm@gmail.com>2010-06-30 08:32:11 +0000
committerMark Dickinson <dickinsm@gmail.com>2010-06-30 08:32:11 +0000
commit8d6d760422b56f69e57d009fa26eabcc49935afe (patch)
tree275339a9878be15fb2902fc54774f7226ec8a9d3 /Demo/parser/unparse.py
parent719e4e3ba5a04bec52a04414383781ece8df1ef3 (diff)
downloadcpython-git-8d6d760422b56f69e57d009fa26eabcc49935afe.tar.gz
Collapse else: if: ... into elif:
Diffstat (limited to 'Demo/parser/unparse.py')
-rw-r--r--Demo/parser/unparse.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/Demo/parser/unparse.py b/Demo/parser/unparse.py
index 6e4ef6348e..03dd9e14e1 100644
--- a/Demo/parser/unparse.py
+++ b/Demo/parser/unparse.py
@@ -256,9 +256,18 @@ class Unparser:
self.fill("if ")
self.dispatch(t.test)
self.enter()
- # XXX elif?
self.dispatch(t.body)
self.leave()
+ # collapse nested ifs into equivalent elifs.
+ while (t.orelse and len(t.orelse) == 1 and
+ isinstance(t.orelse[0], ast.If)):
+ t = t.orelse[0]
+ self.fill("elif ")
+ self.dispatch(t.test)
+ self.enter()
+ self.dispatch(t.body)
+ self.leave()
+ # final else
if t.orelse:
self.fill("else")
self.enter()