From 95d8fef4a0af5cd0993986a98a7ec219c9aa0cd6 Mon Sep 17 00:00:00 2001 From: simonmar Date: Thu, 18 Jan 2001 11:16:08 +0000 Subject: [PATCH] [project @ 2001-01-18 11:16:08 by simonmar] When constructing a GlobalRdrEnv from an interface file for use from the GHCi command line, don't export the qualified names: a module which happens to export f from module M shouldn't bring into scope the qualified identifier M.f when we use it from the command line. --- ghc/compiler/rename/RnEnv.lhs | 14 +++++++++----- ghc/compiler/rename/RnNames.lhs | 8 ++++---- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/ghc/compiler/rename/RnEnv.lhs b/ghc/compiler/rename/RnEnv.lhs index 9a7e56d..45f2184 100644 --- a/ghc/compiler/rename/RnEnv.lhs +++ b/ghc/compiler/rename/RnEnv.lhs @@ -493,13 +493,14 @@ checkDupNames doc_str rdr_names_w_loc \begin{code} mkGlobalRdrEnv :: ModuleName -- Imported module (after doing the "as M" name change) -> Bool -- True <=> want unqualified import + -> Bool -- True <=> want qualified import -> [AvailInfo] -- What's to be hidden (but only the unqualified -- version is hidden) -> (Name -> Provenance) -> Avails -- Whats imported and how -> GlobalRdrEnv -mkGlobalRdrEnv this_mod unqual_imp hides mk_provenance avails +mkGlobalRdrEnv this_mod unqual_imp qual_imp hides mk_provenance avails = gbl_env2 where -- Make the name environment. We're talking about a @@ -517,11 +518,14 @@ mkGlobalRdrEnv this_mod unqual_imp hides mk_provenance avails add_avail env avail = foldl add_name env (availNames avail) add_name env name - | unqual_imp = env2 - | otherwise = env1 + | qual_imp && unqual_imp = env3 + | unqual_imp = env2 + | qual_imp = env1 + | otherwise = env where env1 = addOneToGlobalRdrEnv env (mkRdrQual this_mod occ) (name,prov) - env2 = addOneToGlobalRdrEnv env1 (mkRdrUnqual occ) (name,prov) + env2 = addOneToGlobalRdrEnv env (mkRdrUnqual occ) (name,prov) + env3 = addOneToGlobalRdrEnv env1 (mkRdrUnqual occ) (name,prov) occ = nameOccName name prov = mk_provenance name @@ -537,7 +541,7 @@ mkIfaceGlobalRdrEnv :: [(ModuleName,Avails)] -> GlobalRdrEnv mkIfaceGlobalRdrEnv m_avails = foldl add emptyRdrEnv m_avails where - add env (mod,avails) = plusGlobalRdrEnv env (mkGlobalRdrEnv mod True [] (\n -> LocalDef) avails) + add env (mod,avails) = plusGlobalRdrEnv env (mkGlobalRdrEnv mod True False [] (\n -> LocalDef) avails) \end{code} \begin{code} diff --git a/ghc/compiler/rename/RnNames.lhs b/ghc/compiler/rename/RnNames.lhs index 4cc04df..750ffb0 100644 --- a/ghc/compiler/rename/RnNames.lhs +++ b/ghc/compiler/rename/RnNames.lhs @@ -164,8 +164,8 @@ importsFromImportDecl this_mod_name (ImportDecl imp_mod_name from qual_only as_m Just another_name -> another_name mk_prov name = NonLocalDef (UserImport imp_mod iloc (name `elemNameSet` explicits)) - gbl_env = mkGlobalRdrEnv qual_mod unqual_imp hides mk_prov filtered_avails - exports = mkExportAvails qual_mod unqual_imp gbl_env filtered_avails + gbl_env = mkGlobalRdrEnv qual_mod unqual_imp True hides mk_prov filtered_avails + exports = mkExportAvails qual_mod unqual_imp gbl_env filtered_avails in returnRn (gbl_env, exports) \end{code} @@ -195,8 +195,8 @@ importsFromLocalDecls this_mod decls unqual_imp = True -- Want unqualified names mk_prov n = LocalDef -- Provenance is local hides = [] -- Hide nothing - gbl_env = mkGlobalRdrEnv mod_name unqual_imp hides mk_prov avails - exports = mkExportAvails mod_name unqual_imp gbl_env avails + gbl_env = mkGlobalRdrEnv mod_name unqual_imp True hides mk_prov avails + exports = mkExportAvails mod_name unqual_imp gbl_env avails in returnRn (gbl_env, exports) -- 1.7.10.4