diff options
author | Sylvain Henry <sylvain@haskus.fr> | 2020-11-03 12:04:53 +0100 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2020-11-21 01:14:09 -0500 |
commit | ecfd0278cb811c93853c176fe5df60222d1a8fb5 (patch) | |
tree | 7fc212d973a0d9e5e67e13011bf30907b1458228 /compiler/GHC/Iface | |
parent | 53ad67eacacde8fde452f1a323d5886183375182 (diff) | |
download | haskell-ecfd0278cb811c93853c176fe5df60222d1a8fb5.tar.gz |
Move Plugins into HscEnv (#17957)
Loaded plugins have nothing to do in DynFlags so this patch moves them
into HscEnv (session state).
"DynFlags plugins" become "Driver plugins" to still be able to register
static plugins.
Bump haddock submodule
Diffstat (limited to 'compiler/GHC/Iface')
-rw-r--r-- | compiler/GHC/Iface/Load.hs | 3 | ||||
-rw-r--r-- | compiler/GHC/Iface/Make.hs | 2 | ||||
-rw-r--r-- | compiler/GHC/Iface/Recomp.hs | 8 |
3 files changed, 6 insertions, 7 deletions
diff --git a/compiler/GHC/Iface/Load.hs b/compiler/GHC/Iface/Load.hs index 308119327c..4fb775db53 100644 --- a/compiler/GHC/Iface/Load.hs +++ b/compiler/GHC/Iface/Load.hs @@ -433,7 +433,6 @@ loadInterface doc_str mod from ; traceIf (text "Considering whether to load" <+> ppr mod <+> ppr from) -- Check whether we have the interface already - ; dflags <- getDynFlags ; hsc_env <- getTopEnv ; let home_unit = hsc_home_unit hsc_env ; case lookupIfaceByModule hpt (eps_PIT eps) mod of { @@ -551,7 +550,7 @@ loadInterface doc_str mod from ; -- invoke plugins with *full* interface, not final_iface, to ensure -- that plugins have access to declarations, etc. - res <- withPlugins dflags (\p -> interfaceLoadAction p) iface + res <- withPlugins hsc_env (\p -> interfaceLoadAction p) iface ; return (Succeeded res) }}}} diff --git a/compiler/GHC/Iface/Make.hs b/compiler/GHC/Iface/Make.hs index f9ad42a3c9..f333525e4b 100644 --- a/compiler/GHC/Iface/Make.hs +++ b/compiler/GHC/Iface/Make.hs @@ -193,7 +193,7 @@ mkIfaceTc hsc_env safe_mode mod_details } = do let used_names = mkUsedNames tc_result - let pluginModules = map lpModule (cachedPlugins (hsc_dflags hsc_env)) + let pluginModules = map lpModule (hsc_plugins hsc_env) let home_unit = hsc_home_unit hsc_env deps <- mkDependencies (homeUnitId home_unit) (map mi_module pluginModules) tc_result diff --git a/compiler/GHC/Iface/Recomp.hs b/compiler/GHC/Iface/Recomp.hs index a123d24fba..fe0f4439f5 100644 --- a/compiler/GHC/Iface/Recomp.hs +++ b/compiler/GHC/Iface/Recomp.hs @@ -276,16 +276,16 @@ checkVersions hsc_env mod_summary iface -- | Check if any plugins are requesting recompilation checkPlugins :: HscEnv -> ModIface -> IfG RecompileRequired -checkPlugins hsc iface = liftIO $ do - new_fingerprint <- fingerprintPlugins hsc +checkPlugins hsc_env iface = liftIO $ do + new_fingerprint <- fingerprintPlugins hsc_env let old_fingerprint = mi_plugin_hash (mi_final_exts iface) - pr <- mconcat <$> mapM pluginRecompile' (plugins (hsc_dflags hsc)) + pr <- mconcat <$> mapM pluginRecompile' (plugins hsc_env) return $ pluginRecompileToRecompileRequired old_fingerprint new_fingerprint pr fingerprintPlugins :: HscEnv -> IO Fingerprint fingerprintPlugins hsc_env = - fingerprintPlugins' $ plugins (hsc_dflags hsc_env) + fingerprintPlugins' $ plugins hsc_env fingerprintPlugins' :: [PluginWithArgs] -> IO Fingerprint fingerprintPlugins' plugins = do |