~ chicken-core (chicken-5) 5ca3094f92b6d0c1e103df0bc0cb7e5ebe6f5e20
commit 5ca3094f92b6d0c1e103df0bc0cb7e5ebe6f5e20 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Fri Feb 5 12:14:07 2010 +0100 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Fri Feb 5 12:14:07 2010 +0100 strip extensions-specifiers and -ids in require-extension diff --git a/compiler.scm b/compiler.scm index 1868ba6c..12af8c50 100644 --- a/compiler.scm +++ b/compiler.scm @@ -594,11 +594,13 @@ ((##core#require-extension) (let ((imp? (caddr x))) (walk - (let loop ([ids (cadr x)]) + (let loop ([ids (##sys#strip-syntax (cadr x))]) (if (null? ids) '(##core#undefined) (let ([id (car ids)]) - (let-values ([(exp f) (##sys#do-the-right-thing id #t imp?)]) + (let-values ([(exp f) + (##sys#do-the-right-thing + id #t imp?)]) (unless (or f (and (symbol? id) (or (feature? id) diff --git a/eval.scm b/eval.scm index ead28611..d114149b 100644 --- a/eval.scm +++ b/eval.scm @@ -706,11 +706,12 @@ [(##core#require-extension) (let ((imp? (caddr x))) (compile - (let loop ([ids (cadr x)]) + (let loop ([ids (##sys#strip-syntax (cadr x))]) (if (null? ids) '(##core#undefined) - (let-values ([(exp _) - (##sys#do-the-right-thing (car ids) #f imp?)]) + (let-values ([(exp _) + (##sys#do-the-right-thing + (car ids) #f imp?)]) `(##core#begin ,exp ,(loop (cdr ids))) ) ) ) e #f tf cntr se) ) ] @@ -1280,17 +1281,20 @@ id #f) #f))))))) (if (and (pair? id) (symbol? (car id))) - (let ((a (assq (##sys#slot id 0) ##sys#extension-specifiers))) + (let ((a (assq (##sys#slot id 0) + ##sys#extension-specifiers))) (if a (let ((a ((##sys#slot a 1) id))) - (cond ((string? a) (values `(load ,a) #f)) + (cond ((string? a) (values `(load ,a) #f)) ;XXX hygiene ((vector? a) (let loop ((specs (vector->list a)) (exps '()) (f #f) ) (if (null? specs) (values `(##core#begin ,@(reverse exps)) f) - (let-values (((exp fi) (##sys#do-the-right-thing (car specs) comp? imp?))) + (let-values (((exp fi) + (##sys#do-the-right-thing + (car specs) comp? imp?))) (loop (cdr specs) (cons exp exps) (or fi f) ) ) ) ) ) @@ -1304,7 +1308,8 @@ (define (set-extension-specifier! name proc) (##sys#check-symbol name 'set-extension-specifier!) - (let ([a (assq name ##sys#extension-specifiers)]) + (let* ((name (##sys#strip-syntax name)) + (a (assq name ##sys#extension-specifiers))) (if a (let ([old (##sys#slot a 1)]) (##sys#setslot a 1 (lambda (spec) (proc spec old))) )Trap