diff --git a/pkgs/racket-test/tests/racket/contract/random-generate.rkt b/pkgs/racket-test/tests/racket/contract/random-generate.rkt index ee8f98a6f7..740c799d7f 100644 --- a/pkgs/racket-test/tests/racket/contract/random-generate.rkt +++ b/pkgs/racket-test/tests/racket/contract/random-generate.rkt @@ -435,3 +435,11 @@ (λ (x) (λ (y) #f)) 'pos 'neg)) + +(check-exercise + 5 + void? + (contract (-> (and/c #f #t) any) + (λ (_) 'thing) + 'pos + 'neg)) diff --git a/racket/collects/racket/contract/private/generate.rkt b/racket/collects/racket/contract/private/generate.rkt index 1523a90db3..19c5fbb55c 100644 --- a/racket/collects/racket/contract/private/generate.rkt +++ b/racket/collects/racket/contract/private/generate.rkt @@ -61,7 +61,9 @@ [(null? exers) (void)] [(null? vals) (loop exers orig-vals)] [else - ((car exers) (car vals)) + (let/ec k + (parameterize ([fail-escape (λ () (k))]) + ((car exers) (car vals)))) (loop (cdr exers) (cdr vals))]))) available-ctcs)] [else