Skip to content

Commit ea6c792

Browse files
committed
Fix #2693
We need to update the package database state in the `HscEnv` after we update its `DynFlags`. `setSessionDynFlags` handles this for us.
1 parent b700153 commit ea6c792

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

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

+11-2
Original file line numberDiff line numberDiff line change
@@ -770,8 +770,17 @@ newComponentCache
770770
-> IO ( [TargetDetails], (IdeResult HscEnvEq, DependencyInfo))
771771
newComponentCache recorder exts cradlePath cfp hsc_env uids ci = do
772772
let df = componentDynFlags ci
773-
let hscEnv' = hscSetFlags df hsc_env
774-
{ hsc_IC = (hsc_IC hsc_env) { ic_dflags = df } }
773+
hscEnv' <-
774+
-- Add the options for the current component to the HscEnv
775+
-- We want to call `setSessionDynFlags` instead of `hscSetFlags`
776+
-- because `setSessionDynFlags` also initializes the package database,
777+
-- which we need for any changes to the package flags in the dynflags
778+
-- to be visible.
779+
-- See #2693
780+
evalGhcEnv hsc_env $ do
781+
_ <- setSessionDynFlags $ df
782+
getSession
783+
775784

776785
let newFunc = maybe newHscEnvEqPreserveImportPaths newHscEnvEq cradlePath
777786
henv <- newFunc hscEnv' uids

ghcide/test/exe/Main.hs

+2-3
Original file line numberDiff line numberDiff line change
@@ -5583,8 +5583,7 @@ simpleSubDirectoryTest =
55835583
expectNoMoreDiagnostics 0.5
55845584

55855585
simpleMultiTest :: TestTree
5586-
simpleMultiTest = knownBrokenForGhcVersions [GHC92] "#2693" $
5587-
testCase "simple-multi-test" $ withLongTimeout $ runWithExtraFiles "multi" $ \dir -> do
5586+
simpleMultiTest = testCase "simple-multi-test" $ withLongTimeout $ runWithExtraFiles "multi" $ \dir -> do
55885587
let aPath = dir </> "a/A.hs"
55895588
bPath = dir </> "b/B.hs"
55905589
adoc <- openDoc aPath "haskell"
@@ -5614,7 +5613,7 @@ simpleMultiTest2 = testCase "simple-multi-test2" $ runWithExtraFiles "multi" $ \
56145613

56155614
-- Now with 3 components
56165615
simpleMultiTest3 :: TestTree
5617-
simpleMultiTest3 = knownBrokenForGhcVersions [GHC92] "#2693" $
5616+
simpleMultiTest3 =
56185617
testCase "simple-multi-test3" $ runWithExtraFiles "multi" $ \dir -> do
56195618
let aPath = dir </> "a/A.hs"
56205619
bPath = dir </> "b/B.hs"

0 commit comments

Comments
 (0)