summaryrefslogtreecommitdiff
path: root/ghc/compiler/rename/RnEnv.lhs
diff options
context:
space:
mode:
authorsimonmar <unknown>2001-01-18 11:16:08 +0000
committersimonmar <unknown>2001-01-18 11:16:08 +0000
commit95d8fef4a0af5cd0993986a98a7ec219c9aa0cd6 (patch)
tree747e400b6c59d53544939f9fc0766552eb2580d9 /ghc/compiler/rename/RnEnv.lhs
parentf81c9189fccc07c33506de8480648f28f893d882 (diff)
downloadhaskell-95d8fef4a0af5cd0993986a98a7ec219c9aa0cd6.tar.gz
[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.
Diffstat (limited to 'ghc/compiler/rename/RnEnv.lhs')
-rw-r--r--ghc/compiler/rename/RnEnv.lhs14
1 files changed, 9 insertions, 5 deletions
diff --git a/ghc/compiler/rename/RnEnv.lhs b/ghc/compiler/rename/RnEnv.lhs
index 9a7e56d987..45f2184b31 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}