restore the contract profile marks

commit bea67c0 dropped a bit too much of the contract wrapper
This commit is contained in:
Robby Findler 2016-01-21 06:56:21 -06:00
parent f7298cdb29
commit 10c934aec0
3 changed files with 20 additions and 13 deletions

View File

@ -261,6 +261,12 @@
(test/pos-blame
'contract-arrow4
'((contract (integer? . -> . integer?) (lambda (x) #f) 'pos 'neg) 1))
(test/pos-blame
'contract-arrow5
'(let ()
(struct s (x))
((contract (-> s? integer?) s-x 'pos 'neg) (s #f))))
(test/neg-blame
'contract-arrow-arity1

View File

@ -50,6 +50,12 @@
'contract-marks2
'((contract (-> any/c pos-blame?) (λ (x) x) 'pos 'neg) 1))
(test/spec-passed
'contract-marks2b
'(let ()
(struct s (x))
((contract (-> any/c pos-blame?) s-x 'pos 'neg) (s 1))))
(test/spec-passed
'contract-marks3
'(contract (vector/c pos-blame?) (vector 1) 'pos 'neg))

View File

@ -177,19 +177,15 @@
[args
(arrow:bad-number-of-results blame val rng-len args
#:missing-party neg-party)]))))
(define (wrap-call-with-values-and-range-checking stx assume-result-values? do-tail-check?)
(define (wrap-call-with-values-and-range-checking stx assume-result-values?)
(if rngs
(if assume-result-values?
(if do-tail-check?
#`(let-values ([(rng-x ...) #,stx])
(with-contract-continuation-mark
(cons blame neg-party)
(let ()
post ...
(values (rng-late-neg-projs rng-x neg-party) ...))))
#`(let-values ([(rng-x ...) #,stx])
(values (rng-late-neg-projs rng-x neg-party) ...)))
#`(let-values ([(rng-x ...) #,stx])
(with-contract-continuation-mark
(cons blame neg-party)
(let ()
post ...
(values (rng-late-neg-projs rng-x neg-party) ...))))
#`(call-with-values
(λ () #,stx)
#,rng-checker))
@ -318,8 +314,7 @@
[else
(wrap-call-with-values-and-range-checking
the-call
assume-result-values?
do-tail-check?)]))
assume-result-values?)]))
(define (mk-return assume-result-values? do-tail-check?)
(if do-tail-check?
(if rngs