Fix stream contracts to work with impersonator contracts
This commit is contained in:
parent
62a674fa80
commit
93def1f753
|
@ -1266,10 +1266,9 @@ If the @racket[c] argument is a flat contract or a chaperone contract, then the
|
||||||
result will be a chaperone contract. Otherwise, the result will be an
|
result will be a chaperone contract. Otherwise, the result will be an
|
||||||
impersonator contract.
|
impersonator contract.
|
||||||
|
|
||||||
When an @racket[stream/c] contract is applied to an asynchronous channel,
|
When an @racket[stream/c] contract is applied to a stream, the result is not
|
||||||
the result is not @racket[eq?] to the input. The result will be either a
|
@racket[eq?] to the input. The result will be either a @tech{chaperone} or
|
||||||
@tech{chaperone} or @tech{impersonator} of the input depending on the type of
|
@tech{impersonator} of the input depending on the type of contract.
|
||||||
contract.
|
|
||||||
|
|
||||||
Contracts on streams are evaluated lazily by necessity (since streams may be
|
Contracts on streams are evaluated lazily by necessity (since streams may be
|
||||||
infinite). Contract violations will not be raised until the value in violation
|
infinite). Contract violations will not be raised until the value in violation
|
||||||
|
|
|
@ -41,4 +41,8 @@
|
||||||
(test/pos-blame
|
(test/pos-blame
|
||||||
'stream/c9
|
'stream/c9
|
||||||
'(stream-first (stream-rest (contract (stream/c (and/c integer? (first-or/c 0 positive?)))
|
'(stream-first (stream-rest (contract (stream/c (and/c integer? (first-or/c 0 positive?)))
|
||||||
(stream 0 -1) 'pos 'neg)))))
|
(stream 0 -1) 'pos 'neg))))
|
||||||
|
|
||||||
|
(test/spec-passed
|
||||||
|
'stream/impersonator-ctc
|
||||||
|
'(contract (stream/c (make-contract #:first-order (lambda (x) #t))) empty-stream 'pos 'neg)))
|
||||||
|
|
|
@ -421,7 +421,9 @@
|
||||||
" (procedure-arity-includes/c 1)\n"
|
" (procedure-arity-includes/c 1)\n"
|
||||||
" (procedure-arity-includes/c 1))")
|
" (procedure-arity-includes/c 1))")
|
||||||
v))
|
v))
|
||||||
(vector->immutable-vector v))))
|
(vector->immutable-vector v))
|
||||||
|
'()
|
||||||
|
#t))
|
||||||
|
|
||||||
;; new-style sequence property, where the property value is a procedure
|
;; new-style sequence property, where the property value is a procedure
|
||||||
;; to get the sequence-driving value and procedures;
|
;; to get the sequence-driving value and procedures;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user