~ chicken-core (chicken-5) 351dd4c3f3f452f107bed9511530d1d26a77c8a8
commit 351dd4c3f3f452f107bed9511530d1d26a77c8a8
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Wed Sep 15 10:14:07 2010 +0200
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Wed Sep 15 10:14:07 2010 +0200
applied srfi-26 error-reporting patch by Peter Bex
diff --git a/chicken-syntax.scm b/chicken-syntax.scm
index f97c22a1..f57ef506 100644
--- a/chicken-syntax.scm
+++ b/chicken-syntax.scm
@@ -986,6 +986,8 @@
(let ((%<> (r '<>))
(%<...> (r '<...>))
(%apply (r 'apply)))
+ (when (null? (cdr form))
+ (syntax-error 'cut "you need to supply at least a procedure" form))
(let loop ([xs (cdr form)] [vars '()] [vals '()] [rest #f])
(if (null? xs)
(let ([rvars (reverse vars)]
@@ -999,7 +1001,12 @@
(cond ((c %<> (car xs))
(let ([v (r (gensym))])
(loop (cdr xs) (cons v vars) (cons v vals) #f) ) )
- ((c %<...> (car xs)) (loop '() vars vals #t))
+ ((c %<...> (car xs))
+ (if (null? (cdr xs))
+ (loop '() vars vals #t)
+ (syntax-error 'cut
+ "tail patterns after <...> are not supported"
+ form)))
(else (loop (cdr xs) vars (cons (car xs) vals) #f)) ) ) ) ) )))
(##sys#extend-macro-environment
@@ -1010,6 +1017,8 @@
(let ((%apply (r 'apply))
(%<> (r '<>))
(%<...> (r '<...>)))
+ (when (null? (cdr form))
+ (syntax-error 'cute "you need to supply at least a procedure" form))
(let loop ([xs (cdr form)] [vars '()] [bs '()] [vals '()] [rest #f])
(if (null? xs)
(let ([rvars (reverse vars)]
@@ -1025,7 +1034,12 @@
(cond ((c %<> (car xs))
(let ([v (r (gensym))])
(loop (cdr xs) (cons v vars) bs (cons v vals) #f) ) )
- ((c %<...> (car xs)) (loop '() vars bs vals #t))
+ ((c %<...> (car xs))
+ (if (null? (cdr xs))
+ (loop '() vars bs vals #t)
+ (syntax-error 'cute
+ "tail patterns after <...> are not supported"
+ form)))
(else
(let ([v (r (gensym))])
(loop (cdr xs)
Trap