diff --git a/collects/tests/typed-racket/succeed/struct-mutable-contract.rkt b/collects/tests/typed-racket/succeed/struct-mutable-contract.rkt new file mode 100644 index 00000000..ff228fb4 --- /dev/null +++ b/collects/tests/typed-racket/succeed/struct-mutable-contract.rkt @@ -0,0 +1,14 @@ +#lang racket/load + +(module promise typed/racket/base + (require (for-syntax racket/base)) + (provide MyPromise) + (define-struct: (a) MyPromise ([thunk : (-> a)]) + #:mutable)) + +(module user racket/base + (require 'promise) + (MyPromise (lambda () #f))) + + +(require 'user) diff --git a/collects/typed-racket/private/type-contract.rkt b/collects/typed-racket/private/type-contract.rkt index 53312a1c..74cd0334 100644 --- a/collects/typed-racket/private/type-contract.rkt +++ b/collects/typed-racket/private/type-contract.rkt @@ -142,9 +142,9 @@ (let loop ([ty ty] [typed-side (if typed-side 'typed 'untyped)] [structs-seen null] [kind kind]) (define (t->c t #:seen [structs-seen structs-seen] #:kind [kind kind]) (loop t typed-side structs-seen kind)) - (define (t->c/neg t #:seen [structs-seen structs-seen] #:flat [kind kind]) + (define (t->c/neg t #:seen [structs-seen structs-seen] #:kind [kind kind]) (loop t (flip-side typed-side) structs-seen kind)) - (define (t->c/both t #:seen [structs-seen structs-seen] #:flat [kind kind]) + (define (t->c/both t #:seen [structs-seen structs-seen] #:kind [kind kind]) (loop t 'both structs-seen kind)) (define (t->c/fun f #:method [method? #f]) (match f