Opened 14 years ago
Last modified 12 years ago
#618 closed defect
bound variables get stripped incorrectly — at Initial Version
Reported by: | felix winkelmann | Owned by: | sjamaan |
---|---|---|---|
Priority: | major | Milestone: | 4.9.0 |
Component: | expander | Version: | 4.7.x |
Keywords: | syntax strip-syntax | Cc: | |
Estimated difficulty: |
Description
Matthew Flatt reports:
The following program prints a gensym in v4.7.0 and 4aaea216cc9887, but I think it should print the symbol 'x:
(define-syntax c
(syntax-rules ()
[(_)
(let ([x 10])
(let-syntax ([z (syntax-rules ()
[(_) (quote x)])])
(write (z))
(newline)))]))
(c)
I wrote the example because I'm suspicious of "compiler.scm" treating ##core#quote' and
##core#syntax the same. Maybe
##sys#strip-syntax in "expand.scm" is supposed to do different things in quote and syntax mode; the comment "if se is given, retain bound vars" in
##sys#strip-syntax` suggests that it had two modes at some point in the past.