[racket-dev] [plt] Push #26439: master branch updated

From: Asumu Takikawa (asumu at ccs.neu.edu)
Date: Sat Mar 9 17:40:24 EST 2013

On 2013-03-09 10:57:28 -0500, sstrickl at racket-lang.org wrote:
> 7d1ad25 Stevie Strickland <sstrickl at racket-lang.org> 2013-03-09 10:32
> :
> | Revert hack for top-level, institute real fix.
> |
> | As a side-effect of this fix, we don't need the thunking behavior for
> | external identifiers anymore.  Even better!

Very nice!

One problem though. I think this has broken some uses of
`define/contract` in third-party code I have installed. Here's a
boiled-down snippet that shows the issue:

  #lang racket

  ;; breaks
  (define/contract (f x #:y [y 3])
    (->* (integer?) (#:y integer?) integer?)
    x)

  ;; contract-out ok with same contract
  #;
  (define (f x #:y [y 3]) x)

  #;
  (provide
    (contract-out
      [f (->* (integer?) (#:y integer?) integer?)]))

The error I see is:
  dc-bug.rkt:5:19: #%datum: keyword used as an expression
    in: #:y
    context...:
     standard-module-name-resolver

Cheers,
Asumu

Posted on the dev mailing list.