~ chicken-core (chicken-5) 4706afb42ea681d39f2ded7a25033776bcc9c039
commit 4706afb42ea681d39f2ded7a25033776bcc9c039 Author: Moritz Heidkamp <moritz@twoticketsplease.de> AuthorDate: Sun Mar 25 14:24:07 2012 +0200 Commit: Christian Kellermann <ckeen@pestilenz.org> CommitDate: Sun Mar 25 14:41:08 2012 +0200 Fix hygiene issues in `case-lambda' This adresses bug #805 Signed-off-by: Christian Kellermann <ckeen@pestilenz.org> diff --git a/chicken-syntax.scm b/chicken-syntax.scm index 08bede25..b634d1f4 100644 --- a/chicken-syntax.scm +++ b/chicken-syntax.scm @@ -764,7 +764,8 @@ `((>= . ,(##sys#primitive-alias '>=)) (car . ,(##sys#primitive-alias 'car)) (cdr . ,(##sys#primitive-alias 'cdr)) - (eq? . ,(##sys#primitive-alias 'eq?))) + (eq? . ,(##sys#primitive-alias 'eq?)) + (length . ,(##sys#primitive-alias 'length))) (##sys#er-transformer (lambda (form r c) (##sys#check-syntax 'case-lambda form '(_ . _)) @@ -785,11 +786,12 @@ (%>= (r '>=)) (%eq? (r 'eq?)) (%car (r 'car)) - (%cdr (r 'cdr))) + (%cdr (r 'cdr)) + (%length (r 'length))) `(##core#lambda ,(append minvars rvar) (##core#let - ((,lvar (length ,rvar))) + ((,lvar (,%length ,rvar))) ,(fold-right (lambda (c body) (##sys#decompose-lambda-list @@ -820,7 +822,7 @@ bindings `(##core#let ,(map list vars1 minvars) ,bindings) ) ) ) ,body) ) ) ) - '(##core#check (##sys#error (##core#immutable '"no matching clause in call to 'case-lambda' form"))) + '(##core#check (##sys#error (##core#immutable (##core#quote "no matching clause in call to 'case-lambda' form")))) (cdr form))))))))Trap