import IdInfo
import {- Kind parts of -} Type
import BasicTypes
+import Foreign.Ptr( Ptr )
#endif
import FastString
import Control.Monad ( unless )
import Data.Maybe ( isJust )
-import Foreign.Ptr ( Ptr )
\end{code}
; want_instances :: ModuleName -> Bool
; want_instances mod = mod `elemUFM` dep_mods
&& mod /= moduleName this_mod
- ; home_insts = hptInstances hsc_env want_instances
+ ; (home_insts, home_fam_insts) = hptInstances hsc_env
+ want_instances
} ;
-- Record boot-file info in the EPS, so that it's
-- Update the gbl env
; updGblEnv ( \ gbl ->
- gbl { tcg_rdr_env = plusOccEnv (tcg_rdr_env gbl) rdr_env,
- tcg_imports = tcg_imports gbl `plusImportAvails` imports,
- tcg_rn_imports = fmap (const rn_imports) (tcg_rn_imports gbl),
- tcg_inst_env = extendInstEnvList (tcg_inst_env gbl) home_insts
- }) $ do {
+ gbl {
+ tcg_rdr_env = plusOccEnv (tcg_rdr_env gbl) rdr_env,
+ tcg_imports = tcg_imports gbl `plusImportAvails` imports,
+ tcg_rn_imports = fmap (const rn_imports) (tcg_rn_imports gbl),
+ tcg_inst_env = extendInstEnvList (tcg_inst_env gbl) home_insts,
+ tcg_fam_inst_env = extendFamInstEnvList (tcg_fam_inst_env gbl)
+ home_fam_insts
+ }) $ do {
; traceRn (text "rn1" <+> ppr (imp_dep_mods imports))
-- Fail if there are any errors so far
mg_deprecs = NoDeprecs,
mg_foreign = NoStubs,
mg_hpc_info = noHpcInfo,
- mg_modBreaks = emptyModBreaks
+ mg_modBreaks = emptyModBreaks,
+ mg_vect_info = noVectInfo
} } ;
tcCoreDump mod_guts ;
-- See Note [Root-main Id]
; let { root_main_name = mkExternalName rootMainKey rOOT_MAIN
(mkVarOccFS FSLIT("main"))
- (getSrcLoc main_name)
+ (getSrcSpan main_name)
; root_main_id = Id.mkExportedLocalId root_main_name ty
; main_bind = noLoc (VarBind root_main_id main_expr) }
-- Initialise the tcg_inst_env with instances
-- from all home modules. This mimics the more selective
-- call to hptInstances in tcRnModule
- dfuns = hptInstances hsc_env (\mod -> True)
+ dfuns = fst (hptInstances hsc_env (\mod -> True))
in
updGblEnv (\env -> env {
tcg_rdr_env = ic_rn_gbl_env icxt,
tcg_inst_env = extendInstEnvList (tcg_inst_env env) dfuns }) $
- tcExtendIdEnv (reverse (ic_tmp_ids icxt)) $
+ tcExtendIdEnv (ic_tmp_ids icxt) $
-- tcExtendIdEnv does lots:
-- - it extends the local type env (tcl_env) with the given Ids,
-- - it extends the local rdr env (tcl_rdr) with the Names from
-- - it adds the free tyvars of the Ids to the tcl_tyvars
-- set.
--
- -- earlier ids in ic_tmp_ids must shadow later ones with the same
- -- OccName, but tcExtendIdEnv has the opposite behaviour, hence the
- -- reverse above.
+ -- later ids in ic_tmp_ids must shadow earlier ones with the same
+ -- OccName, and tcExtendIdEnv implements this behaviour.
do { traceTc (text "setIC" <+> ppr (ic_tmp_ids icxt))
; thing_inside }