diff --git a/collects/racket/contract/private/misc.rkt b/collects/racket/contract/private/misc.rkt index d44932e78d..6c604cc9f1 100644 --- a/collects/racket/contract/private/misc.rkt +++ b/collects/racket/contract/private/misc.rkt @@ -492,10 +492,12 @@ (let ([n (between/c-low ctc)] [m (between/c-high ctc)]) (cond - [(= n -inf.0) `(<=/c ,m)] - [(= m +inf.0) `(>=/c ,n)] - [(= n m) `(=/c ,n)] - [else `(between/c ,n ,m)]))) + [(and (= n -inf.0) (= m +inf.0)) + `(between/c ,n ,m)] + [(= n -inf.0) `(<=/c ,m)] + [(= m +inf.0) `(>=/c ,n)] + [(= n m) `(=/c ,n)] + [else `(between/c ,n ,m)]))) #:stronger (λ (this that) diff --git a/collects/tests/racket/contract-test.rktl b/collects/tests/racket/contract-test.rktl index 31ba6575f9..e9b8562027 100644 --- a/collects/tests/racket/contract-test.rktl +++ b/collects/tests/racket/contract-test.rktl @@ -8655,6 +8655,7 @@ so that propagation occurs. (test-name '(/c 5) (>/c 5)) (test-name '(between/c 5 6) (between/c 5 6)) + (test-name '(between/c -inf.0 +inf.0) (between/c -inf.0 +inf.0)) (test-name '(integer-in 0 10) (integer-in 0 10)) (test-name '(real-in 1 10) (real-in 1 10)) (test-name '(string-len/c 3) (string-len/c 3))