Skip to content

Commit 6f3bd73

Browse files
authored
ghc 8.10 compatibility (CPP optP) (#452)
1 parent 29d7741 commit 6f3bd73

File tree

2 files changed

+23
-9
lines changed

2 files changed

+23
-9
lines changed

src/Development/IDE/Core/Preprocessor.hs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -166,18 +166,11 @@ runLhs dflags filename contents = withTempDir $ \dir -> do
166166
escape (c:cs) = c : escape cs
167167
escape [] = []
168168

169-
170-
modifyOptP :: ([String] -> [String]) -> DynFlags -> DynFlags
171-
modifyOptP op = onSettings (onOptP op)
172-
where
173-
onSettings f x = x{settings = f $ settings x}
174-
onOptP f x = x{sOpt_P = f $ sOpt_P x}
175-
176169
-- | Run CPP on a file
177170
runCpp :: DynFlags -> FilePath -> Maybe SB.StringBuffer -> IO SB.StringBuffer
178171
runCpp dflags filename contents = withTempDir $ \dir -> do
179172
let out = dir </> takeFileName filename <.> "out"
180-
dflags <- pure $ modifyOptP ("-D__GHCIDE__":) dflags
173+
dflags <- pure $ addOptP "-D__GHCIDE__" dflags
181174

182175
case contents of
183176
Nothing -> do

src/Development/IDE/GHC/CPP.hs

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
--
2020
-----------------------------------------------------------------------------
2121

22-
module Development.IDE.GHC.CPP(doCpp) where
22+
module Development.IDE.GHC.CPP(doCpp, addOptP)
23+
where
2324

2425
import Development.IDE.GHC.Compat
2526
import Packages
@@ -33,6 +34,10 @@ import LlvmCodeGen (llvmVersionList)
3334
#elif MIN_GHC_API_VERSION(8,8,0)
3435
import LlvmCodeGen (LlvmVersion (..))
3536
#endif
37+
#if MIN_GHC_API_VERSION (8,10,0)
38+
import Fingerprint
39+
import ToolSettings
40+
#endif
3641

3742
import System.Directory
3843
import System.FilePath
@@ -162,6 +167,22 @@ getBackendDefs dflags | hscTarget dflags == HscLlvm = do
162167
getBackendDefs _ =
163168
return []
164169

170+
addOptP :: String -> DynFlags -> DynFlags
171+
#if MIN_GHC_API_VERSION (8,10,0)
172+
addOptP f = alterToolSettings $ \s -> s
173+
{ toolSettings_opt_P = f : toolSettings_opt_P s
174+
, toolSettings_opt_P_fingerprint = fingerprintStrings (f : toolSettings_opt_P s)
175+
}
176+
where
177+
fingerprintStrings ss = fingerprintFingerprints $ map fingerprintString ss
178+
alterToolSettings f dynFlags = dynFlags { toolSettings = f (toolSettings dynFlags) }
179+
#else
180+
addOptP opt = onSettings (onOptP (opt:))
181+
where
182+
onSettings f x = x{settings = f $ settings x}
183+
onOptP f x = x{sOpt_P = f $ sOpt_P x}
184+
#endif
185+
165186
-- ---------------------------------------------------------------------------
166187
-- Macros (cribbed from Cabal)
167188

0 commit comments

Comments
 (0)