X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fmain%2FHscTypes.lhs;h=1b34ec0c4366e568f54aac696bf7b394789afcb2;hb=99073d876ea762016683fb0b22b9d343ff864eb4;hp=ee3c9e2a2a719e16fa237cc37297c627bc982b49;hpb=323fee1e8cbabe604496a1b92c6de0e98ca037e4;p=ghc-hetmet.git diff --git a/ghc/compiler/main/HscTypes.lhs b/ghc/compiler/main/HscTypes.lhs index ee3c9e2..1b34ec0 100644 --- a/ghc/compiler/main/HscTypes.lhs +++ b/ghc/compiler/main/HscTypes.lhs @@ -9,7 +9,8 @@ module HscTypes ( ModDetails(..), ModIface(..), GlobalSymbolTable, HomeSymbolTable, PackageSymbolTable, - HomeIfaceTable, PackageIfaceTable, + HomeIfaceTable, PackageIfaceTable, + lookupTable, IfaceDecls(..), @@ -19,8 +20,6 @@ module HscTypes ( TypeEnv, extendTypeEnv, lookupTypeEnv, - lookupFixityEnv, - WhetherHasOrphans, ImportVersion, WhatsImported(..), PersistentRenamerState(..), IsBootInterface, Avails, DeclsMap, IfaceInsts, IfaceRules, GatedDecl, @@ -68,6 +67,7 @@ import Type ( Type ) import FiniteMap ( FiniteMap, emptyFM, addToFM, lookupFM, foldFM ) import Bag ( Bag ) +import Maybes ( seqMaybe ) import UniqFM ( UniqFM ) import Outputable import SrcLoc ( SrcLoc, isGoodSrcLoc ) @@ -118,7 +118,10 @@ data ModIface mi_version :: VersionInfo, -- Module version number mi_orphan :: WhetherHasOrphans, -- Whether this module has orphans - mi_usages :: [ImportVersion Name], -- Usages; kept sorted + mi_usages :: [ImportVersion Name], -- Usages; kept sorted so that it's easy + -- to decide whether to write a new iface file + -- (changing usages doesn't affect the version of + -- this module) mi_exports :: Avails, -- What it exports -- Kept sorted by (mod,occ), @@ -182,11 +185,12 @@ type GlobalSymbolTable = SymbolTable -- Domain = all modules Simple lookups in the symbol table. \begin{code} -lookupFixityEnv :: IfaceTable -> Name -> Maybe Fixity -lookupFixityEnv tbl name - = case lookupModuleEnv tbl (nameModule name) of - Nothing -> Nothing - Just details -> lookupNameEnv (mi_fixities details) name +lookupTable :: ModuleEnv a -> ModuleEnv a -> Name -> Maybe a +-- We often have two Symbol- or IfaceTables, and want to do a lookup +lookupTable ht pt name + = lookupModuleEnv ht mod `seqMaybe` lookupModuleEnv pt mod + where + mod = nameModule name \end{code}