X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Ftypes%2FFunDeps.lhs;h=0d7eb24325a20892432dbb84d103b0c8246474bd;hp=1534dc66f18da9be3eb2aa4cee65cd6a43e97aab;hb=df540a334232b9f2da702e48e1ebaf4b289997bc;hpb=5dc9a4504ea4d3df462081a7dbfde0431eac133e diff --git a/compiler/types/FunDeps.lhs b/compiler/types/FunDeps.lhs index 1534dc6..0d7eb24 100644 --- a/compiler/types/FunDeps.lhs +++ b/compiler/types/FunDeps.lhs @@ -1,4 +1,4 @@ -% + % (c) The GRASP/AQUA Project, Glasgow University, 2000 % \section[FunDeps]{FunDeps - functional dependencies} @@ -20,6 +20,7 @@ import Var ( TyVar ) import Class ( Class, FunDep, pprFundeps, classTvsFds ) import TcGadt ( tcUnifyTys, BindFlag(..) ) import Type ( substTys, notElemTvSubst ) +import Coercion ( isEqPred ) import TcType ( Type, PredType(..), tcEqType, predTyUnique, mkClassPred, tyVarsOfTypes, tyVarsOfPred ) import InstEnv ( Instance(..), InstEnv, instanceHead, classInstances, @@ -219,8 +220,9 @@ NOTA BENE: \begin{code} improve inst_env preds - = [ eqn | group <- equivClassesByUniq (predTyUnique . fst) preds, + = [ eqn | group <- equivClassesByUniq (predTyUnique . fst) (filterEqPreds preds), eqn <- checkGroup inst_env group ] + where filterEqPreds = filter (not . isEqPred . fst) ---------- checkGroup :: (Class -> [Instance])