From 5f4d0d8dabae5e07945e201b2c5650b67a385649 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mateusz=20Go=C5=9Blinowski?= <mateusz.goslinowski@gmail.com>
Date: Thu, 9 Jan 2025 00:06:36 +0100
Subject: [PATCH] Allow multiline strings in JS FFI (#25633)

(cherry picked from commit 14f8a7ec7ffd4368de84b6cc415a9a36ad396260)
---
 compiler/GHC/Parser.y | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/compiler/GHC/Parser.y b/compiler/GHC/Parser.y
index 95306ef54ff..6ab6ec122b1 100644
--- a/compiler/GHC/Parser.y
+++ b/compiler/GHC/Parser.y
@@ -2148,6 +2148,9 @@ fspec :: { Located (TokDcolon
        : STRING var '::' sigtype        { sLL $1 $> (epUniTok $3
                                              ,(L (getLoc $1)
                                                     (getStringLiteral $1), $2, $4)) }
+       | STRING_MULTI var '::' sigtype  { sLL $1 $> (epUniTok $3
+                                             ,(L (getLoc $1)
+                                                    (getStringMultiLiteral $1), $2, $4)) }
        |        var '::' sigtype        { sLL $1 $> (epUniTok $2
                                              ,(noLoc (StringLiteral NoSourceText nilFS Nothing), $1, $3)) }
          -- if the entity string is missing, it defaults to the empty string;
@@ -4247,6 +4250,7 @@ getINCOHERENT_PRAGs   (L _ (ITincoherent_prag   src)) = src
 getCTYPEs             (L _ (ITctype             src)) = src
 
 getStringLiteral l = StringLiteral (getSTRINGs l) (getSTRING l) Nothing
+getStringMultiLiteral l = StringLiteral (getSTRINGMULTIs l) (getSTRINGMULTI l) Nothing
 
 isUnicode :: Located Token -> Bool
 isUnicode (L _ (ITforall         iu)) = iu == UnicodeSyntax
-- 
GitLab