From c4b993f3433777eb070de3090d76754cd6b4e2ec Mon Sep 17 00:00:00 2001 From: Tom Schrijvers Date: Tue, 4 Sep 2007 12:39:45 +0000 Subject: [PATCH] bug fix in Decomp step of completion algorithm for given equations --- compiler/typecheck/TcTyFuns.lhs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/compiler/typecheck/TcTyFuns.lhs b/compiler/typecheck/TcTyFuns.lhs index dae7416..0130aa6 100644 --- a/compiler/typecheck/TcTyFuns.lhs +++ b/compiler/typecheck/TcTyFuns.lhs @@ -576,7 +576,7 @@ decompInst i@(EqInst {}) do { cotvs <- zipWithM (\t1 t2 -> newMetaTyVar TauTv (mkCoKind t1 t2)) - tys1' tys2' + tys1 tys2 ; let cos = map TyVarTy cotvs ; writeMetaTyVar old_covar (TyConApp con1 cos) ; return $ map mkWantedCo cotvs @@ -584,9 +584,10 @@ decompInst i@(EqInst {}) -- co_i := Con_i old_co (\old_co -> return $ map mkGivenCo $ - mkRightCoercions (length tys1') old_co) - ; insts <- zipWithM mkEqInst (zipWith EqPred tys1' tys2') cos - ; return (insts, not $ null insts) + mkRightCoercions (length tys1) old_co) + ; insts <- zipWithM mkEqInst (zipWith EqPred tys1 tys2) cos + ; traceTc (text "decomp identicalHead" <+> ppr insts) + ; return (insts, not $ null insts) } | con1 /= con2 && not (isOpenSynTyCon con1 || isOpenSynTyCon con2) -- not matching data constructors (of any flavour) are bad news -- 1.7.10.4