Fix bug in \u{1f646} syntax for code points over FFFF
Forgot to subtract 0x10000 from the code before doing the rest.
commit5efc3d8c32619d9b3e38958a881ffe2a3a296771
authorEvan Czaplicki <evancz@users.noreply.github.com>
dateMon 28 May 2018, 16:51 (8 years ago)
parentc8a6b0f
compiler/src/Parse/Primitives/Utf8.hs+4−3
@@ -309,9 +309,10 @@ codePointToBits code =
309309 wordToBits code
310310
311311 else
312− wordToBits ((code `div` 0x400) + 0xD800)
313− ++
314− wordToBits ((code `mod` 0x400) + 0xDC00)
312+ let
313+ (hi,lo) = divMod (code - 0x10000) 0x400
314+ in
315+ wordToBits (hi + 0xD800) ++ wordToBits (lo + 0xDC00)
315316
316317
317318wordToBits :: Int -> [Char]