X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Ftypes%2FFunDeps.lhs;h=949cac489e3eca9ce861d93008f3a72e00a8786f;hb=ebc623f8daba6bc027c625d333d28ff2ccd630cf;hp=b45778a6fffee6dff763c39d948c5c271d97d9f0;hpb=8d992aa26acc3ea744dcbbc366ab89739e4b6230;p=ghc-hetmet.git diff --git a/compiler/types/FunDeps.lhs b/compiler/types/FunDeps.lhs index b45778a..949cac4 100644 --- a/compiler/types/FunDeps.lhs +++ b/compiler/types/FunDeps.lhs @@ -20,13 +20,15 @@ module FunDeps ( import Name import Var import Class -import TcGadt import TcType +import Unify import InstEnv import VarSet import VarEnv import Outputable import Util +import FastString + import Data.Maybe ( isJust ) \end{code} @@ -146,7 +148,7 @@ See also Note [Ambiguity] in TcSimplify \begin{code} grow :: [PredType] -> TyVarSet -> TyVarSet grow preds fixed_tvs - | null preds = real_fixed_tvs + | null preds = fixed_tvs | otherwise = loop real_fixed_tvs where -- Add the implicit parameters; @@ -197,9 +199,10 @@ type Equation = (TyVarSet, [(Type, Type)]) -- We usually act on an equation by instantiating the quantified type varaibles -- to fresh type variables, and then calling the standard unifier. +pprEquation :: Equation -> SDoc pprEquation (qtvs, pairs) - = vcat [ptext SLIT("forall") <+> braces (pprWithCommas ppr (varSetElems qtvs)), - nest 2 (vcat [ ppr t1 <+> ptext SLIT(":=:") <+> ppr t2 | (t1,t2) <- pairs])] + = vcat [ptext (sLit "forall") <+> braces (pprWithCommas ppr (varSetElems qtvs)), + nest 2 (vcat [ ppr t1 <+> ptext (sLit ":=:") <+> ppr t2 | (t1,t2) <- pairs])] \end{code} Given a bunch of predicates that must hold, such as @@ -243,7 +246,7 @@ improveOne :: (Class -> [Instance]) -- Gives instances for given class -- combined (for error messages) -- Just do improvement triggered by a single, distinguised predicate -improveOne inst_env pred@(IParam ip ty, _) preds +improveOne _inst_env pred@(IParam ip ty, _) preds = [ ((emptyVarSet, [(ty,ty2)]), pred, p2) | p2@(IParam ip2 ty2, _) <- preds , ip==ip2 @@ -290,11 +293,11 @@ improveOne inst_env pred@(ClassP cls tys, _) preds , not (instanceCantMatch inst_tcs trimmed_tcs) , eqn <- checkClsFD qtvs fd cls_tvs tys_inst tys , let p_inst = (mkClassPred cls tys_inst, - ptext SLIT("arising from the instance declaration at") + ptext (sLit "arising from the instance declaration at") <+> ppr (getSrcLoc ispec)) ] -improveOne inst_env eq_pred preds +improveOne _ _ _ = []