import GlaExts
import Ctype
import Char ( chr, ord )
+
+import Bits ( Bits(..) ) -- non-std
+
+#if __GLASGOW_HASKELL__ >= 503
+import GHC.Read ( readRational__ ) -- Glasgow non-std
+#else
import PrelRead ( readRational__ ) -- Glasgow non-std
-import PrelBits ( Bits(..) ) -- non-std
+#endif
+import Int ( Int32 )
\end{code}
%************************************************************************
do_exponent
= let buf3 = incLexeme buf2 in
case currentChar# buf3 of
- '-'# | is_digit (lookAhead# buf 1#)
+ '-'# | is_digit (lookAhead# buf3 1#)
-> expandWhile# is_digit (incLexeme buf3)
- '+'# | is_digit (lookAhead# buf 1#)
+ '+'# | is_digit (lookAhead# buf3 1#)
-> expandWhile# is_digit (incLexeme buf3)
x | is_digit x -> expandWhile# is_digit buf3
_ -> buf2
-}
checkVersion :: Maybe Integer -> P ()
checkVersion mb@(Just v) buf s@(PState{loc = loc})
- | (v==0) || (v == fromInt opt_HiVersion) || opt_NoHiCheck = POk s ()
+ | (v==0) || (v == fromIntegral opt_HiVersion) || opt_NoHiCheck = POk s ()
| otherwise = PFailed (ifaceVersionErr mb loc ([]::[Token]){-Todo-})
checkVersion mb@Nothing buf s@(PState{loc = loc})
| "hi-boot" `isSuffixOf` (_UNPK_ (srcLocFile loc)) = POk s ()
parrBit = 2
glaExtsEnabled, ffiEnabled, parrEnabled :: Int# -> Bool
-glaExtsEnabled flags = testBit (I# flags) glaExtsBit
-ffiEnabled flags = testBit (I# flags) ffiBit
-parrEnabled flags = testBit (I# flags) parrBit
+glaExtsEnabled flags = testBit (toInt32 flags) glaExtsBit
+ffiEnabled flags = testBit (toInt32 flags) ffiBit
+parrEnabled flags = testBit (toInt32 flags) parrBit
+
+toInt32 :: Int# -> Int32
+toInt32 x# = fromIntegral (I# x#)
-- convenient record-based bitmap for the interface to the rest of the world
--
mkPState :: SrcLoc -> ExtFlags -> PState
mkPState loc exts = PState {
loc = loc,
- extsBitmap = case bitmap of {I# bits -> bits},
+ extsBitmap = case (fromIntegral bitmap) of {I# bits -> bits},
bol = 0#,
atbol = 1#,
context = []
-- .|. ffiBit `setBitIf` ffiEF exts
.|. parrBit `setBitIf` parrEF exts
--
+ setBitIf :: Int -> Bool -> Int32
b `setBitIf` cond | cond = bit b
| otherwise = 0