diff options
Diffstat (limited to 'modules/language/python/compile.scm')
-rw-r--r-- | modules/language/python/compile.scm | 11 |
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 |