~ chicken-core (chicken-5) caa54d22321cff3be2657c07a1c66d62ea9f3370
commit caa54d22321cff3be2657c07a1c66d62ea9f3370 Author: Peter Bex <peter.bex@xs4all.nl> AuthorDate: Mon Mar 14 20:50:57 2011 +0100 Commit: Peter Bex <peter.bex@xs4all.nl> CommitDate: Mon Mar 14 20:50:57 2011 +0100 Implement proper fix for #518 diff --git a/compiler.scm b/compiler.scm index 9103a53f..0ba5b4a0 100644 --- a/compiler.scm +++ b/compiler.scm @@ -1276,7 +1276,7 @@ (define (globalize sym) (if (symbol? sym) (let loop ((se se)) ; ignores syntax bindings - (cond ((null? se) (##sys#alias-global-hook sym #f #f)) ;XXX could hint at decl (3rd arg) + (cond ((null? se) (strip (##sys#alias-global-hook sym #f #f))) ;XXX could hint at decl (3rd arg) ((and (eq? sym (caar se)) (symbol? (cdar se))) (cdar se)) (else (loop (cdr se))))) sym)) diff --git a/expand.scm b/expand.scm index 27d3f0dd..b8c50262 100644 --- a/expand.scm +++ b/expand.scm @@ -269,12 +269,10 @@ (define ##sys#enable-runtime-macros #f) (define (##sys#module-rename sym prefix) - (let ((qualified-symbol (##sys#string->symbol (string-append - (##sys#slot prefix 1) - "#" - (##sys#slot sym 1) ) ))) - (putp qualified-symbol '##core#real-name sym) - qualified-symbol) ) + (##sys#string->symbol (string-append + (##sys#slot prefix 1) + "#" + (##sys#slot sym 1) ) ) ) (define (##sys#alias-global-hook sym assign where) (define (mrename sym) @@ -785,9 +783,18 @@ ((lookup sym se) => (lambda (a) (cond ((symbol? a) - (dd `(RENAME/LOOKUP: ,sym --> ,a)) - (set! renv (cons (cons sym a) renv)) - a) + ;; Add an extra level of indirection for already aliased + ;; symbols. This prevents aliased symbols from popping up + ;; in syntax-stripped output. + (cond ((or (getp a '##core#aliased) + (getp a '##core#primitive)) + (let ((a2 (macro-alias sym se))) + (dd `(RENAME/LOOKUP/ALIASED: ,sym --> ,a ==> ,a2)) + (set! renv (cons (cons sym a2) renv)) + a2)) + (else (dd `(RENAME/LOOKUP: ,sym --> ,a)) + (set! renv (cons (cons sym a) renv)) + a))) (else (let ((a2 (macro-alias sym se))) (dd `(RENAME/LOOKUP/MACRO: ,sym --> ,a2))Trap