summaryrefslogtreecommitdiff
path: root/compiler/GHC/Unit/Module
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/GHC/Unit/Module')
-rw-r--r--compiler/GHC/Unit/Module/Deps.hs13
1 files changed, 12 insertions, 1 deletions
diff --git a/compiler/GHC/Unit/Module/Deps.hs b/compiler/GHC/Unit/Module/Deps.hs
index c3c3340f41..73412c002c 100644
--- a/compiler/GHC/Unit/Module/Deps.hs
+++ b/compiler/GHC/Unit/Module/Deps.hs
@@ -8,6 +8,7 @@ module GHC.Unit.Module.Deps
, dep_sig_mods
, dep_trusted_pkgs
, dep_orphs
+ , dep_plugin_pkgs
, dep_finsts
, dep_boot_mods
, dep_orphs_update
@@ -56,6 +57,9 @@ data Dependencies = Deps
-- ^ All packages directly imported by this module
-- I.e. packages to which this module's direct imports belong.
+ , dep_plugin_pkgs :: Set UnitId
+ -- ^ All units needed for plugins
+
------------------------------------
-- Transitive information below here
@@ -125,7 +129,7 @@ mkDependencies home_unit mod imports plugin_mods =
-- We must also remove self-references from imp_orphs. See
-- Note [Module self-dependency]
- direct_pkgs = foldr Set.insert (imp_dep_direct_pkgs imports) plugin_units
+ direct_pkgs = imp_dep_direct_pkgs imports
-- Set the packages required to be Safe according to Safe Haskell.
-- See Note [Tracking Trust Transitively] in GHC.Rename.Names
@@ -139,6 +143,7 @@ mkDependencies home_unit mod imports plugin_mods =
in Deps { dep_direct_mods = direct_mods
, dep_direct_pkgs = direct_pkgs
+ , dep_plugin_pkgs = plugin_units
, dep_sig_mods = sort sig_mods
, dep_trusted_pkgs = trust_pkgs
, dep_boot_mods = source_mods
@@ -164,6 +169,7 @@ dep_finsts_update deps f = do
instance Binary Dependencies where
put_ bh deps = do put_ bh (dep_direct_mods deps)
put_ bh (dep_direct_pkgs deps)
+ put_ bh (dep_plugin_pkgs deps)
put_ bh (dep_trusted_pkgs deps)
put_ bh (dep_sig_mods deps)
put_ bh (dep_boot_mods deps)
@@ -172,6 +178,7 @@ instance Binary Dependencies where
get bh = do dms <- get bh
dps <- get bh
+ plugin_pkgs <- get bh
tps <- get bh
hsigms <- get bh
sms <- get bh
@@ -179,6 +186,7 @@ instance Binary Dependencies where
fis <- get bh
return (Deps { dep_direct_mods = dms
, dep_direct_pkgs = dps
+ , dep_plugin_pkgs = plugin_pkgs
, dep_sig_mods = hsigms
, dep_boot_mods = sms
, dep_trusted_pkgs = tps
@@ -189,6 +197,7 @@ noDependencies :: Dependencies
noDependencies = Deps
{ dep_direct_mods = Set.empty
, dep_direct_pkgs = Set.empty
+ , dep_plugin_pkgs = Set.empty
, dep_sig_mods = []
, dep_boot_mods = Set.empty
, dep_trusted_pkgs = Set.empty
@@ -200,6 +209,7 @@ noDependencies = Deps
pprDeps :: UnitState -> Dependencies -> SDoc
pprDeps unit_state (Deps { dep_direct_mods = dmods
, dep_boot_mods = bmods
+ , dep_plugin_pkgs = plgns
, dep_orphs = orphs
, dep_direct_pkgs = pkgs
, dep_trusted_pkgs = tps
@@ -209,6 +219,7 @@ pprDeps unit_state (Deps { dep_direct_mods = dmods
vcat [text "direct module dependencies:" <+> ppr_set ppr_mod dmods,
text "boot module dependencies:" <+> ppr_set ppr bmods,
text "direct package dependencies:" <+> ppr_set ppr pkgs,
+ text "plugin package dependencies:" <+> ppr_set ppr plgns,
if null tps
then empty
else text "trusted package dependencies:" <+> ppr_set ppr tps,