From 992080279883bb63c190efd4e2ec19f1a5e77187 Mon Sep 17 00:00:00 2001 From: Joe Hermaszewski Date: Fri, 23 Oct 2020 14:27:25 +0800 Subject: [PATCH] Fix QQ Text lifting error Work around https://gitlab.haskell.org/ghc/ghc/-/issues/12596 using https://stackoverflow.com/questions/38143464/cant-find-inerface-file-declaration-for-variable --- src/Nix/TH.hs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Nix/TH.hs b/src/Nix/TH.hs index 6f185d3..c0f8293 100644 --- a/src/Nix/TH.hs +++ b/src/Nix/TH.hs @@ -17,6 +17,7 @@ import qualified Data.Text as Text import Data.List.NonEmpty ( NonEmpty(..) ) import Data.Maybe ( mapMaybe ) import Language.Haskell.TH +import Language.Haskell.TH.Syntax ( liftString ) import Language.Haskell.TH.Quote import Nix.Atoms import Nix.Expr @@ -27,7 +28,12 @@ quoteExprExp s = do expr <- case parseNixText (Text.pack s) of Failure err -> fail $ show err Success e -> pure e - dataToExpQ (const Nothing `extQ` metaExp (freeVars expr)) expr + dataToExpQ + (const Nothing `extQ` metaExp (freeVars expr) `extQ` (Just . liftText)) + expr + where + liftText :: Text.Text -> Q Exp + liftText txt = AppE (VarE 'Text.pack) <$> liftString (Text.unpack txt) quoteExprPat :: String -> PatQ quoteExprPat s = do