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