diff --git a/pkgs/racket-test/tests/racket/contract/arrow.rkt b/pkgs/racket-test/tests/racket/contract/arrow.rkt index c5ecff1614..f5b87900b9 100644 --- a/pkgs/racket-test/tests/racket/contract/arrow.rkt +++ b/pkgs/racket-test/tests/racket/contract/arrow.rkt @@ -487,5 +487,23 @@ 'dynamic->*8 '((contract (dynamic->* #:range-contracts #f) (λ () 1) 'pos 'neg)) 1) + + (test/spec-passed + 'dynamic->*9 + '(begin + ((contract (dynamic->* #:range-contracts (list (or/c 1 2) (or/c 3 4))) + (λ () (values 1 3)) + 'pos + 'neg)) + (void))) + + (test/pos-blame + 'dynamic->*10 + '(begin + ((contract (dynamic->* #:range-contracts (list (or/c 1 2) (or/c 3 4))) + (λ () (values #f #f)) + 'pos + 'neg)) + (void))) ) diff --git a/racket/collects/racket/contract/private/arrow.rkt b/racket/collects/racket/contract/private/arrow.rkt index 9b18263218..26b4a872da 100644 --- a/racket/collects/racket/contract/private/arrow.rkt +++ b/racket/collects/racket/contract/private/arrow.rkt @@ -450,7 +450,8 @@ [(matches-arity-exactly? val min-arity max-arity req-kwd opt-kwd) (if (and (null? req-kwd) (null? opt-kwd)) (cond - [(and basic-unsafe-lambda/result-values-assumed + [(and basic-unsafe-lambda + basic-unsafe-lambda/result-values-assumed (equal? contract-result-val-count (procedure-result-arity val))) (values basic-unsafe-lambda/result-values-assumed #t)]