diff --git a/scheme/rnrs/exceptions.sls b/scheme/rnrs/exceptions.sls index cfafed94..d5d0c3d8 100644 --- a/scheme/rnrs/exceptions.sls +++ b/scheme/rnrs/exceptions.sls @@ -35,10 +35,10 @@ (define-syntax guard (syntax-rules () - ([_ (var clause1 clausen ...) body] + ([_ (var clause1 clausen ...) body1 body2 ...] (call/cc (lambda (continue) (with-exception-handler (lambda (var) (guard-inner continue var clause1 clausen ...)) - (lambda () body)))))))) + (lambda () body1 body2 ...)))))))) diff --git a/tests/r6rs.scm b/tests/r6rs.scm index a44be5af..79478c04 100644 --- a/tests/r6rs.scm +++ b/tests/r6rs.scm @@ -504,3 +504,8 @@ #,(free-identifier=? #'id1 #'id2) #,(bound-identifier=? #'id1 #'id2))]))) (assert-equal? (a fred) '(#t #f))) + +;; Conditions +(guard (e (#t '())) + (+ 1 2) + (+ 3 4))