arg_tys' = substTys tenv arg_tys
; co_vars <- newCoVars eq_spec' -- Make coercion variables
+ ; traceTc (text "tcConPat: refineAlt")
; pstate' <- refineAlt data_con pstate ex_tvs' co_vars pat_ty
+ ; traceTc (text "tcConPat: refineAlt done!")
; ((arg_pats', inner_tvs, res), lie_req) <- getLIE $
tcConArgs data_con arg_tys' arg_pats pstate' thing_inside
| isOpenSynTyCon tycon -- try to normalise type family application
= do { (coi1, ty') <- tcNormaliseFamInst ty
+ ; traceTc $ text "boxySplitTyConApp:" <+>
+ ppr ty <+> text "==>" <+> ppr ty'
; case coi1 of
IdCo -> defer -- no progress, but maybe solvable => defer
ACo _ -> -- progress: so lets try again
, Just (ty_fun1, ty_arg1) <- splitAppTy_maybe ty1
, Just (ty_fun2, ty_arg2) <- splitAppTy_maybe ty2
= ((ty_fun1, ty_fun2),(ty_arg1, ty_arg2))
+splitCoercionKindOf co
+ = pprPanic "Coercion.splitCoercionKindOf"
+ (ppr co $$ ppr (coercionKindPredTy co))
instCoercionTyCon
= mkCoercionTyCon instCoercionTyConName 2 instCoercionKind