summaryrefslogtreecommitdiff
path: root/testsuite/tests/numeric/should_run/numrun009.hs
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/numeric/should_run/numrun009.hs')
-rw-r--r--testsuite/tests/numeric/should_run/numrun009.hs17
1 files changed, 17 insertions, 0 deletions
diff --git a/testsuite/tests/numeric/should_run/numrun009.hs b/testsuite/tests/numeric/should_run/numrun009.hs
new file mode 100644
index 0000000000..37d0513a39
--- /dev/null
+++ b/testsuite/tests/numeric/should_run/numrun009.hs
@@ -0,0 +1,17 @@
+-- !!! tests that minBound::Int is correctly handled (for Int & Integer
+
+-- (not necessarily Haskell 98: relies on Int being a 32-bit type.)
+
+main = do
+ print (-2147483648 :: Int) -- -2147483648
+ print ((-2147483647)-1 :: Int) -- -2147483648
+ print (-2147483648 :: Integer) -- -2147483648
+ print ((-2147483648 :: Int) >= 0) -- False
+ print ((-2147483648 :: Integer) >= 0) -- False
+ print (-(-2147483648) :: Int) -- <undefined>
+ print (abs (-2147483648) :: Int) -- <undefined>
+ print (abs ((-2147483647)-1) :: Int) -- <undefined>
+ print (abs (-2147483648) :: Integer) -- 2147483648
+ print (abs ((-2147483647)-1) :: Integer) -- 2147483648 (wrong in 4.04)
+ print (fromInteger (-2147483648 :: Integer) :: Int) -- -2147483648
+ print (fromInteger ((-2147483647)-1 :: Integer) :: Int) -- -2147483648