Danny, Can you be more specific about what "funkiness" means? That is, give us a full program and its output that shows an expected and actual source location that differ. Right now there are a few things you could be referring to.
Carl Eastlund On Tue, Jun 28, 2011 at 4:51 PM, Danny Yoo <d...@cs.wpi.edu> wrote: > I was working with a few friends, and we came across the following > behavior: simple usage of the syntax pattern matching system doesn't > seem to preserve the syntax location of syntax objects under certain > conditions. > > > Here's an example to demonstrate: > > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; > #lang racket > > (define x (datum->syntax #f 'hello (list 'my-source 3 3 18 5))) > (define y (datum->syntax #f 'world (list 'my-source 3 9 24 5))) > > (define a-bigger-syntax #`(module foo racket/base (#%module-begin #,x #,y))) > > (define a-reconstructed-syntax > (syntax-case a-bigger-syntax () > [(module name language (a-modbeg body ...)) > #'(module name language (a-modbeg body ...))])) > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; > > > When we inspect the syntax locations in a-reconstructed-syntax, we see > funkiness associated with the locations of the body elements. > > > We've isolated the issue down to the use of ...; if we do the > following, things look slightly better, but the location of the > 'world' is still messed up. > > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; > (define another-reconstructed-syntax > (syntax-case a-bigger-syntax () > [(module name language (a-modbeg . body)) > #'(module name language (a-modbeg . body))])) > ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; > > > I guess I'm trying to say: I don't understand the behavior of syntax > and syntax-case, with regards to how they preserve the source > locations of the matched sub-elements. _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users