@@ -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