@@ -123,6 +123,11 @@ import GHC.Data.Bag
123
123
#endif
124
124
import GHC.ResponseFile
125
125
import qualified Data.List.NonEmpty as NE
126
+ import GHC.Unit.Env
127
+ import GHC.Unit.Home
128
+ import GHC.Unit.Home.ModInfo
129
+
130
+ import GHC.Utils.Trace
126
131
127
132
data Log
128
133
= LogSettingInitialDynFlags
@@ -771,6 +776,15 @@ setNameCache :: IORef NameCache -> HscEnv -> HscEnv
771
776
#endif
772
777
setNameCache nc hsc = hsc { hsc_NC = nc }
773
778
779
+ pprHomeUnitGraph :: HomeUnitGraph -> Compat. SDoc
780
+ pprHomeUnitGraph unitEnv = Compat. vcat (map (\ (k, v) -> pprHomeUnitEnv k v) $ Map. assocs $ unitEnv_graph unitEnv)
781
+
782
+ pprHomeUnitEnv :: UnitId -> HomeUnitEnv -> Compat. SDoc
783
+ pprHomeUnitEnv uid env =
784
+ 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 " ->"
785
+ Compat. $$ Compat. nest 4 (pprHPT $ homeUnitEnv_hpt env)
786
+
787
+
774
788
-- | Create a mapping from FilePaths to HscEnvEqs
775
789
newComponentCache
776
790
:: Recorder (WithPriority Log )
@@ -784,18 +798,20 @@ newComponentCache
784
798
newComponentCache recorder exts cradlePath cfp hsc_env old_cis new_cis = do
785
799
let cis = old_cis ++ new_cis
786
800
let uids = map (\ ci -> (componentUnitId ci, componentDynFlags ci)) cis
801
+ pprTraceM " newComponentCache" $ Compat. ppr (map fst uids)
787
802
hscEnv' <- -- Set up a multi component session with the other units on GHC 9.4
788
803
Compat. initUnits (map snd uids) hsc_env
789
804
790
805
#if MIN_VERSION_ghc(9,3,0)
791
806
let closure_errs = checkHomeUnitsClosed (hsc_unit_env hscEnv') (hsc_all_home_unit_ids hscEnv') pkg_deps
792
807
pkg_deps = do
793
- (home_unit_id,home_unit_env) <- unitEnv_elts $ hsc_HUG hscEnv'
794
- map (home_unit_id,) (Map. keys $ unitInfoMap $ homeUnitEnv_units home_unit_env)
808
+ home_unit_id <- map fst uids
809
+ home_unit_env <- maybeToList $ unitEnv_lookup_maybe home_unit_id $ hsc_HUG hscEnv'
810
+ map (home_unit_id,) (map (Compat. toUnitId . fst ) $ explicitUnits $ homeUnitEnv_units home_unit_env)
795
811
796
812
case closure_errs of
797
813
errs@ (_: _) -> do
798
- let rendered = map (ideErrorWithSource (Just " cradle" ) (Just DsError ) cfp . T. pack . Compat. printWithoutUniques) errs
814
+ 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
799
815
res = (rendered,Nothing )
800
816
dep_info = foldMap componentDependencyInfo (filter isBad cis)
801
817
bad_units = OS. fromList $ concat $ do
0 commit comments