Fix contract generation for mutable structures.

original commit: de96643fbe9e50b9554805b2aec199b8bc38962a
This commit is contained in:
Eric Dobson 2013-04-29 20:45:49 -07:00
parent bb3f8c1885
commit 2e802bc3bc
2 changed files with 16 additions and 2 deletions

View File

@ -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)

View File

@ -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