Skip to content

Commit 1170c2b

Browse files
committed
Put the DynFlagsModifications in IdeOptions
1 parent d452740 commit 1170c2b

File tree

6 files changed

+22
-23
lines changed

6 files changed

+22
-23
lines changed

ghcide/session-loader/Development/IDE/Session.hs

+3-2
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ import Database.SQLite.Simple
8787
import HieDb.Create
8888
import HieDb.Types
8989
import HieDb.Utils
90+
import Ide.Types (dynFlagsModifyGlobal)
9091

9192
-- | Bump this version number when making changes to the format of the data stored in hiedb
9293
hiedbDataVersion :: String
@@ -255,7 +256,7 @@ loadSessionWithOptions SessionLoadingOptions{..} dir = do
255256

256257
IdeOptions{ optTesting = IdeTesting optTesting
257258
, optCheckProject = getCheckProject
258-
, optCustomDynFlags
259+
, optModifyDynFlags
259260
, optExtensions
260261
} <- getIdeOptions
261262

@@ -286,7 +287,7 @@ loadSessionWithOptions SessionLoadingOptions{..} dir = do
286287
-- Parse DynFlags for the newly discovered component
287288
hscEnv <- emptyHscEnv ideNc libDir
288289
(df, targets) <- evalGhcEnv hscEnv $
289-
first optCustomDynFlags <$> setOptions opts (hsc_dflags hscEnv)
290+
first (dynFlagsModifyGlobal optModifyDynFlags) <$> setOptions opts (hsc_dflags hscEnv)
290291
let deps = componentDependencies opts ++ maybeToList hieYaml
291292
dep_info <- getDependencyInfo deps
292293
-- Now lookup to see whether we are combining with an existing HscEnv

ghcide/src/Development/IDE/Core/Rules.hs

+5-5
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ getParsedModuleRule =
215215
sess <- use_ GhcSession file
216216
let hsc = hscEnv sess
217217
opt <- getIdeOptions
218-
modify_dflags <- getModifyDynFlags id dynFlagsModifyParser
218+
modify_dflags <- getModifyDynFlags dynFlagsModifyParser
219219
let ms = ms' { ms_hspp_opts = modify_dflags $ ms_hspp_opts ms' }
220220

221221
let dflags = ms_hspp_opts ms
@@ -287,14 +287,14 @@ getParsedModuleWithCommentsRule =
287287
opt <- getIdeOptions
288288

289289
let ms' = withoutOption Opt_Haddock $ withOption Opt_KeepRawTokenStream ms
290-
modify_dflags <- getModifyDynFlags id dynFlagsModifyParser
290+
modify_dflags <- getModifyDynFlags dynFlagsModifyParser
291291
let ms = ms' { ms_hspp_opts = modify_dflags $ ms_hspp_opts ms' }
292292
reset_ms pm = pm { pm_mod_summary = ms' }
293293

294294
liftIO $ fmap (fmap reset_ms) $ snd <$> getParsedModuleDefinition (hscEnv sess) opt file ms
295295

296-
getModifyDynFlags :: a -> (DynFlagsModifications -> a) -> Action a
297-
getModifyDynFlags a f = maybe a (f . dynFlagsMods) <$> getShakeExtra
296+
getModifyDynFlags :: (DynFlagsModifications -> a) -> Action a
297+
getModifyDynFlags f = f . optModifyDynFlags <$> getIdeOptions
298298

299299

300300
getParsedModuleDefinition
@@ -793,7 +793,7 @@ getModSummaryRule :: Rules ()
793793
getModSummaryRule = do
794794
defineEarlyCutoff $ Rule $ \GetModSummary f -> do
795795
session' <- hscEnv <$> use_ GhcSession f
796-
modify_dflags <- getModifyDynFlags id dynFlagsModifyGlobal
796+
modify_dflags <- getModifyDynFlags dynFlagsModifyGlobal
797797
let session = session' { hsc_dflags = modify_dflags $ hsc_dflags session' }
798798
(modTime, mFileContent) <- getFileContents f
799799
let fp = fromNormalizedFilePath f

