Ah, ok, I've reduced the test case to something more managable: two files, promise.rkt and test-promise.rkt, with the following content:
;; promise.rkt #lang typed/racket/base (require (for-syntax racket/base)) (provide MyPromise) (define-struct: (a) MyPromise ([thunk : (-> a)]) #:mutable) ;; test-promise.rkt #lang racket/base (require "promise.rkt") The untyped code just requires the typed module, forcing the type contract code to generate. It looks like #:mutable is necessary here: if I take that out of the type, then I don't see the error. _________________________ Racket Developers list: http://lists.racket-lang.org/dev