on master help sign in
Handle carriage returns in multi-line strings
cfbe7a9Evan Czaplicki
compiler/src/Parse/Primitives/Utf8.hs+11
@@ -226,6 +226,11 @@ multiString fp offset terminal row col initialOffset builder =
226 multiString fp offset1 terminal (row + 1) 1 offset1 $
226 multiString fp offset1 terminal (row + 1) 1 offset1 $
227 addBits newlineBits fp initialOffset offset builder
227 addBits newlineBits fp initialOffset offset builder
228
228
229+ else if word == 0x0D {- \r -} then
230+ let !offset1 = offset + 1 in
231+ multiString fp offset1 terminal (row + 1) 1 offset1 $
232+ addBits carriageReturnBits fp initialOffset offset builder
233+
229 else if word == 0x5C {- \ -} then
234 else if word == 0x5C {- \ -} then
230 case eatEscape fp (offset + 1) terminal of
235 case eatEscape fp (offset + 1) terminal of
231 EscapeNormal ->
236 EscapeNormal ->
@@ -344,6 +349,12 @@ newlineBits =
344 "\\n"
349 "\\n"
345
350
346
351
352+{-# NOINLINE carriageReturnBits #-}
353+carriageReturnBits :: Text.Builder
354+carriageReturnBits =
355+ "\\r"
356+
357+
347
358
348---- CHUNKS
359---- CHUNKS
349
360