-initPersistentCompilerState :: IO PersistentCompilerState
-initPersistentCompilerState
- = do nc <- initNameCache
- return (
- PCS { pcs_EPS = initExternalPackageState,
- pcs_nc = nc })
-
-initNameCache :: IO NameCache
- = do us <- mkSplitUniqSupply 'r'
- return (NameCache { nsUniqs = us,
- nsNames = initOrigNames,
- nsIPs = emptyFM })
-
-initExternalPackageState :: ExternalPackageState
-initExternalPackageState
- = EPS {
- eps_decls = (emptyNameEnv, 0),
- eps_insts = (emptyBag, 0),
- eps_inst_gates = emptyNameSet,
- eps_rules = foldr add_rule (emptyBag, 0) builtinRules,
-
- eps_PIT = emptyPackageIfaceTable,
- eps_PTE = wiredInThingEnv,
- eps_inst_env = emptyInstEnv,
- eps_rule_base = emptyRuleBase }
-
- where
- add_rule (name,rule) (rules, n_slurped)
- = (gated_decl `consBag` rules, n_slurped)
- where
- gated_decl = (gate_fn, (mod, IfaceRuleOut rdr_name rule))
- mod = nameModule name
- rdr_name = nameRdrName name
- gate_fn vis_fn = vis_fn name -- Load the rule whenever name is visible
-
-initOrigNames :: OrigNameCache
-initOrigNames
- = insert knownKeyNames $
- insert (map getName wiredInThings) $
- emptyModuleEnv