[support unboxed characters properly.
John Meacham <john@repetae.net>**20120123120631
 Ignore-this: b493cd9a094ab026928f6c5b6cf1b8fa
] hunk ./lib/jhc/Jhc/String.hs 8
-    eqSingleChar,
hunk ./lib/jhc/Jhc/String.hs 20
-        Char_ 0# -> []
+        '\0'# -> []
hunk ./lib/jhc/Jhc/String.hs 26
-        Char_ 0# -> nil
+        '\0'# -> nil
hunk ./lib/jhc/Jhc/String.hs 33
-    f offset [] = case constPeekByte offset of Char_ 0# -> Bool_ 1#; _ -> Bool_ 0#
+    f offset [] = case constPeekByte offset of '\0'# -> 1#; _ -> 0#
hunk ./lib/jhc/Jhc/String.hs 35
-        Char_ 0# -> Bool_ 0#
+        '\0'# -> 0#
hunk ./lib/jhc/Jhc/String.hs 37
-            Bool_ 0# -> Bool_ 0#
-            Bool_ 1# -> f (increment offset) cs
-
-eqSingleChar :: Char_ -> [Char] -> Bool_
-eqSingleChar ch (Char c:cs) = case equalsChar ch c of
-    Bool_ 0# -> Bool_ 0#
-    Bool_ 1# -> case cs of
-        [] -> Bool_ 1#
-        _ -> Bool_ 0#
-
-{-# NOINLINE eqUnpacked #-}
-eqUnpacked :: Addr__ -> [Char] -> Bool_
-eqUnpacked addr cs = f addr cs where
-    f :: Addr__ -> [Char] -> Bool_
-    f offset [] = case constPeekByte offset of Char_ 0# -> Bool_ 1#; Char_ _ -> Bool_ 0#
-    f offset (Char c:cs) = case constPeekByte offset of
-        Char_ 0# -> Bool_ 0#
-        uc -> case equalsChar uc c of
-            Bool_ 0# -> Bool_ 0#
-            Bool_ 1# -> f (increment offset) cs
+            0# -> 0#
+            1# -> f (increment offset) cs
hunk ./lib/jhc/Jhc/String.hs 41
-eqString [] [] = Bool_ 1#
+eqString [] [] = 1#
hunk ./lib/jhc/Jhc/String.hs 43
-    Bool_ 0# -> Bool_ 0#
-    Bool_ 1# -> eqString xs ys
-eqString _ _ = Bool_ 0#
+    0# -> 0#
+    1# -> eqString xs ys
+eqString _ _ = 0#
hunk ./lib/jhc/Jhc/String.hs 75
+eqSingleChar :: Char_ -> [Char] -> Bool_
+eqSingleChar ch (Char c:cs) = case equalsChar ch c of
+    0# -> 0#
+    1# -> case cs of
+        [] -> 1#
+        _ ->  0#
+
+{-# NOINLINE eqUnpacked #-}
+eqUnpacked :: Addr__ -> [Char] -> Bool_
+eqUnpacked addr cs = f addr cs where
+    f :: Addr__ -> [Char] -> Bool_
+    f offset [] = case constPeekByte offset of '\0'# -> 1#;  _ -> 0#
+    f offset (Char c:cs) = case constPeekByte offset of
+        '\NUL'# -> 0#
+        uc -> case equalsChar uc c of
+            0# -> 0#
+            1# -> f (increment offset) cs
+
hunk ./src/DataConstructors.hs 172
-newtype DataTable = DataTable {
-    constructorMap :: (Map.Map Name Constructor)
-    }
-    {-! derive: Monoid !-}
+newtype DataTable = DataTable (Map.Map Name Constructor)
+    deriving(Monoid)
hunk ./src/E/E.hs 45
---    tWorld__ = ELit (litCons { litName = tWorld__, litArgs = [], litType = eHash })
hunk ./src/E/E.hs 49
-    tCharzh = ELit (litCons { litName = tCharzh, litArgs = [], litType = eHash })
+    tCharzh = ELit (litCons { litName = tCharzh, litArgs = [], litType = eHash, litAliasFor = Just tBits32zh })
hunk ./src/E/E.hs 52
+tBits32zh = ELit (litCons { litName = tIntzh, litArgs = [], litType = eHash })
hunk ./src/E/E.hs 138
-    fromChar (ELit LitCons { litName = dc, litArgs = [ELit (LitInt ch t)] }) | dc == dc_Char && t == tCharzh = return (chr $ fromIntegral ch)
+    fromChar (ELit LitCons { litName = dc, litArgs = [ELit (LitInt ch t)] }) | dc == dc_Char = return (chr $ fromIntegral ch)
hunk ./src/E/FromHs.hs 618
+    cExpr (HsAsPat n' (HsLit (HsCharPrim i))) = ans where
+        t' = getAssump n'
+        ans = return $ ELit (LitInt (fromIntegral $ ord i) (tipe t'))
hunk ./src/E/FromHs.hs 632
+    cExpr (HsLit (HsCharPrim ch)) = return $ toEzh ch
hunk ./src/E/FromHs.hs 768
-litconvert (HsIntPrim i) t  =  LitInt (fromIntegral $  i) t
+litconvert (HsIntPrim i) t  =  LitInt (fromIntegral i) t
hunk ./src/E/Show.hs 98
+        f (LitInt n (ELit LitCons { litName = t})) | t == tc_Char_ = return $ atom $ tshow (chr $ fromIntegral n) <> char '#'
+        f (LitInt i t) | dump FD.EVerbose = do
+            se <- showE t
+            return $ (atom (text $ show i) `inhabit` se )
hunk ./src/E/Show.hs 103
-        f (LitInt 1 e) | e == tBoolzh = return $ atom $ text "True#"
-        f (LitInt 0 e) | e == tBoolzh = return $ atom $ text "False#"
-        f (LitInt n e) | e == tCharzh = return $ atom $ tshow (chr $ fromIntegral n) <> char '#'
hunk ./src/E/Show.hs 187
-
hunk ./src/E/Show.hs 221
+        f (ELit (LitCons { litName = n, litArgs = [ELit (LitInt i _)] })) | n == dc_Char = return $ atom $ tshow $ chr (fromIntegral i)
hunk ./src/FrontEnd/KindInfer.hs 423
-    kiType (KVar va) (hsBangType a)
hunk ./src/FrontEnd/KindInfer.hs 424
+    kiType (KVar va) (hsBangType a)
hunk ./src/FrontEnd/Lexer.hs 423
-                                '#':_ | uval -> discard 1 >> return (UIntTok $ fromIntegral $ ord c2)
+                                --'#':_ | uval -> discard 1 >> return (UIntTok $ fromIntegral $ ord c2)
+                                '#':_ | uval -> discard 1 >> return (UCharacter c2)
hunk ./src/FrontEnd/Lexer.hs 697
-
-
hunk ./src/FrontEnd/Representation.hs 72
-    tBool = TCon (Tycon tc_Bool kindStar)
+    tBool   = TCon (Tycon tc_Bool kindStar)
hunk ./src/FrontEnd/Representation.hs 74
-    tChar      = TCon (Tycon tc_Char kindStar)
-    tUnit = TCon (Tycon tc_Unit kindStar)
+    tChar   = TCon (Tycon tc_Char kindStar)
+    tUnit   = TCon (Tycon tc_Unit kindStar)
+    tCharzh = TCon (Tycon tc_Char_ kindHash)
hunk ./src/FrontEnd/Tc/Main.hs 398
+tiPat pl@(HsPLit HsCharPrim {}) typ = boxyMatch tCharzh typ >> return (pl,mempty)
hunk ./src/FrontEnd/Tc/Main.hs 794
+tiLit (HsCharPrim _) = return tCharzh
hunk ./src/Grin/FromE.hs 223
+    DataTable dtMap = dataTable
hunk ./src/Grin/FromE.hs 225
-    initTyEnv = mappend primTyEnv $ TyEnv $ fromList $ concat [ makePartials (a,b,c) | (_,(a,b,c)) <-  toList scMap] ++ concat [con x| x <- [cabsurd] ++ values (constructorMap dataTable), conType x /= eHash]
+    initTyEnv = mappend primTyEnv $ TyEnv $ fromList $ concat [ makePartials (a,b,c) | (_,(a,b,c)) <-  toList scMap] ++ concat [con x| x <- [cabsurd] ++ values dtMap, conType x /= eHash]