From 0d38081b9231cb1f48acc32bf489e809dbec2af6 Mon Sep 17 00:00:00 2001 From: normalcoder <normalcoder@gmail.com> Date: Sat, 4 Nov 2023 23:29:09 +0100 Subject: [PATCH] MultilineStrings for interpolation --- compiler/GHC/Driver/MultilineStrings.hs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/compiler/GHC/Driver/MultilineStrings.hs b/compiler/GHC/Driver/MultilineStrings.hs index d9a637814059..ec36aa65d7ee 100644 --- a/compiler/GHC/Driver/MultilineStrings.hs +++ b/compiler/GHC/Driver/MultilineStrings.hs @@ -17,10 +17,16 @@ convertMultilineStrings s = go s WaitingForString 0 InString -> case s of "" -> error "we are in a mutline string, but text ended unexpectedly" '\n':'"':'"':'"':s -> '"':'\n' : go s WaitingForString 0 + '#':'{':s -> '#':'{' : go s InInterpolationSection charCnt '"':s -> '\\':'"' : go s state charCnt '\\':s -> '\\':'\\' : go s state charCnt '\n':s -> "\\n\"\n" ++ replicate charCnt ' ' ++ "++ \"" ++ go s state charCnt c:s -> c : go s state charCnt + InInterpolationSection -> case s of + '\n':_ -> error "we are in an interpolation section in mutline string, but text line ended unexpectedly" + '}':s -> '}' : go s InString charCnt + c:s -> c : go s state charCnt + where skipOneLineComment "" = go "" state charCnt skipOneLineComment s@('\n':_) = go s state charCnt @@ -33,3 +39,4 @@ convertMultilineStrings s = go s WaitingForString 0 data State = WaitingForString | InString + | InInterpolationSection -- GitLab