-- pragmas, which is done lazily [ie failure just drops the pragma
-- without having any global-failure effect].
+ -- trace "tc1" $
+
fixTc (\ ~(_, _, _, _, _, _, sig_ids) ->
+
+ -- trace "tc2" $
tcExtendGlobalValEnv sig_ids (
-- The knot for instance information. This isn't used at all
tcTyAndClassDecls1 rec_inst_mapper ty_decls_bag cls_decls_bag
`thenTc` \ env ->
+ --trace "tc3" $
-- Typecheck the instance decls, includes deriving
tcSetEnv env (
--trace "tcInstDecls:" $
mod_name rn_env fixities
) `thenTc` \ (inst_info, deriv_binds, ddump_deriv) ->
+ --trace "tc4" $
buildInstanceEnvs inst_info `thenTc` \ inst_mapper ->
returnTc (inst_mapper, env, inst_info, deriv_binds, ddump_deriv)
) `thenTc` \ (_, env, inst_info, deriv_binds, ddump_deriv) ->
+
+ --trace "tc5" $
tcSetEnv env (
-- Default declarations
-- we silently discard the pragma
tcInterfaceSigs sigs `thenTc` \ sig_ids ->
tcGetEnv `thenNF_Tc` \ env ->
+ --trace "tc6" $
returnTc (env, inst_info, data_binds, deriv_binds, ddump_deriv, defaulting_tys, sig_ids)
)))) `thenTc` \ (env, inst_info, data_binds, deriv_binds, ddump_deriv, defaulting_tys, _) ->
+ --trace "tc7" $
tcSetEnv env ( -- to the end...
tcSetDefaultTys defaulting_tys ( -- ditto
(val_decls `ThenBinds` deriv_binds)
( -- Second pass over instance declarations,
-- to compile the bindings themselves.
+ --trace "tc8" $
tcInstDecls2 inst_info `thenNF_Tc` \ (lie_instdecls, inst_binds) ->
tcClassDecls2 cls_decls_bag `thenNF_Tc` \ (lie_clasdecls, cls_binds) ->
tcGetEnv `thenNF_Tc` \ env ->
-- restriction, and no subsequent decl instantiates its
-- type. (Usually, ambiguous type variables are resolved
-- during the generalisation step.)
+ --trace "tc9" $
tcSimplifyTop lie_alldecls `thenTc` \ const_insts ->
-- Backsubstitution. Monomorphic top-level decls may have