summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2009-03-11 10:20:07 +0000
committerSimon Marlow <marlowsd@gmail.com>2009-03-11 10:20:07 +0000
commit21c190f4ace4e12304a17c8169b75213fb6ea1b4 (patch)
tree9b501a34e2bacef22a0d7978ab62b0a59ec240ef
parent9c9071e8ceecfd955ddfc4ad18f9ceb53dd85977 (diff)
downloadhaskell-21c190f4ace4e12304a17c8169b75213fb6ea1b4.tar.gz
FIX #2976: fix buggy implementation of shadowing in GHC.getBindings
-rw-r--r--compiler/main/GHC.hs12
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 ->