~ 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