diff options
author | Simon Marlow <marlowsd@gmail.com> | 2009-03-11 10:20:07 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2009-03-11 10:20:07 +0000 |
commit | 21c190f4ace4e12304a17c8169b75213fb6ea1b4 (patch) | |
tree | 9b501a34e2bacef22a0d7978ab62b0a59ec240ef | |
parent | 9c9071e8ceecfd955ddfc4ad18f9ceb53dd85977 (diff) | |
download | haskell-21c190f4ace4e12304a17c8169b75213fb6ea1b4.tar.gz |
FIX #2976: fix buggy implementation of shadowing in GHC.getBindings
-rw-r--r-- | compiler/main/GHC.hs | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/compiler/main/GHC.hs b/compiler/main/GHC.hs index 00d5cbea03..72806cbf94 100644 --- a/compiler/main/GHC.hs +++ b/compiler/main/GHC.hs @@ -289,8 +289,6 @@ import Annotations import Module import LazyUniqFM import qualified UniqFM as UFM -import UniqSet -import Unique import FiniteMap import Panic import Digraph @@ -2376,14 +2374,10 @@ getBindings = withSession $ \hsc_env -> -- we have to implement the shadowing behaviour of ic_tmp_ids here -- (see InteractiveContext) and the quickest way is to use an OccEnv. let - tmp_ids = ic_tmp_ids (hsc_IC hsc_env) - filtered = foldr f (const []) tmp_ids emptyUniqSet - f id rest set - | uniq `elementOfUniqSet` set = rest set - | otherwise = AnId id : rest (addOneToUniqSet set uniq) - where uniq = getUnique (nameOccName (idName id)) + occ_env = mkOccEnv [ (nameOccName (idName id), AnId id) + | id <- ic_tmp_ids (hsc_IC hsc_env) ] in - return filtered + return (occEnvElts occ_env) getPrintUnqual :: GhcMonad m => m PrintUnqualified getPrintUnqual = withSession $ \hsc_env -> |