on master help sign in
Handle carriage returns in multi-line strings

Fix https://github.com/elm/compiler/issues/1720

commitcfbe7a9a6e90b7e8138c2bf06d6b70d05b5242be authorEvan Czaplicki <evancz@users.noreply.github.com> dateFri 15 Jun 2018, 01:52 (8 years ago) parent6ae0168
1 file changed+11
compiler/src/Parse/Primitives/Utf8.hs+11
compiler/src/Parse/Primitives/Utf8.hs+11
@@ -226,6 +226,11 @@ multiString fp offset terminal row col initialOffset builder =
226226 multiString fp offset1 terminal (row + 1) 1 offset1 $
227227 addBits newlineBits fp initialOffset offset builder
228228
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+
229234 else if word == 0x5C {- \ -} then
230235 case eatEscape fp (offset + 1) terminal of
231236 EscapeNormal ->
@@ -344,6 +349,12 @@ newlineBits =
344349 "\\n"
345350
346351
352+{-# NOINLINE carriageReturnBits #-}
353+carriageReturnBits :: Text.Builder
354+carriageReturnBits =
355+ "\\r"
356+
357+
347358
348359---- CHUNKS
349360