From 7ece2a4872bfd02d7b62b39c040e877c7ba638ee Mon Sep 17 00:00:00 2001 From: Sam Tobin-Hochstadt Date: Fri, 11 Jun 2010 18:54:05 -0400 Subject: [PATCH] Fix type of `zero?' to properly handle 0.0. --- collects/tests/typed-scheme/unit-tests/typecheck-tests.rkt | 1 + collects/typed-scheme/private/base-env-numeric.rkt | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/collects/tests/typed-scheme/unit-tests/typecheck-tests.rkt b/collects/tests/typed-scheme/unit-tests/typecheck-tests.rkt index 1f15665c62..df5a9c17fe 100644 --- a/collects/tests/typed-scheme/unit-tests/typecheck-tests.rkt +++ b/collects/tests/typed-scheme/unit-tests/typecheck-tests.rkt @@ -807,6 +807,7 @@ (vector-ref #("a" "b") (sub1 x)) (vector-ref #("a" "b") (- x 1))) -String] + [tc-err (string-append "bar" (if (zero? (ann 0.0 Float)) #f "foo"))] ) (test-suite "check-type tests" diff --git a/collects/typed-scheme/private/base-env-numeric.rkt b/collects/typed-scheme/private/base-env-numeric.rkt index daf5aacbc1..f0ccb7235a 100644 --- a/collects/typed-scheme/private/base-env-numeric.rkt +++ b/collects/typed-scheme/private/base-env-numeric.rkt @@ -41,7 +41,8 @@ ) ;; numeric predicates -[zero? (make-pred-ty (list N) B -Zero)] +[zero? (asym-pred N B (-FS (-filter (Un -Flonum -Zero) 0) + (-not-filter -Zero 0)))] [number? (make-pred-ty N)] [integer? (asym-pred Univ B (-FS (-filter (Un -Integer -Flonum) 0) (-not-filter -Integer 0)))]