ghcide/src/Development/IDE/Core/Service.hs

+1-4
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import Development.IDE.Graph
2525
import Development.IDE.Types.Logger as Logger
2626
import Development.IDE.Types.Options (IdeOptions (..))
2727
import Ide.Plugin.Config
28-
import Ide.Types (DynFlagsModifications)
2928
import qualified Language.LSP.Server as LSP
3029
import qualified Language.LSP.Types as LSP
3130

@@ -39,7 +38,6 @@ import Development.IDE.Core.Shake
3938
-- | Initialise the Compiler Service.
4039
initialise :: Config
4140
-> Rules ()
42-
-> DynFlagsModifications
4341
-> Maybe (LSP.LanguageContextEnv Config)
4442
-> Logger
4543
-> Debouncer LSP.NormalizedUri
@@ -48,11 +46,10 @@ initialise :: Config
4846
-> HieDb
4947
-> IndexQueue
5048
-> IO IdeState
51-
initialise defaultConfig mainRule dynFlagsMods lspEnv logger debouncer options vfs hiedb hiedbChan =
49+
initialise defaultConfig mainRule lspEnv logger debouncer options vfs hiedb hiedbChan =
5250
shakeOpen
5351
lspEnv
5452
defaultConfig
55-
dynFlagsMods
5653
logger
5754
debouncer
5855
(optShakeProfiling options)

ghcide/src/Development/IDE/Core/Shake.hs

+2-4
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ import Data.Default
148148
import HieDb.Types
149149
import Ide.Plugin.Config
150150
import qualified Ide.PluginUtils as HLS
151-
import Ide.Types (PluginId, DynFlagsModifications)
151+
import Ide.Types (PluginId)
152152

153153
-- | We need to serialize writes to the database, so we send any function that
154154
-- needs to write to the database over the channel, where it will be picked up by
@@ -171,7 +171,6 @@ data ShakeExtras = ShakeExtras
171171
lspEnv :: Maybe (LSP.LanguageContextEnv Config)
172172
,debouncer :: Debouncer NormalizedUri
173173
,logger :: Logger
174-
,dynFlagsMods :: DynFlagsModifications
175174
,globals :: Var (HMap.HashMap TypeRep Dynamic)
176175
,state :: Var Values
177176
,diagnostics :: Var DiagnosticStore
@@ -455,7 +454,6 @@ seqValue v b = case v of
455454
-- | Open a 'IdeState', should be shut using 'shakeShut'.
456455
shakeOpen :: Maybe (LSP.LanguageContextEnv Config)
457456
-> Config
458-
-> DynFlagsModifications
459457
-> Logger
460458
-> Debouncer NormalizedUri
461459
-> Maybe FilePath
@@ -467,7 +465,7 @@ shakeOpen :: Maybe (LSP.LanguageContextEnv Config)
467465
-> ShakeOptions
468466
-> Rules ()
469467
-> IO IdeState
470-
shakeOpen lspEnv defaultConfig dynFlagsMods logger debouncer
468+
shakeOpen lspEnv defaultConfig logger debouncer
471469
shakeProfileDir (IdeReportProgress reportProgress) ideTesting@(IdeTesting testing) hiedb indexQueue vfs opts rules = mdo
472470

473471
us <- mkSplitUniqSupply 'r'

ghcide/src/Development/IDE/Main.hs

