diff options
-rw-r--r-- | compiler/typecheck/FunDeps.hs | 9 | ||||
-rw-r--r-- | compiler/typecheck/TcInteract.hs | 3 | ||||
-rw-r--r-- | compiler/typecheck/TcSimplify.hs | 5 |
3 files changed, 14 insertions, 3 deletions
diff --git a/compiler/typecheck/FunDeps.hs b/compiler/typecheck/FunDeps.hs index c8f0b1deef..4052ccbbe4 100644 --- a/compiler/typecheck/FunDeps.hs +++ b/compiler/typecheck/FunDeps.hs @@ -283,7 +283,14 @@ improveClsFD clas_tvs fd -> [] | otherwise - -> [(meta_tvs, fdeqs)] + -> -- pprTrace "iproveClsFD" (vcat + -- [ text "is_tvs =" <+> ppr qtvs + -- , text "tys_inst =" <+> ppr tys_inst + -- , text "tys_actual =" <+> ppr tys_actual + -- , text "ltys1 =" <+> ppr ltys1 + -- , text "ltys2 =" <+> ppr ltys2 + -- , text "subst =" <+> ppr subst ]) $ + [(meta_tvs, fdeqs)] -- We could avoid this substTy stuff by producing the eqn -- (qtvs, ls1++rs1, ls2++rs2) -- which will re-do the ls1/ls2 unification when the equation is diff --git a/compiler/typecheck/TcInteract.hs b/compiler/typecheck/TcInteract.hs index 9b50b09682..028b755187 100644 --- a/compiler/typecheck/TcInteract.hs +++ b/compiler/typecheck/TcInteract.hs @@ -1608,7 +1608,8 @@ interactTyVarEq inerts workItem@(CTyEqCan { cc_tyvar = tv ; stopWith ev "Solved from inert" } | ReprEq <- eq_rel -- See Note [Do not unify representational equalities] - = continueWith workItem + = do { traceTcS "Not unifying representational equality" (ppr workItem) + ; continueWith workItem } | isGiven ev -- See Note [Touchables and givens] = continueWith workItem diff --git a/compiler/typecheck/TcSimplify.hs b/compiler/typecheck/TcSimplify.hs index fb5a70c94c..97da3dc27c 100644 --- a/compiler/typecheck/TcSimplify.hs +++ b/compiler/typecheck/TcSimplify.hs @@ -1357,7 +1357,10 @@ solveWanteds :: WantedConstraints -> TcS WantedConstraints -- so that the inert set doesn't mindlessly propagate. -- NB: wc_simples may be wanted /or/ derived now solveWanteds wc@(WC { wc_simple = simples, wc_impl = implics }) - = do { traceTcS "solveWanteds {" (ppr wc) + = do { cur_lvl <- TcS.getTcLevel + ; traceTcS "solveWanteds {" $ + vcat [ text "Level =" <+> ppr cur_lvl + , ppr wc ] ; wc1 <- solveSimpleWanteds simples -- Any insoluble constraints are in 'simples' and so get rewritten |