Ticket #618 (closed defect: fixed)
bound variables get stripped incorrectly
|Reported by:||felix||Owned by:||felix|
Description (last modified by felix) (diff)
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.