From 9f59d57ee4451469020702ce04ce0e8ec1ac776d Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Wed, 21 Jan 2015 17:15:25 -0600 Subject: [PATCH] make (integer-in n n) produce just n --- racket/collects/racket/contract/private/misc.rkt | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/racket/collects/racket/contract/private/misc.rkt b/racket/collects/racket/contract/private/misc.rkt index f1c5fcebb3..a3f1d5884d 100644 --- a/racket/collects/racket/contract/private/misc.rkt +++ b/racket/collects/racket/contract/private/misc.rkt @@ -518,8 +518,9 @@ (struct integer-in-ctc (start end) #:property prop:flat-contract (build-flat-contract-property - #:name (λ (ctc) `(integer-in ,(integer-in-ctc-start ctc) - ,(integer-in-ctc-end ctc))) + #:name (λ (ctc) + `(integer-in ,(integer-in-ctc-start ctc) + ,(integer-in-ctc-end ctc))) #:first-order (λ (ctc) (define start (integer-in-ctc-start ctc)) (define end (integer-in-ctc-end ctc)) @@ -543,7 +544,14 @@ (define/final-prop (integer-in start end) (check-two-args 'integer-in start end exact-integer? exact-integer?) - (integer-in-ctc start end)) + (if (= start end) + + ;; won't fail, but gets us a contract struct + ;; something seems safer to always produce + ;; from a contract operation + (coerce-contract 'integer-in start) + + (integer-in-ctc start end))) (define/final-prop (real-in start end) (check-two-args 'real-in start end real? real?)