actually make parameter/c use impersonate-procedure and not just chaperone-procedure

fixes 114a4f89a1

closes #3852
This commit is contained in:
Robby Findler 2021-05-27 18:42:15 -05:00
parent 114a4f89a1
commit bf768e1093
2 changed files with 15 additions and 5 deletions

View File

@ -65,6 +65,16 @@
(contract (parameter/c integer?)
p 'pos 'neg)
p))
#f)
(test/spec-passed/result
'parameter/c9b
'(let ([p (make-parameter (λ (x) x))])
(chaperone-of?
(contract (parameter/c (-> integer? integer?)
#:impersonator? #f)
p 'pos 'neg)
p))
#t)
(test/spec-passed/result
@ -101,7 +111,7 @@
(parameter/c (-> integer? integer?)
#:impersonator? #f))
#t)
(test/spec-passed/result
'parameter/c13
'(chaperone-contract?

View File

@ -480,7 +480,7 @@
[else
(impersonator-parameter/c in-ctc out-ctc/f)]))
(define (parameter/c-lnp ctc)
(define ((parameter/c-lnp chaperone-or-impersonate-procedure) ctc)
(define in-proc (get/build-late-neg-projection (base-parameter/c-in ctc)))
(define out-proc (if (base-parameter/c-out/f ctc)
(get/build-late-neg-projection (base-parameter/c-out/f ctc))
@ -493,7 +493,7 @@
(define blame+neg-party (cons blame/c neg-party))
(cond
[(parameter? val)
(chaperone-procedure
(chaperone-or-impersonate-procedure
val
(case-lambda
[(x)
@ -565,7 +565,7 @@
#:property prop:contract
(build-contract-property
#:trusted trust-me
#:late-neg-projection parameter/c-lnp
#:late-neg-projection (parameter/c-lnp impersonate-procedure)
#:name parameter/c-name
#:first-order parameter/c-first-order
#:stronger parameter/c-stronger
@ -575,7 +575,7 @@
#:property prop:chaperone-contract
(build-chaperone-contract-property
#:trusted trust-me
#:late-neg-projection parameter/c-lnp
#:late-neg-projection (parameter/c-lnp chaperone-procedure)
#:name parameter/c-name
#:first-order parameter/c-first-order
#:stronger parameter/c-stronger