From 0498f548c1f03fcda17410f2c8343925055320fa Mon Sep 17 00:00:00 2001 From: Eric Dobson Date: Wed, 20 May 2015 08:32:35 -0700 Subject: [PATCH] Fix the type of abs on negative zeros. --- typed-racket-lib/typed-racket/base-env/base-env-numeric.rkt | 3 ++- typed-racket-test/unit-tests/typecheck-tests.rkt | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/typed-racket-lib/typed-racket/base-env/base-env-numeric.rkt b/typed-racket-lib/typed-racket/base-env/base-env-numeric.rkt index 3e193c25..616a7579 100644 --- a/typed-racket-lib/typed-racket/base-env/base-env-numeric.rkt +++ b/typed-racket-lib/typed-racket/base-env/base-env-numeric.rkt @@ -652,7 +652,8 @@ (define abs-cases ; used both for abs and magnitude (list - (-NonNegReal . -> . -NonNegReal : -true-filter : (-arg-path 0)) + ;; abs is not the identity on negative zeros. + ((Un -Zero -PosReal) . -> . (Un -Zero -PosReal) : -true-filter : (-arg-path 0)) ;; abs may not be closed on fixnums. (abs min-fixnum) is not a fixnum ((Un -PosInt -NegInt) . -> . -PosInt) (-Int . -> . -Nat) diff --git a/typed-racket-test/unit-tests/typecheck-tests.rkt b/typed-racket-test/unit-tests/typecheck-tests.rkt index 9ebbe5a7..ae223a87 100644 --- a/typed-racket-test/unit-tests/typecheck-tests.rkt +++ b/typed-racket-test/unit-tests/typecheck-tests.rkt @@ -3638,6 +3638,7 @@ [tc-e/t ((inst values Any) "a") -String] [tc-e ((inst second Any Any Any) (list "a" "b")) -String] [tc-e/t (abs 4) -PosByte] + [tc-e (abs -0.0) -NonNegFlonum] ;; PR 125: Tests for flonum predicate typechecking [tc-e/t