summaryrefslogtreecommitdiff
path: root/compiler/GHC/Driver
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/GHC/Driver')
-rw-r--r--compiler/GHC/Driver/Backpack.hs13
-rw-r--r--compiler/GHC/Driver/Make.hs18
-rw-r--r--compiler/GHC/Driver/MakeFile.hs4
-rw-r--r--compiler/GHC/Driver/Pipeline/Execute.hs20
4 files changed, 34 insertions, 21 deletions
diff --git a/compiler/GHC/Driver/Backpack.hs b/compiler/GHC/Driver/Backpack.hs
index 57a7d1909f..8167402525 100644
--- a/compiler/GHC/Driver/Backpack.hs
+++ b/compiler/GHC/Driver/Backpack.hs
@@ -38,6 +38,8 @@ import GHC.Parser.Header
import GHC.Parser.Lexer
import GHC.Parser.Annotation
+import GHC.Rename.Names
+
import GHC hiding (Failed, Succeeded)
import GHC.Tc.Utils.Monad
import GHC.Iface.Recomp
@@ -45,7 +47,6 @@ import GHC.Builtin.Names
import GHC.Types.SrcLoc
import GHC.Types.SourceError
-import GHC.Types.SourceText
import GHC.Types.SourceFile
import GHC.Types.Unique.FM
import GHC.Types.Unique.DFM
@@ -781,7 +782,7 @@ summariseRequirement pn mod_name = do
ms_iface_date = hi_timestamp,
ms_hie_date = hie_timestamp,
ms_srcimps = [],
- ms_textual_imps = extra_sig_imports,
+ ms_textual_imps = ((,) NoPkgQual . noLoc) <$> extra_sig_imports,
ms_ghc_prim_import = False,
ms_parsed_mod = Just (HsParsedModule {
hpm_module = L loc (HsModule {
@@ -874,7 +875,9 @@ hsModuleToModSummary pn hsc_src modname
implicit_prelude = xopt LangExt.ImplicitPrelude dflags
implicit_imports = mkPrelImports modname loc
implicit_prelude imps
- convImport (L _ i) = (fmap sl_fs (ideclPkgQual i), ideclName i)
+
+ rn_pkg_qual = renameRawPkgQual (hsc_unit_env hsc_env)
+ convImport (L _ i) = (rn_pkg_qual (ideclPkgQual i), ideclName i)
extra_sig_imports <- liftIO $ findExtraSigImports hsc_env hsc_src modname
@@ -903,8 +906,8 @@ hsModuleToModSummary pn hsc_src modname
-- We have to do something special here:
-- due to merging, requirements may end up with
-- extra imports
- ++ extra_sig_imports
- ++ ((,) Nothing . noLoc <$> implicit_sigs),
+ ++ ((,) NoPkgQual . noLoc <$> extra_sig_imports)
+ ++ ((,) NoPkgQual . noLoc <$> implicit_sigs),
-- This is our hack to get the parse tree to the right spot
ms_parsed_mod = Just (HsParsedModule {
hpm_module = hsmod,
diff --git a/compiler/GHC/Driver/Make.hs b/compiler/GHC/Driver/Make.hs
index 46ddd210c8..2f88539421 100644
--- a/compiler/GHC/Driver/Make.hs
+++ b/compiler/GHC/Driver/Make.hs
@@ -108,6 +108,7 @@ import GHC.Types.Unique.DSet
import GHC.Types.Unique.Set
import GHC.Types.Name
import GHC.Types.Name.Env
+import GHC.Types.PkgQual
import GHC.Unit
import GHC.Unit.Finder
@@ -149,6 +150,7 @@ import GHC.Driver.Env.KnotVars
import Control.Concurrent.STM
import Control.Monad.Trans.Maybe
import GHC.Runtime.Loader
+import GHC.Rename.Names
-- -----------------------------------------------------------------------------
@@ -1916,7 +1918,7 @@ summariseModule hsc_env old_summary_map is_boot (L loc wanted_mod)
old_summary location
find_it = do
- found <- findImportedModule fc fopts units home_unit wanted_mod Nothing
+ found <- findImportedModule fc fopts units home_unit wanted_mod NoPkgQual
case found of
Found location mod
| isJust (ml_hs_file location) ->
@@ -2016,8 +2018,8 @@ makeNewModSummary hsc_env MakeNewModSummary{..} = do
, ms_srcimps = pi_srcimps
, ms_ghc_prim_import = pi_ghc_prim_import
, ms_textual_imps =
- extra_sig_imports ++
- ((,) Nothing . noLoc <$> implicit_sigs) ++
+ ((,) NoPkgQual . noLoc <$> extra_sig_imports) ++
+ ((,) NoPkgQual . noLoc <$> implicit_sigs) ++
pi_theimps
, ms_hs_hash = nms_src_hash
, ms_iface_date = hi_timestamp
@@ -2031,8 +2033,8 @@ makeNewModSummary hsc_env MakeNewModSummary{..} = do
data PreprocessedImports
= PreprocessedImports
{ pi_local_dflags :: DynFlags
- , pi_srcimps :: [(Maybe FastString, Located ModuleName)]
- , pi_theimps :: [(Maybe FastString, Located ModuleName)]
+ , pi_srcimps :: [(PkgQual, Located ModuleName)]
+ , pi_theimps :: [(PkgQual, Located ModuleName)]
, pi_ghc_prim_import :: Bool
, pi_hspp_fn :: FilePath
, pi_hspp_buf :: StringBuffer
@@ -2053,12 +2055,16 @@ getPreprocessedImports hsc_env src_fn mb_phase maybe_buf = do
(pi_local_dflags, pi_hspp_fn)
<- ExceptT $ preprocess hsc_env src_fn (fst <$> maybe_buf) mb_phase
pi_hspp_buf <- liftIO $ hGetStringBuffer pi_hspp_fn
- (pi_srcimps, pi_theimps, pi_ghc_prim_import, L pi_mod_name_loc pi_mod_name)
+ (pi_srcimps', pi_theimps', pi_ghc_prim_import, L pi_mod_name_loc pi_mod_name)
<- ExceptT $ do
let imp_prelude = xopt LangExt.ImplicitPrelude pi_local_dflags
popts = initParserOpts pi_local_dflags
mimps <- getImports popts imp_prelude pi_hspp_buf pi_hspp_fn src_fn
return (first (mkMessages . fmap mkDriverPsHeaderMessage . getMessages) mimps)
+ let rn_pkg_qual = renameRawPkgQual (hsc_unit_env hsc_env)
+ let rn_imps = fmap (first rn_pkg_qual)
+ let pi_srcimps = rn_imps pi_srcimps'
+ let pi_theimps = rn_imps pi_theimps'
return PreprocessedImports {..}
diff --git a/compiler/GHC/Driver/MakeFile.hs b/compiler/GHC/Driver/MakeFile.hs
index 382d8d6b43..9cf23af831 100644
--- a/compiler/GHC/Driver/MakeFile.hs
+++ b/compiler/GHC/Driver/MakeFile.hs
@@ -30,8 +30,8 @@ import GHC.Utils.Panic
import GHC.Utils.Panic.Plain
import GHC.Types.SourceError
import GHC.Types.SrcLoc
+import GHC.Types.PkgQual
import Data.List (partition)
-import GHC.Data.FastString
import GHC.Utils.TmpFs
import GHC.Iface.Load (cannotFindModule)
@@ -284,7 +284,7 @@ processDeps dflags hsc_env excl_mods root hdl (AcyclicSCC (ModuleNode (ExtendedM
findDependency :: HscEnv
-> SrcSpan
- -> Maybe FastString -- package qualifier, if any
+ -> PkgQual -- package qualifier, if any
-> ModuleName -- Imported module
-> IsBootInterface -- Source import
-> Bool -- Record dependency on package modules
diff --git a/compiler/GHC/Driver/Pipeline/Execute.hs b/compiler/GHC/Driver/Pipeline/Execute.hs
index fcc6372509..25aac65d85 100644
--- a/compiler/GHC/Driver/Pipeline/Execute.hs
+++ b/compiler/GHC/Driver/Pipeline/Execute.hs
@@ -82,6 +82,8 @@ import GHC.Utils.Panic
import GHC.Unit.Module.Env
import GHC.Driver.Env.KnotVars
import GHC.Driver.Config.Finder
+import GHC.Rename.Names
+import Data.Bifunctor (first)
newtype HookedUse a = HookedUse { runHookedUse :: (Hooks, PhaseHook) -> IO a }
deriving (Functor, Applicative, Monad, MonadIO, MonadThrow, MonadCatch) via (ReaderT (Hooks, PhaseHook) IO)
@@ -636,14 +638,16 @@ runHscPhase pipe_env hsc_env0 input_fn src_flavour = do
-- gather the imports and module name
(hspp_buf,mod_name,imps,src_imps, ghc_prim_imp) <- do
- buf <- hGetStringBuffer input_fn
- let imp_prelude = xopt LangExt.ImplicitPrelude dflags
- popts = initParserOpts dflags
- eimps <- getImports popts imp_prelude buf input_fn (basename <.> suff)
- case eimps of
- Left errs -> throwErrors (GhcPsMessage <$> errs)
- Right (src_imps,imps, ghc_prim_imp, L _ mod_name) -> return
- (Just buf, mod_name, imps, src_imps, ghc_prim_imp)
+ buf <- hGetStringBuffer input_fn
+ let imp_prelude = xopt LangExt.ImplicitPrelude dflags
+ popts = initParserOpts dflags
+ rn_pkg_qual = renameRawPkgQual (hsc_unit_env hsc_env)
+ rn_imps = fmap (first rn_pkg_qual)
+ eimps <- getImports popts imp_prelude buf input_fn (basename <.> suff)
+ case eimps of
+ Left errs -> throwErrors (GhcPsMessage <$> errs)
+ Right (src_imps,imps, ghc_prim_imp, L _ mod_name) -> return
+ (Just buf, mod_name, rn_imps imps, rn_imps src_imps, ghc_prim_imp)
-- Take -o into account if present
-- Very like -ohi, but we must *only* do this if we aren't linking