[racket] `unbound identifier' during interactive session with racket/gui

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Wed Jul 31 19:43:09 EDT 2013

I've pushed a repair to the git repo.

The problem is in the vicinity of `syntax-local-lift-context'. We could
blame the documentation, which didn't say that the result is always
`#f' for a top-level context in any namespace. Some code using
`syntax-local-lift-context' took the special result `#f' into account,
but not the part of the contract system triggered in the example below.
I'm inclined to say that the documentation describes the function that
we want, and the result shouldn't be `#f' for distinct contexts, so
I've changed the function.

At Wed, 31 Jul 2013 18:27:33 -0300, Diogo F. S. Ramos wrote:
> I'm not sure how to describe this, so I'll show the steps to reproduce
> it:
> 
> $ cat foo.rkt
> #lang racket/gui
> 
> (define frame (new frame% (label "hello, world")))
> 
> (define canvas (new canvas% (parent frame)))
> 
> (send frame show #t)
> $ cat bar.rkt
> #lang racket/gui
> 
> (define frame (new frame% (label "bye, world")))
> 
> (define canvas (new canvas% (parent frame)))
> 
> (send frame show #t)
> $ racket
> Welcome to Racket v5.3.5.
> > (enter! "foo.rkt")
> > (new canvas% (parent frame))
> (object:canvas% ...)
> > (enter! "bar.rkt")
> > (new canvas% (parent frame))
> lifted.0: unbound identifier;
>  also, no #%top syntax transformer is bound
>   in: lifted.0
>   context...:
>    /usr/lib/racket/collects/racket/private/misc.rkt:87:7
> > 
> 
> I can't create a new canvas when inside `bar.rkt' after creating one
> when inside `foo.rkt'.
> ____________________
>   Racket Users list:
>   http://lists.racket-lang.org/users

Posted on the users mailing list.