[racket-dev] syntax-local-inferred-name, keyword functions, and syntax properties
Is it possible that that name can leak out in an error message?
Robby
On Mon, Dec 9, 2013 at 3:10 PM, Sam Tobin-Hochstadt <samth at cs.indiana.edu>wrote:
> Currently, this program fails with a somewhat bizarre type error:
>
> #lang typed/racket
>
> (: foo ([#:k Any] -> Integer))
> (define (foo #:k [s #f]) 0)
>
> (let: ([i : Integer (foo #:k #t)]) i)
>
> The reason is that the expansion of keyword applications generates a
> name to use for the function (here `foo`), and it uses
> `syntax-local-infer-name` to get the name to use. Unfortunately, in
> this case, it produces `i`, an identifier which has an extra syntax
> property saying that `i` is an `Integer`. Of course, `foo` isn't an
> integer, it's a function, and so we get a type error.
>
> I don't see why the inferred name is the right choice here -- there's
> no connection between `i` and the name of the function. I can just
> change this to use a fresh name, but I thought I'd ask first.
>
> Sam
> _________________________
> Racket Developers list:
> http://lists.racket-lang.org/dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/dev/archive/attachments/20131209/2be00abd/attachment.html>