Ticket #618 (closed defect: fixed)

Opened 2 years ago

Last modified 8 months ago

bound variables get stripped incorrectly

Reported by: felix Owned by: felix
Priority: major Milestone: 4.9.0
Component: expander Version: 4.7.x
Keywords: syntax strip-syntax Cc:

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.

Change History

Changed 2 years ago by felix

  • description modified (diff)

Changed 2 years ago by sjamaan

  • owner changed from sjamaan to felix
  • status changed from new to assigned

Please try 41cff6f in the resurrected expander-simplifications branch.

Changed 2 years ago by sjamaan

also 315fc36

Changed 2 years ago by sjamaan

  • status changed from assigned to closed
  • resolution set to fixed

Was merged, closing

Changed 8 months ago by felix

  • milestone changed from 4.8.0 to 4.9.0

Milestone 4.8.0 deleted

Note: See TracTickets for help on using tickets.