#816 closed defect (fixed)
hygiene problem using `map' with prefixed `scheme' import
Reported by: | Moritz Heidkamp | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | 4.9.0 |
Component: | compiler | Version: | 4.7.x |
Keywords: | Cc: | ||
Estimated difficulty: |
Description
The compiler seems to rewrite calls to map
in an unhygienic fashion. This surfaces when importing the scheme
module with a prefix into a fresh module. The interpreter handles it fine though.
Example:
(module foo () ;; the `quote' import is necessary due to another hygiene problem ;; I'm investigating right now (import (only scheme quote)) (import (prefix scheme ~)) (~map (~lambda (y) y) x) )
This leads to the following warnings by csc
(tested with 4.7.0.3-st and current master):
Warning: reference to possibly unbound identifier `set!' Warning: suggesting one of: Warning: (import r5rs-null) Warning: (import r4rs-null) Warning: (import scheme) Warning: (import r4rs) Warning: reference to possibly unbound identifier `cons' Warning: suggesting one of: Warning: (import scheme) Warning: (import r4rs) Warning: reference to possibly unbound identifier `g14' Warning: reference to possibly unbound identifier `and' Warning: suggesting one of: Warning: (import r5rs-null) Warning: (import r4rs-null) Warning: (import scheme) Warning: (import r4rs) Warning: reference to possibly unbound identifier `if' Warning: suggesting one of: Warning: (import r5rs-null) Warning: (import r4rs-null) Warning: (import scheme) Warning: (import r4rs) Warning: reference to possibly unbound identifier `map-loop' Warning: reference to possibly unbound identifier `x' Warning: reference to possibly unbound identifier `g25' Warning: reference to possibly unbound identifier `g19' Warning: reference to possibly unbound identifier `g18' Warning: reference to possibly unbound identifier `g17' Warning: reference to possibly unbound identifier `let' Warning: suggesting one of: Warning: (import r5rs-null) Warning: (import r4rs-null) Warning: (import scheme) Warning: (import r4rs) Error: module unresolved: foo
Attachments (1)
Change History (5)
comment:1 Changed 13 years ago by
Changed 13 years ago by
Attachment: | 0001-Always-add-default-core-macros-to-syntax-env-in-inte.patch added |
---|
Always add core macros to syntax env of internal compiler syntax
comment:3 Changed 13 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
Note: See
TracTickets for help on using
tickets.
The culprit here is the macro defined in
compiler-syntax.scm
, line 91. The problem can be avoided for now by passing-no-compiler-syntax
to thecsc
call.