Re: Properly annotating disappeared uses/bindings for substituted identifiers

Dupéron Georges <[email protected]>
Newsgroups gmane.comp.lang.racket.user,gmane.lisp.scheme.plt
Message-ID <[email protected]>
My experience with check-syntax is that several conditions have to be met:

* The identifiers must have the correct source locations (actually, you can make arrows point to weird places by faking the source locations)
* The properties must be present high enough in the AST. For example, if you put a 'sub-range-binders property on the "name" in "(define name value)", it won't work, instead the property should be present on the "(define name value)" syntax object itself, not on one of its subparts
* The planets must align.

At a first glance, I think in your case the problem is with the second condition, so you should "lift" all those properties out onto the topmost syntax object (they probably can be present at a lower point, but why bother?).

There's a with-disappeared-uses + record-disappeared-uses utility [1], and I wrote my own with-sub-range-binders + record-sub-range-binders! [2]. I also threw in a with-arrows form which combine both with-xxx forms.

Unfortunately, there is nothing for disappeared-bindings (yet). You can copy-paste and adjust my sub-range-binders code [3] and adjust it (permission granted to use whatever licence your project uses).

Georges

[1] http://docs.racket-lang.org/reference/syntax-util.html#%28form._%28%28lib._racket%2Fsyntax..rkt%29._with-disappeared-uses%29%29

[2] http://docs.racket-lang.org/phc-toolkit/phc-toolkit-format-id-record.html#%28form._%28%28lib._phc-toolkit%2Funtyped-only%2Fformat-id-record..rkt%29._with-sub-range-binders%29%29

[3] https://github.com/jsmaniac/phc-toolkit/blob/master/untyped-only/format-id-record.rkt

-- 
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 racket-users+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/[email protected]
For more options, visit https://groups.google.com/d/optout.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.