import Type ( Type )
import PrelNames ( iNTERACTIVE )
import StringBuffer ( stringToStringBuffer )
+import Name ( Name )
#endif
import HsSyn
import Lex ( ParseResult(..), ExtFlags(..), mkPState )
import SrcLoc ( mkSrcLoc )
import TcRnDriver ( checkOldIface, tcRnModule, tcRnExtCore, tcRnIface )
+import RnEnv ( extendOrigNameCache )
import Rules ( emptyRuleBase )
-import PrelInfo ( wiredInThingEnv, wiredInThings )
+import PrelInfo ( wiredInThingEnv, wiredInThings, knownKeyNames )
import PrelRules ( builtinRules )
-import PrelNames ( knownKeyNames )
import MkIface ( mkIface )
import InstEnv ( emptyInstEnv )
import Desugar
import CodeGen ( codeGen )
import CodeOutput ( codeOutput )
-import Module ( ModuleName, moduleName )
+import Module ( emptyModuleEnv )
import CmdLineOpts
import DriverPhases ( isExtCore_file )
import ErrUtils ( dumpIfSet_dyn, showPass, printError )
import MkExternalCore ( emitExternalCore )
import ParserCore
import ParserCoreUtils
-import FiniteMap ( FiniteMap, plusFM, emptyFM, addToFM )
-import OccName ( OccName )
-import Name ( Name, nameModule, nameOccName, getName )
+import FiniteMap ( emptyFM )
+import Name ( nameModule, getName )
import NameEnv ( emptyNameEnv, mkNameEnv )
import NameSet ( emptyNameSet )
import Module ( Module, ModLocation(..), showModMsg )
eps_insts = (emptyBag, 0),
eps_inst_gates = emptyNameSet,
eps_rules = foldr add_rule (emptyBag, 0) builtinRules,
- eps_imp_mods = emptyFM,
eps_PIT = emptyPackageIfaceTable,
eps_PTE = wiredInThingEnv,
rdr_name = nameRdrName name
gate_fn vis_fn = vis_fn name -- Load the rule whenever name is visible
-initOrigNames :: FiniteMap (ModuleName,OccName) Name
+initOrigNames :: OrigNameCache
initOrigNames
- = grab knownKeyNames `plusFM` grab (map getName wiredInThings)
- where
- grab names = foldl add emptyFM names
- add env name
- = addToFM env (moduleName (nameModule name), nameOccName name) name
+ = insert knownKeyNames $
+ insert (map getName wiredInThings) $
+ emptyModuleEnv
+ where
+ insert names env = foldl extendOrigNameCache env names
\end{code}