Move the Integer type definition into GHC.Integer.Internals
[packages/integer-gmp.git] / GHC / Integer.lhs
index 4379066..137eff1 100644 (file)
@@ -1,5 +1,5 @@
 \begin{code}
-{-# OPTIONS_GHC -fno-implicit-prelude #-}
+{-# OPTIONS_GHC -XNoImplicitPrelude #-}
 {-# OPTIONS_HADDOCK hide #-}
 -----------------------------------------------------------------------------
 -- |
@@ -68,6 +68,8 @@ import GHC.Prim (
 #endif
  )
 
+import GHC.Integer.Internals (Integer(..))
+
 #if WORD_SIZE_IN_BITS < 64
 import GHC.IntWord64 (
             Int64#, Word64#,
@@ -90,19 +92,6 @@ default ()              -- Double isn't available yet,
 %*                                                      *
 %*********************************************************
 
-\begin{code}
--- | Arbitrary-precision integers.
-data Integer
-   = S# Int#                            -- small integers
-#ifndef ILX
-   | J# Int# ByteArray#                 -- large integers
-#else
-   | J# Void BigInteger                 -- .NET big ints
-
-foreign type dotnet "BigInteger" BigInteger
-#endif
-\end{code}
-
 Convenient boxed Integer PrimOps.
 
 \begin{code}
@@ -142,8 +131,8 @@ int64ToInteger i = if ((i `leInt64#` intToInt64# 0x7FFFFFFF#) &&
                    else case int64ToInteger# i of
                         (# s, d #) -> J# s d
     where -- XXX Move the (&&) definition below us?
-          True && True = True
-          _ && _ = False
+          True  && x = x
+          False && _ = False
 #endif
 
 toInt# :: Integer -> Int#