Instrument higher-order hash/c.
This commit is contained in:
parent
d34cd06b90
commit
72418fba03
|
@ -276,4 +276,14 @@
|
|||
(eval '(f 2)))
|
||||
3)
|
||||
|
||||
(test/spec-passed/result
|
||||
'contract-marks31
|
||||
'((hash-ref (contract (hash/c (-> neg-blame? pos-blame?)
|
||||
(-> neg-blame? pos-blame?))
|
||||
(hash values values)
|
||||
'pos 'neg)
|
||||
values)
|
||||
3)
|
||||
3)
|
||||
|
||||
)
|
||||
|
|
|
@ -234,6 +234,7 @@
|
|||
(define (handle-the-hash val neg-party
|
||||
pos-dom-proj neg-dom-proj mk-pos-rng-proj mk-neg-rng-proj
|
||||
chaperone-or-impersonate-hash ctc blame)
|
||||
(define blame+neg-party (cons blame neg-party))
|
||||
(if (immutable? val)
|
||||
(for/fold ([h val]) ([(k v) (in-hash val)])
|
||||
(hash-set h
|
||||
|
@ -242,16 +243,26 @@
|
|||
(chaperone-or-impersonate-hash
|
||||
val
|
||||
(λ (h k)
|
||||
(values (neg-dom-proj k neg-party)
|
||||
(λ (h k v)
|
||||
((mk-pos-rng-proj k) v neg-party))))
|
||||
(λ (h k v)
|
||||
(values (neg-dom-proj k neg-party)
|
||||
((mk-neg-rng-proj k) v neg-party)))
|
||||
(λ (h k)
|
||||
(values (with-contract-continuation-mark
|
||||
blame+neg-party
|
||||
(neg-dom-proj k neg-party))
|
||||
(λ (h k v)
|
||||
(with-contract-continuation-mark
|
||||
blame+neg-party
|
||||
((mk-pos-rng-proj k) v neg-party)))))
|
||||
(λ (h k v)
|
||||
(with-contract-continuation-mark
|
||||
blame+neg-party
|
||||
(values (neg-dom-proj k neg-party)
|
||||
((mk-neg-rng-proj k) v neg-party))))
|
||||
(λ (h k)
|
||||
(pos-dom-proj k neg-party))
|
||||
(with-contract-continuation-mark
|
||||
blame+neg-party
|
||||
(neg-dom-proj k neg-party)))
|
||||
(λ (h k)
|
||||
(with-contract-continuation-mark
|
||||
blame+neg-party
|
||||
(pos-dom-proj k neg-party)))
|
||||
impersonator-prop:contracted ctc
|
||||
impersonator-prop:blame blame)))
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user