Don't import FastString in HsVersions.h
[ghc-hetmet.git] / compiler / utils / Encoding.hs
index 152bf3c..f2659e6 100644 (file)
@@ -23,12 +23,11 @@ module Encoding (
        zDecodeString
   ) where
 
-#define COMPILING_FAST_STRING
 #include "HsVersions.h"
 import Foreign
-import Data.Char       ( ord, chr, isDigit, digitToInt, isHexDigit )
-import Numeric         ( showHex )
-
+import Data.Char       ( ord, chr, isDigit, digitToInt, intToDigit,
+                         isHexDigit )
+import Numeric         ( showIntAtBase )
 import Data.Bits
 import GHC.Ptr         ( Ptr(..) )
 import GHC.Base
@@ -134,10 +133,12 @@ countUTF8Chars ptr bytes = go ptr 0
           | ptr >= end = return n
           | otherwise  = do
                case utf8DecodeChar# (unPtr ptr) of
-                 (# c, a #) -> go (Ptr a) (n+1)
+                 (# _, a #) -> go (Ptr a) (n+1)
 
+unPtr :: Ptr a -> Addr#
 unPtr (Ptr a) = a
 
+utf8EncodeChar :: Char -> Ptr Word8 -> IO (Ptr Word8)
 utf8EncodeChar c ptr =
   let x = ord c in
   case () of
@@ -165,7 +166,7 @@ utf8EncodeChar c ptr =
 utf8EncodeString :: Ptr Word8 -> String -> IO ()
 utf8EncodeString ptr str = go ptr str
   where STRICT2(go)
-       go ptr [] = return ()
+       go _   []     = return ()
        go ptr (c:cs) = do
          ptr' <- utf8EncodeChar c ptr
          go ptr' cs
@@ -281,6 +282,9 @@ encode_ch c    = 'z' : if isDigit (head hex_str) then hex_str
   -- eg. strings of unicode characters come out as 'z1234Uz5678U', we
   -- could remove the 'U' in the middle (the 'z' works as a separator).
 
+       showHex = showIntAtBase 16 intToDigit
+       -- needed because prior to GHC 6.2, Numeric.showHex added a "0x" prefix
+
 zDecodeString :: EncodedString -> UserString
 zDecodeString [] = []
 zDecodeString ('Z' : d : rest) 
@@ -323,6 +327,7 @@ decode_lower 'v' = '%'
 decode_lower ch  = {-pprTrace "decode_lower" (char ch)-} ch
 
 -- Characters not having a specific code are coded as z224U (in hex)
+decode_num_esc :: Char -> EncodedString -> UserString
 decode_num_esc d rest
   = go (digitToInt d) rest
   where
@@ -360,13 +365,13 @@ maybe_tuple :: UserString -> Maybe EncodedString
 
 maybe_tuple "(# #)" = Just("Z1H")
 maybe_tuple ('(' : '#' : cs) = case count_commas (0::Int) cs of
-                                (n, '#' : ')' : cs) -> Just ('Z' : shows (n+1) "H")
-                                other               -> Nothing
+                                 (n, '#' : ')' : _) -> Just ('Z' : shows (n+1) "H")
+                                 _                  -> Nothing
 maybe_tuple "()" = Just("Z0T")
 maybe_tuple ('(' : cs)       = case count_commas (0::Int) cs of
-                                (n, ')' : cs) -> Just ('Z' : shows (n+1) "T")
-                                other         -> Nothing
-maybe_tuple other           = Nothing
+                                 (n, ')' : _) -> Just ('Z' : shows (n+1) "T")
+                                 _            -> Nothing
+maybe_tuple _                = Nothing
 
 count_commas :: Int -> String -> (Int, String)
 count_commas n (',' : cs) = count_commas (n+1) cs