@@ -122,6 +122,11 @@ import GHC.Data.Bag
122122#endif
123123import GHC.ResponseFile
124124import 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
126131data Log
127132 = LogSettingInitialDynFlags
@@ -770,6 +775,15 @@ setNameCache :: IORef NameCache -> HscEnv -> HscEnv
770775#endif
771776setNameCache 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
774788newComponentCache
775789 :: Recorder (WithPriority Log )
@@ -783,18 +797,20 @@ newComponentCache
783797newComponentCache 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