\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;
-- 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])]
-- 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
<+> ppr (getSrcLoc ispec))
]
-improveOne inst_env eq_pred preds
+improveOne _ _ _
= []