summaryrefslogtreecommitdiff
path: root/ghc/compiler/main/GHC.hs
diff options
context:
space:
mode:
authorkrasimir <unknown>2005-05-16 13:21:11 +0000
committerkrasimir <unknown>2005-05-16 13:21:11 +0000
commitafdca09fe9adce721be8f42fd40b5838b3243b8c (patch)
tree764b8552c0b3fb7ff9451bbcc42a64599fad0f9f /ghc/compiler/main/GHC.hs
parent94cc5f40a24dc5ada1e9b358868ce7f43f440a47 (diff)
downloadhaskell-afdca09fe9adce721be8f42fd40b5838b3243b8c.tar.gz
[project @ 2005-05-16 13:21:11 by krasimir]
added modInfoIsExportedName & modInfoLookupName functions
Diffstat (limited to 'ghc/compiler/main/GHC.hs')
-rw-r--r--ghc/compiler/main/GHC.hs15
1 files changed, 14 insertions, 1 deletions
diff --git a/ghc/compiler/main/GHC.hs b/ghc/compiler/main/GHC.hs
index 8f38dd1ace..ab55fcc6a8 100644
--- a/ghc/compiler/main/GHC.hs
+++ b/ghc/compiler/main/GHC.hs
@@ -51,6 +51,8 @@ module GHC (
modInfoTopLevelScope,
modInfoPrintUnqualified,
modInfoExports,
+ modInfoIsExportedName,
+ modInfoLookupName,
lookupGlobalName,
-- * Interactive evaluation
@@ -149,7 +151,7 @@ import Bag ( unitBag, emptyBag )
#endif
import Packages ( initPackages )
-import NameSet ( NameSet, nameSetToList )
+import NameSet ( NameSet, nameSetToList, elemNameSet )
import RdrName ( GlobalRdrEnv, GlobalRdrElt(..), RdrName, gre_name,
globalRdrEnvElts )
import HsSyn
@@ -1607,9 +1609,20 @@ modInfoTopLevelScope minf
modInfoExports :: ModuleInfo -> [Name]
modInfoExports minf = nameSetToList $! minf_exports minf
+modInfoIsExportedName :: ModuleInfo -> Name -> Bool
+modInfoIsExportedName minf name = elemNameSet name (minf_exports minf)
+
modInfoPrintUnqualified :: ModuleInfo -> Maybe PrintUnqualified
modInfoPrintUnqualified minf = fmap unQualInScope (minf_rdr_env minf)
+modInfoLookupName :: Session -> ModuleInfo -> Name -> IO (Maybe TyThing)
+modInfoLookupName s minf name = withSession s $ \hsc_env -> do
+ case lookupTypeEnv (minf_type_env minf) name of
+ Just tyThing -> return (Just tyThing)
+ Nothing -> do
+ eps <- readIORef (hsc_EPS hsc_env)
+ return $! lookupType (hsc_HPT hsc_env) (eps_PTE eps) name
+
isDictonaryId :: Id -> Bool
isDictonaryId id
= case tcSplitSigmaTy (idType id) of { (tvs, theta, tau) -> isDictTy tau }