diff --git a/parser-typechecker/src/Unison/Runtime/ANF.hs b/parser-typechecker/src/Unison/Runtime/ANF.hs index cccf81ec2..6e7d201ba 100644 --- a/parser-typechecker/src/Unison/Runtime/ANF.hs +++ b/parser-typechecker/src/Unison/Runtime/ANF.hs @@ -1525,7 +1525,7 @@ data BLit | BArr PA.ByteArray | Pos Word64 | Neg Word64 - | Char Word64 + | Char Char | Float Double deriving (Show) diff --git a/parser-typechecker/src/Unison/Runtime/ANF/Serialize.hs b/parser-typechecker/src/Unison/Runtime/ANF/Serialize.hs index 09e8419c8..0622a1659 100644 --- a/parser-typechecker/src/Unison/Runtime/ANF/Serialize.hs +++ b/parser-typechecker/src/Unison/Runtime/ANF/Serialize.hs @@ -657,7 +657,7 @@ putBLit (Code g) = putTag CodeT *> putGroup mempty mempty g putBLit (BArr a) = putTag BArrT *> putByteArray a putBLit (Pos n) = putTag PosT *> putPositive n putBLit (Neg n) = putTag NegT *> putPositive n -putBLit (Char n) = putTag CharT *> putWord64be n +putBLit (Char c) = putTag CharT *> putChar c putBLit (Float d) = putTag FloatT *> putFloat d getBLit :: (MonadGet m) => Version -> m BLit @@ -673,7 +673,7 @@ getBLit v = BArrT -> BArr <$> getByteArray PosT -> Pos <$> getPositive NegT -> Neg <$> getPositive - CharT -> Char <$> getWord64be + CharT -> Char <$> getChar FloatT -> Float <$> getFloat putRefs :: (MonadPut m) => [Reference] -> m () diff --git a/parser-typechecker/src/Unison/Runtime/Machine.hs b/parser-typechecker/src/Unison/Runtime/Machine.hs index e26950f29..2c412be3b 100644 --- a/parser-typechecker/src/Unison/Runtime/Machine.hs +++ b/parser-typechecker/src/Unison/Runtime/Machine.hs @@ -2125,7 +2125,7 @@ reflectValue rty = goV reflectUData :: Word64 -> Int -> IO ANF.BLit reflectUData t v | t == natTag = pure $ ANF.Pos (fromIntegral v) - | t == charTag = pure $ ANF.Char (fromIntegral v) + | t == charTag = pure $ ANF.Char (toEnum v) | t == intTag, v >= 0 = pure $ ANF.Pos (fromIntegral v) | t == intTag, v < 0 = pure $ ANF.Neg (fromIntegral (- v)) | t == floatTag = pure $ ANF.Float (intToDouble v) @@ -2204,7 +2204,7 @@ reifyValue0 (rty, rtm) = goV goL (ANF.Quote v) = pure . Foreign $ Wrap Rf.valueRef v goL (ANF.Code g) = pure . Foreign $ Wrap Rf.codeRef g goL (ANF.BArr a) = pure . Foreign $ Wrap Rf.ibytearrayRef a - goL (ANF.Char w) = pure $ DataU1 Rf.charRef charTag (fromIntegral w) + goL (ANF.Char c) = pure $ DataU1 Rf.charRef charTag (fromEnum c) goL (ANF.Pos w) = pure $ DataU1 Rf.natRef natTag (fromIntegral w) goL (ANF.Neg w) =