Also, I don't seem to have recorded this anywhere, but I recall that setting
the syntax-property 'not-free-identifier=? helped with this or a related
problem regarding syntax-properties across module boundaries.
  
https://docs.racket-lang.org/reference/stxtrans.html#%28def._%28%28quote._~23~25kernel%29._make-rename-transformer%29%29

On Thu, Nov 30, 2017 at 11:21:12AM +0100, 'William J. Bowman' via Racket Users 
wrote:
> > I can wrap the property around the target identifier, but the syntax 
> > property doesn't stick:
> > 
> > (provide (rename-out [mb #%module-begin]))
> > (define-syntax mb (make-rename-transformer (syntax-property 
> > #'other-module-begin 'foo "bar")))
> > (define-syntax other-module-begin (λ (stx) #'foo))
> We've seen this problem before.
> It has to do with module boundaries and how syntax properties are preserved.
>   https://groups.google.com/d/msg/racket-users/ZWjpz3kFmjo/SUXGVM3YEAAJ
> 
> It's been a while since I wrote this, but the work around I used was 
> exporting the identifier that *expanded into code* that inserted the syntax 
> property.
> This way, ths property doesn't need to be preserve, since it gets inserted 
> every time it is used:
> > The workaround seems to be: if you want to stash an identifier in a 
> > syntax-property, expand into syntax that attaches the syntax-property. That 
> > is, don't do (define x (syntax-property #'id 'prop #'stx)) and then use x 
> > in a syntax object, but generate #`(... (syntax-property #'id 'prop #'stx 
> > ...)) 
> 
> --
> William J. Bowman
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to