+8-6
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ import Development.IDE.Types.Logger (Logger (Logger))
6060
import Development.IDE.Types.Options (IdeGhcSession,
6161
IdeOptions (optCheckParents, optCheckProject, optReportProgress),
6262
clientSupportsProgress,
63-
defaultIdeOptions)
63+
defaultIdeOptions, optModifyDynFlags)
6464
import Development.IDE.Types.Shake (Key (Key))
6565
import GHC.IO.Encoding (setLocaleEncoding)
6666
import GHC.IO.Handle (hDuplicate)
@@ -218,12 +218,12 @@ defaultMain Arguments{..} = do
218218
config <- LSP.runLspT env LSP.getConfig
219219
let options = (argsIdeOptions config sessionLoader)
220220
{ optReportProgress = clientSupportsProgress caps
221+
, optModifyDynFlags = pluginModifyDynflags plugins
221222
}
222223
caps = LSP.resClientCapabilities env
223224
initialise
224225
argsDefaultHlsConfig
225226
rules
226-
(pluginModifyDynflags plugins)
227227
(Just env)
228228
logger
229229
debouncer
@@ -260,8 +260,9 @@ defaultMain Arguments{..} = do
260260
let options = (argsIdeOptions argsDefaultHlsConfig sessionLoader)
261261
{ optCheckParents = pure NeverCheck
262262
, optCheckProject = pure False
263+
, optModifyDynFlags = pluginModifyDynflags plugins
263264
}
264-
ide <- initialise argsDefaultHlsConfig rules (pluginModifyDynflags plugins) Nothing logger debouncer options vfs hiedb hieChan
265+
ide <- initialise argsDefaultHlsConfig rules Nothing logger debouncer options vfs hiedb hieChan
265266
shakeSessionInit ide
266267
registerIdeConfiguration (shakeExtras ide) $ IdeConfiguration mempty (hashed Nothing)
267268

@@ -307,10 +308,11 @@ defaultMain Arguments{..} = do
307308
sessionLoader <- loadSessionWithOptions argsSessionLoadingOptions "."
308309
let options =
309310
(argsIdeOptions argsDefaultHlsConfig sessionLoader)
310-
{ optCheckParents = pure NeverCheck,
311-
optCheckProject = pure False
311+
{ optCheckParents = pure NeverCheck
312+
, optCheckProject = pure False
313+
, optModifyDynFlags = pluginModifyDynflags plugins
312314
}
313-
ide <- initialise argsDefaultHlsConfig rules (pluginModifyDynflags plugins) Nothing logger debouncer options vfs hiedb hieChan
315+
ide <- initialise argsDefaultHlsConfig rules Nothing logger debouncer options vfs hiedb hieChan
314316
shakeSessionInit ide
315317
registerIdeConfiguration (shakeExtras ide) $ IdeConfiguration mempty (hashed Nothing)
316318
c ide

ghcide/src/Development/IDE/Types/Options.hs

+3-2
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import GHC hiding (parseModule,
2828
typecheckModule)
2929
import GhcPlugins as GHC hiding (fst3, (<>))
3030
import Ide.Plugin.Config
31+
import Ide.Types (DynFlagsModifications)
3132
import qualified Language.LSP.Types.Capabilities as LSP
3233

3334
data IdeOptions = IdeOptions
@@ -73,7 +74,7 @@ data IdeOptions = IdeOptions
7374
-- Otherwise, return the result of parsing without Opt_Haddock, so
7475
-- that the parsed module contains the result of Opt_KeepRawTokenStream,
7576
-- which might be necessary for hlint.
76-
, optCustomDynFlags :: DynFlags -> DynFlags
77+
, optModifyDynFlags :: DynFlagsModifications
7778
-- ^ Will be called right after setting up a new cradle,
7879
-- allowing to customize the Ghc options used
7980
, optShakeOptions :: ShakeOptions
@@ -138,7 +139,7 @@ defaultIdeOptions session = IdeOptions
138139
,optCheckProject = pure True
139140
,optCheckParents = pure CheckOnSaveAndClose
140141
,optHaddockParse = HaddockParse
141-
,optCustomDynFlags = id
142+
,optModifyDynFlags = mempty
142143
,optSkipProgress = defaultSkipProgress
143144
,optProgressStyle = Explicit
144145
}

0 commit comments

Comments
 (0)