[racket-dev] TR & check-equal?

From: Robby Findler (robby at eecs.northwestern.edu)
Date: Wed May 29 07:46:35 EDT 2013

I'm not sure if this should be considered a bug or a feature request (or
something else, but hopefully one of those two!) so I thought I'd ask here
before sending in a PR. This program:

  #lang typed/racket
  (require typed/rackunit)
  (struct: s ([a : Integer]))
  (check-equal? (s 1) (s 2))

produces the output:

check-equal?: broke its contract
  Attempted to use a higher-order value passed as `Any` in untyped code:
#<s>
  in: the 1st argument of
      (recursive-contract
       (->* (Any Any) (String) any/c)
       #:impersonator)
  contract from: (interface for check-equal?)
  blaming: (interface for check-equal?)
  at: <collects>/typed/rackunit/main.rkt:20.2

which is a bit confusing. (As someone who's been around Racket long enough,
I guessed that sticking #:transparent into the struct declaration would be
a thing to try, but newcomers seem unlikely to find that workaround.)

Robby
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/dev/archive/attachments/20130529/fe975c3f/attachment.html>

Posted on the dev mailing list.