Opened 13 years ago

Last modified 12 years ago

#618 closed defect

bound variables get stripped incorrectly — at Version 1

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 (last modified by felix winkelmann)

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.

Change History (1)

comment:1 Changed 13 years ago by felix winkelmann

Description: modified (diff)
Note: See TracTickets for help on using tickets.