Skip to content

Commit 359b165

Browse files
committed
Fix closure check
1 parent 049e312 commit 359b165

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

Diff for: ghcide/session-loader/Development/IDE/Session.hs

+19-3
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,11 @@ import GHC.Data.Bag
122122
#endif
123123
import GHC.ResponseFile
124124
import qualified Data.List.NonEmpty as NE
125+
import GHC.Unit.Env
126+
import GHC.Unit.Home
127+
import GHC.Unit.Home.ModInfo
128+
129+
import GHC.Utils.Trace
125130

126131
data Log
127132
= LogSettingInitialDynFlags
@@ -770,6 +775,15 @@ setNameCache :: IORef NameCache -> HscEnv -> HscEnv
770775
#endif
771776
setNameCache nc hsc = hsc { hsc_NC = nc }
772777

778+
pprHomeUnitGraph :: HomeUnitGraph -> Compat.SDoc
779+
pprHomeUnitGraph unitEnv = Compat.vcat (map (\(k, v) -> pprHomeUnitEnv k v) $ Map.assocs $ unitEnv_graph unitEnv)
780+
781+
pprHomeUnitEnv :: UnitId -> HomeUnitEnv -> Compat.SDoc
782+
pprHomeUnitEnv uid env =
783+
Compat.ppr uid Compat.<+> Compat.text "(flags:" Compat.<+> Compat.ppr (homeUnitId_ $ homeUnitEnv_dflags env) Compat.<+> Compat.text "," Compat.<+> Compat.ppr (fmap homeUnitId $ homeUnitEnv_home_unit env) Compat.<+> Compat.text ")" Compat.<+> Compat.text "->"
784+
Compat.$$ Compat.nest 4 (pprHPT $ homeUnitEnv_hpt env)
785+
786+
773787
-- | Create a mapping from FilePaths to HscEnvEqs
774788
newComponentCache
775789
:: Recorder (WithPriority Log)
@@ -783,18 +797,20 @@ newComponentCache
783797
newComponentCache recorder exts cradlePath cfp hsc_env old_cis new_cis = do
784798
let cis = old_cis ++ new_cis
785799
let uids = map (\ci -> (componentUnitId ci, componentDynFlags ci)) cis
800+
pprTraceM "newComponentCache" $ Compat.ppr (map fst uids)
786801
hscEnv' <- -- Set up a multi component session with the other units on GHC 9.4
787802
Compat.initUnits (map snd uids) hsc_env
788803

789804
#if MIN_VERSION_ghc(9,3,0)
790805
let closure_errs = checkHomeUnitsClosed (hsc_unit_env hscEnv') (hsc_all_home_unit_ids hscEnv') pkg_deps
791806
pkg_deps = do
792-
(home_unit_id,home_unit_env) <- unitEnv_elts $ hsc_HUG hscEnv'
793-
map (home_unit_id,) (Map.keys $ unitInfoMap $ homeUnitEnv_units home_unit_env)
807+
home_unit_id <- map fst uids
808+
home_unit_env <- maybeToList $ unitEnv_lookup_maybe home_unit_id $ hsc_HUG hscEnv'
809+
map (home_unit_id,) (map (Compat.toUnitId . fst) $ explicitUnits $ homeUnitEnv_units home_unit_env)
794810

795811
case closure_errs of
796812
errs@(_:_) -> do
797-
let rendered = map (ideErrorWithSource (Just "cradle") (Just DsError) cfp . T.pack . Compat.printWithoutUniques) errs
813+
let rendered = map (ideErrorWithSource (Just "cradle") (Just DsError) cfp . T.pack . Compat.printWithoutUniques . (, hsc_all_home_unit_ids hscEnv', pprHomeUnitGraph $ ue_home_unit_graph $ hsc_unit_env hscEnv', pkg_deps)) errs
798814
res = (rendered,Nothing)
799815
dep_info = foldMap componentDependencyInfo (filter isBad cis)
800816
bad_units = OS.fromList $ concat $ do

0 commit comments

Comments
 (0)