@@ -122,6 +122,11 @@ import GHC.Data.Bag
122
122
#endif
123
123
import GHC.ResponseFile
124
124
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
125
130
126
131
data Log
127
132
= LogSettingInitialDynFlags
@@ -770,6 +775,15 @@ setNameCache :: IORef NameCache -> HscEnv -> HscEnv
770
775
#endif
771
776
setNameCache nc hsc = hsc { hsc_NC = nc }
772
777
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
+
773
787
-- | Create a mapping from FilePaths to HscEnvEqs
774
788
newComponentCache
775
789
:: Recorder (WithPriority Log )
@@ -783,18 +797,20 @@ newComponentCache
783
797
newComponentCache recorder exts cradlePath cfp hsc_env old_cis new_cis = do
784
798
let cis = old_cis ++ new_cis
785
799
let uids = map (\ ci -> (componentUnitId ci, componentDynFlags ci)) cis
800
+ pprTraceM " newComponentCache" $ Compat. ppr (map fst uids)
786
801
hscEnv' <- -- Set up a multi component session with the other units on GHC 9.4
787
802
Compat. initUnits (map snd uids) hsc_env
788
803
789
804
#if MIN_VERSION_ghc(9,3,0)
790
805
let closure_errs = checkHomeUnitsClosed (hsc_unit_env hscEnv') (hsc_all_home_unit_ids hscEnv') pkg_deps
791
806
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)
794
810
795
811
case closure_errs of
796
812
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
798
814
res = (rendered,Nothing )
799
815
dep_info = foldMap componentDependencyInfo (filter isBad cis)
800
816
bad_units = OS. fromList $ concat $ do
0 commit comments