fix contract random generation for -> when the range is 'any'
This commit is contained in:
parent
a3c7c557ea
commit
7472058fd9
|
@ -84,6 +84,10 @@
|
|||
|
||||
(check-exn exn:fail? (λ () ((test-contract-generation (-> char? integer?)) 0)))
|
||||
(check-not-exn (λ () ((test-contract-generation (-> integer? integer?)) 1)))
|
||||
(check-not-exn (λ () ((test-contract-generation (-> integer? any)) 1)))
|
||||
(check-not-exn (λ () ((test-contract-generation (-> integer? (-> integer? any))) 1)))
|
||||
(check-not-exn (λ () ((test-contract-generation (-> (-> integer? any) integer?))
|
||||
(λ (i) (values 1 2 3)))))
|
||||
(check-not-exn (λ () ((test-contract-generation (-> (-> integer? integer?) boolean?)) +)))
|
||||
(check-not-exn
|
||||
(λ () ((test-contract-generation (-> some-crazy-predicate? some-crazy-predicate?)) 11)))
|
||||
|
|
|
@ -723,11 +723,13 @@
|
|||
(set! dom-exers (cons exer dom-exers))
|
||||
(set! addl-available (append ctcs addl-available)))
|
||||
(define rngs-gens
|
||||
(with-definitely-available-contracts
|
||||
addl-available
|
||||
(λ ()
|
||||
(for/list ([c (in-list (base->-rngs ctc))])
|
||||
(generate/choose c fuel)))))
|
||||
(if (base->-rngs ctc)
|
||||
(with-definitely-available-contracts
|
||||
addl-available
|
||||
(λ ()
|
||||
(for/list ([c (in-list (base->-rngs ctc))])
|
||||
(generate/choose c fuel))))
|
||||
'()))
|
||||
(cond
|
||||
[(for/and ([rng-gen (in-list rngs-gens)])
|
||||
rng-gen)
|
||||
|
@ -787,10 +789,11 @@
|
|||
(for/list ([gen (in-list gens)])
|
||||
(gen))))
|
||||
(λ results
|
||||
(for ([res-ctc (in-list rng-ctcs)]
|
||||
[result (in-list results)])
|
||||
(env-stash env res-ctc result)))))
|
||||
(base->-rngs ctc))]
|
||||
(when rng-ctcs
|
||||
(for ([res-ctc (in-list rng-ctcs)]
|
||||
[result (in-list results)])
|
||||
(env-stash env res-ctc result))))))
|
||||
(or rng-ctcs '()))]
|
||||
[else
|
||||
(values void '())]))]
|
||||
[else
|
||||
|
|
Loading…
Reference in New Issue
Block a user