Merge pull request #269 from jsmaniac/fix-promise-provide

Fixes GH issue #268 “Can't provide promise for polymorphic struct”.
This commit is contained in:
Sam Tobin-Hochstadt 2015-12-17 09:50:21 -05:00
commit ad88f45bbe
4 changed files with 15 additions and 2 deletions

View File

@ -166,6 +166,7 @@
typed-racket/utils/opaque-object
typed-racket/utils/evt-contract
typed-racket/utils/sealing-contract
typed-racket/utils/promise-not-name-contract
racket/sequence
racket/contract/parametric))

View File

@ -15,7 +15,8 @@
racket/async-channel
racket/sequence
racket/promise
"../../utils/evt-contract.rkt")
"../../utils/evt-contract.rkt"
"../../utils/promise-not-name-contract.rkt")
racket/contract
racket/async-channel)
@ -153,7 +154,7 @@
((set/sc (#:covariant #:chaperone)) set/c #:flat)
((vector/sc . (#:invariant)) vector/c #:chaperone)
((vectorof/sc (#:invariant)) vectorof #:chaperone)
((promise/sc (#:covariant)) (λ (x) (and/c (promise/c x) (not/c promise/name?))) #:chaperone)
((promise/sc (#:covariant)) promise-not-name/c #:chaperone)
((syntax/sc (#:covariant #:flat)) syntax/c #:flat)
((hash/sc (#:invariant #:flat) (#:invariant)) hash/c #:chaperone)
((box/sc (#:invariant)) box/c #:chaperone)

View File

@ -0,0 +1,6 @@
#lang racket/base
(require racket/contract
racket/promise)
(provide promise-not-name/c)
(define (promise-not-name/c x) (and/c (promise/c x) (not/c promise/name?)))

View File

@ -0,0 +1,5 @@
#lang typed/racket
(struct (A) s ([f : Any]))
(define p (delay (s "a")))
(provide p)