~ chicken-core (chicken-5) 6a389c5c6fee611f2e4b54b1cee6873e52c38e7a
commit 6a389c5c6fee611f2e4b54b1cee6873e52c38e7a Author: Evan Hanson <evhan@foldling.org> AuthorDate: Wed Nov 27 16:11:20 2013 +1300 Commit: Peter Bex <peter.bex@xs4all.nl> CommitDate: Wed Nov 27 16:49:50 2013 +0100 Expand cond clauses with constant tests and no expressions to the test value Signed-off-by: Peter Bex <peter.bex@xs4all.nl> diff --git a/expand.scm b/expand.scm index a80eeff3..d1a16a04 100644 --- a/expand.scm +++ b/expand.scm @@ -1161,7 +1161,9 @@ (and (pair? (car clause)) (c (r 'quote) (caar clause)))) (expand rclauses (strip-syntax (car clause))) - `(##core#begin ,@(cdr clause))) + (if (null? (cdr clause)) + (car clause) + `(##core#begin ,@(cdr clause)))) ((null? (cdr clause)) `(,%or ,(car clause) ,(expand rclauses #f))) ((and (fx= (length clause) 3) diff --git a/tests/r7rs-tests.scm b/tests/r7rs-tests.scm index 670e9593..942b4f33 100644 --- a/tests/r7rs-tests.scm +++ b/tests/r7rs-tests.scm @@ -59,6 +59,10 @@ (SECTION 4 2 1) +;; cond clause with only <test> +(test 1 (lambda () (cond (1)))) +(test 'foo (lambda () (cond ('foo)))) + ;; case with => clause (test "a" (lambda () (case 'a ((a) => symbol->string)))) (test "a" (lambda () (case 'a (else => symbol->string))))Trap