projects
/
ghc-hetmet.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
fa1e4ff
)
#2875: Correct SYB's representation of Char
author
'Jose Pedro Magalhaes
<jpm@cs.uu.nl>
Mon, 19 Jan 2009 11:23:21 +0000
(11:23 +0000)
committer
'Jose Pedro Magalhaes
<jpm@cs.uu.nl>
Mon, 19 Jan 2009 11:23:21 +0000
(11:23 +0000)
compiler/utils/Serialized.hs
patch
|
blob
|
history
diff --git
a/compiler/utils/Serialized.hs
b/compiler/utils/Serialized.hs
index
82cc065
..
06b92e4
100644
(file)
--- a/
compiler/utils/Serialized.hs
+++ b/
compiler/utils/Serialized.hs
@@
-87,7
+87,12
@@
serializeConstr :: ConstrRep -> [Word8] -> [Word8]
serializeConstr (AlgConstr ix) = serializeWord8 1 . serializeInt ix
serializeConstr (IntConstr i) = serializeWord8 2 . serializeInteger i
serializeConstr (FloatConstr r) = serializeWord8 3 . serializeRational r
serializeConstr (AlgConstr ix) = serializeWord8 1 . serializeInt ix
serializeConstr (IntConstr i) = serializeWord8 2 . serializeInteger i
serializeConstr (FloatConstr r) = serializeWord8 3 . serializeRational r
+#if __GLASGOW_HASKELL__ < 611
serializeConstr (StringConstr s) = serializeWord8 4 . serializeString s
serializeConstr (StringConstr s) = serializeWord8 4 . serializeString s
+#else
+serializeConstr (CharConstr c) = serializeWord8 4 . serializeChar c
+#endif
+
deserializeConstr :: [Word8] -> (ConstrRep -> [Word8] -> a) -> a
deserializeConstr bytes k = deserializeWord8 bytes $ \constr_ix bytes ->
deserializeConstr :: [Word8] -> (ConstrRep -> [Word8] -> a) -> a
deserializeConstr bytes k = deserializeWord8 bytes $ \constr_ix bytes ->
@@
-95,7
+100,11
@@
deserializeConstr bytes k = deserializeWord8 bytes $ \constr_ix bytes ->
1 -> deserializeInt bytes $ \ix -> k (AlgConstr ix)
2 -> deserializeInteger bytes $ \i -> k (IntConstr i)
3 -> deserializeRational bytes $ \r -> k (FloatConstr r)
1 -> deserializeInt bytes $ \ix -> k (AlgConstr ix)
2 -> deserializeInteger bytes $ \i -> k (IntConstr i)
3 -> deserializeRational bytes $ \r -> k (FloatConstr r)
+#if __GLASGOW_HASKELL__ >= 611
+ 4 -> deserializeChar bytes $ \c -> k (CharConstr c)
+#else
4 -> deserializeString bytes $ \s -> k (StringConstr s)
4 -> deserializeString bytes $ \s -> k (StringConstr s)
+#endif
x -> error $ "deserializeConstr: unrecognised serialized constructor type " ++ show x ++ " in context " ++ show bytes
x -> error $ "deserializeConstr: unrecognised serialized constructor type " ++ show x ++ " in context " ++ show bytes
@@
-154,6
+163,15
@@
deserializeInteger :: [Word8] -> (Integer -> [Word8] -> a) -> a
deserializeInteger bytes k = deserializeString bytes (k . read)
deserializeInteger bytes k = deserializeString bytes (k . read)
+#if __GLASGOW_HASKELL__ >= 611
+serializeChar :: Char -> [Word8] -> [Word8]
+serializeChar = serializeString . show
+
+deserializeChar :: [Word8] -> (Char -> [Word8] -> a) -> a
+deserializeChar bytes k = deserializeString bytes (k . read)
+#endif
+
+
serializeString :: String -> [Word8] -> [Word8]
serializeString = serializeList serializeEnum
serializeString :: String -> [Word8] -> [Word8]
serializeString = serializeList serializeEnum