@@ -35,6 +35,7 @@ import Development.IDE.State.FileStore
3535import Development.IDE.Types.Diagnostics as Base
3636import Data.Bifunctor
3737import Data.Either.Extra
38+import Development.IDE.UtilGHC
3839import Data.Maybe
3940import Data.Foldable
4041import qualified Data.Map.Strict as Map
@@ -46,6 +47,7 @@ import Development.IDE.Types.LSP as Compiler
4647import Development.IDE.State.RuleTypes
4748
4849import GHC
50+import HscTypes
4951import Development.IDE.Compat
5052import UniqSupply
5153import Module as M
@@ -153,7 +155,7 @@ getAtPointForFile file pos = do
153155getDefinitionForFile :: FilePath -> Position -> ExceptT [FileDiagnostic] Action (Maybe Location)
154156getDefinitionForFile file pos = do
155157 spans <- useE GetSpanInfo file
156− pkgState <- useE LoadPackageState ""
158+ pkgState <- useE GhcSession ""
157159 opts <- lift getOpts
158160 lift $ AtPoint.gotoDefinition opts pkgState spans pos
159161
@@ -177,7 +179,7 @@ getParsedModuleRule :: Rules ()
177179getParsedModuleRule =
178180 define $ \GetParsedModule file -> do
179181 contents <- getFileContents file
180− packageState <- use_ LoadPackageState ""
182+ packageState <- use_ GhcSession ""
181183 opt <- getOpts
182184 liftIO $ Compile.parseModule opt packageState file contents
183185
@@ -187,7 +189,7 @@ getLocatedImportsRule =
187189 pm <- use_ GetParsedModule file
188190 let ms = pm_mod_summary pm
189191 let imports = ms_textual_imps ms
190− packageState <- use_ LoadPackageState ""
192+ packageState <- use_ GhcSession ""
191193 opt <- getOpts
192194 dflags <- liftIO $ Compile.getGhcDynFlags opt pm packageState
193195 xs <- forM imports $ \(mbPkgName, modName) ->
@@ -209,7 +211,7 @@ rawDependencyInformation f = go (Set.singleton f) Map.empty Map.empty
209211 let modGraph' = Map.insert f (Left ModuleParseError) modGraph
210212 in go fs modGraph' pkgs
211213 Just imports -> do
212− packageState <- lift $ use_ LoadPackageState ""
214+ packageState <- lift $ use_ GhcSession ""
213215 opt <- lift getOpts
214216 modOrPkgImports <- forM imports $ \imp -> do
215217 case imp of
@@ -277,7 +279,7 @@ getSpanInfoRule =
277279 pm <- use_ GetParsedModule file
278280 tc <- use_ TypeCheck file
279281 imports <- use_ GetLocatedImports file
280− packageState <- use_ LoadPackageState ""
282+ packageState <- use_ GhcSession ""
281283 opt <- getOpts
282284 x <- liftIO $ Compile.getSrcSpanInfos opt pm packageState (fileImports imports) tc
283285 return ([], Just x)
@@ -292,7 +294,7 @@ typeCheckRule =
292294 tms <- uses_ TypeCheck (transitiveModuleDeps deps)
293295 setPriority PriorityTypeCheck
294296 us <- getUniqSupply
295− packageState <- use_ LoadPackageState ""
297+ packageState <- use_ GhcSession ""
296298 opt <- getOpts
297299 liftIO $ Compile.typecheckModule opt pm packageState us tms lps pm
298300
@@ -300,7 +302,7 @@ typeCheckRule =
300302loadPackageRule :: Rules ()
301303loadPackageRule =
302304 defineNoFile $ \(LoadPackage pkg) -> do
303− packageState <- use_ LoadPackageState ""
305+ packageState <- use_ GhcSession ""
304306 opt <- getOpts
305307 pkgs <- liftIO $ Compile.computePackageDeps opt packageState pkg
306308 case pkgs of
@@ -324,16 +326,19 @@ generateCoreRule =
324326 let pm = tm_parsed_module . Compile.tmrModule $ tm
325327 setPriority PriorityGenerateDalf
326328 us <- getUniqSupply
327− packageState <- use_ LoadPackageState ""
329+ packageState <- use_ GhcSession ""
328330 opt <- getOpts
329331 liftIO $ Compile.compileModule opt pm packageState us tms lps tm
330332
331−loadPackageStateRule :: Rules ()
332−loadPackageStateRule =
333− defineNoFile $ \LoadPackageState -> do
333+loadGhcSession :: Rules ()
334+loadGhcSession =
335+ defineNoFile $ \GhcSession -> do
334336 opts <- envOptions <$> getServiceEnv
335− liftIO $ Compile.generatePackageState
337+ env <- Compile.optGhcSession opts
338+ pkg <- liftIO $ Compile.generatePackageState
336339 (Compile.optPackageDbs opts) (Compile.optHideAllPkgs opts) (Compile.optPackageImports opts)
340+ return env{hsc_dflags = setPackageDynFlags pkg $ hsc_dflags env}
341+
337342
338343getHieFileRule :: Rules ()
339344getHieFileRule =
@@ -353,7 +358,7 @@ mainRule = do
353358 typeCheckRule
354359 getSpanInfoRule
355360 generateCoreRule
356− loadPackageStateRule
361+ loadGhcSession
357362 loadPackageRule
358363 getHieFileRule
359364