Matthew: From the hip, I consider this a design bug, namely a violation of the 
you-want-it-when promise. To make this more precise, I think that William’s bug 
exposed a bug on the semantics of make-rename-transformer. What do you think? 

 — Matthias








> On Dec 13, 2016, at 2:23 PM, 'William J. Bowman' via Racket Users 
> <[email protected]> wrote:
> 
> After a debugging session with Leif, the problem is actually a user-error 
> caused by sublte issues with macros-generating-macors:
> 
> In the failing case, I was generating the following
> 
>  (with-syntax ([x (format-id ...)])
>    #`(begin
>        (define x body)
>        (define-syntax id
>          (make-rename-transformer #'x))))
> 
> Notice that #'x is not the same identifier as x, and thus does not have the 
> same syntax-properties.
> 
> Why does this issue only comes up across a file boundary? I suspect this has 
> to do with the behavior of make-rename-transformer. Since #'x was not getting 
> 'not-free-identifier=? correctly, make-rename-transformer was optimizing this 
> away, although I thought I was preventing that.
> 
> --
> William J. Bowman
> 
> PS: Thanks Leif!
> 
> On Mon, Dec 12, 2016 at 12:55:24PM -0500, 'William J. Bowman' via Racket 
> Users wrote:
>> Ah, thanks.
>> 
>> Anyone else have other ideas for problems using syntax-properties, or maybe 
>> make-rename-transformers (with not-free-identifier=?), across modules?
>> 
>> --
>> William J. Bowman
>> 
>> On Sun, Dec 11, 2016 at 07:54:29PM -0500, Alex Knauth wrote:
>>> 
>>>> On Dec 11, 2016, at 7:20 PM, 'William J. Bowman' via Racket Users 
>>>> <[email protected]> wrote:
>>>> 
>>>> Before I file a bug report, I want to make sure something *else* isn't 
>>>> going on.
>>> 
>>> It looks like "something else" is going on; according to 
>>> syntax-property-preserved? it's still marked as preserved in the program 
>>> below.
>>> 
>>> #lang racket
>>> (require racket/syntax)
>>> 
>>> (define stx (syntax-property #'x 'my-prop 5 #t))
>>> (syntax-property-preserved? stx 'my-prop)
>>> ;=> #true
>>> 
>>> ;; transfer properties from stx
>>> (define stx* (format-id #f "y" #:props stx))
>>> (syntax-property-preserved? stx* 'my-prop)
>>> ;=> #true
>>> 
>>> Alex Knauth
>>> 
>>>> In "format-id1.rkt" 
>>>> (https://gist.github.com/wilbowma/247d15e0e0bed6b239584854e79b5015), I 
>>>> define and export some identifiers with preserved syntax-properties. The 
>>>> identifier "id" is created using format-id with #:props to attach a 
>>>> syntax-property. The identifier "id2" is created using generate-temporary 
>>>> and a syntax-property is attached manually. I also use these the 
>>>> syntax-property in the same file. If I run or compile the file, no errors.
>>>> 
>>>> In "format-id2.rkt" 
>>>> (https://gist.github.com/wilbowma/ed071343c8c651f3a78d690a4ab7a392), I use 
>>>> the syntax-properties in exactly the same way. However, if I run or 
>>>> compile the file, I get errors that indicate "id" is missing it's 
>>>> syntax-property.
>>>> 
>>>> --
>>>> William J. Bowman
>>>> Northeastern University
>>>> College of Computer and Information Science
>>> 
>> 
>> -- 
>> 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.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-dev/090C689A-E078-4DAE-9023-33C1F6E1B6DE%40ccs.neu.edu.
For more options, visit https://groups.google.com/d/optout.

Reply via email to