diff options
author | Adam Gundry <adam@well-typed.com> | 2014-11-11 11:25:50 +0000 |
---|---|---|
committer | Adam Gundry <adam@well-typed.com> | 2014-11-11 11:25:50 +0000 |
commit | be95bd9179ea073dae4376a6ac29130a4edc9e00 (patch) | |
tree | be93a73a9c4d617c37b08864cd64eba92f25d80e /compiler/main/DynamicLoading.hs | |
parent | ce850aaba222c44d983cc13df21ca3365b2fdd19 (diff) | |
download | haskell-wip/tc-plugins.tar.gz |
Make TcPlugin part of Plugin so we can eliminate -ftc-pluginwip/tc-plugins
Diffstat (limited to 'compiler/main/DynamicLoading.hs')
-rw-r--r-- | compiler/main/DynamicLoading.hs | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/compiler/main/DynamicLoading.hs b/compiler/main/DynamicLoading.hs index c89b544826..87b97f2839 100644 --- a/compiler/main/DynamicLoading.hs +++ b/compiler/main/DynamicLoading.hs @@ -33,7 +33,7 @@ import RdrName ( RdrName, Provenance(..), ImportSpec(..), ImpDeclSpec(. import OccName ( mkVarOcc ) import RnNames ( gresFromAvails ) import DynFlags -import Plugins ( Plugin ) +import Plugins ( Plugin, CommandLineOption ) import PrelNames ( pluginTyConName ) import HscTypes @@ -55,12 +55,18 @@ import Data.Maybe ( mapMaybe ) import GHC.Exts ( unsafeCoerce# ) -loadPlugins :: HscEnv -> IO [(ModuleName, Plugin)] +loadPlugins :: HscEnv -> IO [(ModuleName, Plugin, [CommandLineOption])] loadPlugins hsc_env - = do { let to_load = [ m | (m,PluginCore2Core) <- - pluginModNames (hsc_dflags hsc_env) ] - ; plugins <- mapM (loadPlugin hsc_env) to_load - ; return $ to_load `zip` plugins } + = do { plugins <- mapM (loadPlugin hsc_env) to_load + ; return $ map attachOptions $ to_load `zip` plugins } + where + dflags = hsc_dflags hsc_env + to_load = pluginModNames dflags + + attachOptions (mod_nm, plug) = (mod_nm, plug, options) + where + options = [ option | (opt_mod_nm, option) <- pluginModNameOpts dflags + , opt_mod_nm == mod_nm ] loadPlugin :: HscEnv -> ModuleName -> IO Plugin loadPlugin hsc_env mod_name |