summaryrefslogtreecommitdiff
path: root/modules/language/python/compile.scm
diff options
context:
space:
mode:
Diffstat (limited to 'modules/language/python/compile.scm')
-rw-r--r--modules/language/python/compile.scm11
1 files changed, 6 insertions, 5 deletions
diff --git a/modules/language/python/compile.scm b/modules/language/python/compile.scm
index 378138c..5dbd3e6 100644
--- a/modules/language/python/compile.scm
+++ b/modules/language/python/compile.scm
@@ -1048,19 +1048,18 @@
(#:try
((_ x (or #f ()) #f . fin)
(if fin
- `(,(T 'try) ,(exp vs x) #:finally (lambda () fin))
- (exp vs x)))
-
+ `(,(T 'try) (lambda () ,(exp vs x)) #:finally (lambda () fin))
+ `(,(T 'try) (lambda () ,(exp vs x)))))
((_ x exc else . fin)
`(,(T 'try) (lambda () ,(exp vs x))
- ,@(let lp ((exc exc) (r (if else (exp vs else) '())))
+ ,@(let lp ((exc exc) (r '()))
(match exc
((((test . #f) code) . exc)
(lp exc (cons `(#:except ,(exp vs test) ,(exp vs code)) r)))
(((#f code) . exc)
- (lp exc (cons `(#:except ,(exp vs code)) r)))
+ (lp exc (cons `(#:except #t ,(exp vs code)) r)))
((((test . as) code) . exc)
(let ((l (gensym "l")))
@@ -1071,6 +1070,8 @@
r))))
(()
(reverse r))))
+
+ ,@(if else `((#:except #t ,(exp vs else))) '())
,@(if fin `(#:finally (lambda () ,(exp vs fin))) '()))))
(#:subexpr