Commit dc667ab5 authored by simonpj@microsoft.com's avatar simonpj@microsoft.com
Browse files

Better error message for fundep conflict

parent c0ed1c0e
......@@ -10,7 +10,7 @@ module Class (
Class, ClassOpItem,
DefMeth (..),
FunDep, pprFundeps,
FunDep, pprFundeps, pprFunDep,
mkClass, classTyVars, classArity,
classKey, className, classATs, classSelIds, classTyCon, classMethods,
......@@ -174,9 +174,9 @@ instance Outputable DefMeth where
pprFundeps :: Outputable a => [FunDep a] -> SDoc
pprFundeps [] = empty
pprFundeps fds = hsep (ptext (sLit "|") : punctuate comma (map ppr_fd fds))
where
ppr_fd (us, vs) = hsep [interppSP us, ptext (sLit "->"),
interppSP vs]
pprFundeps fds = hsep (ptext (sLit "|") : punctuate comma (map pprFunDep fds))
pprFunDep :: Outputable a => FunDep a -> SDoc
pprFunDep (us, vs) = hsep [interppSP us, ptext (sLit "->"), interppSP vs]
\end{code}
......@@ -294,8 +294,9 @@ 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")
<+> ppr (getSrcLoc ispec))
sep [ ptext (sLit "arising from the dependency") <+> quotes (pprFunDep fd)
, ptext (sLit "in the instance declaration at")
<+> ppr (getSrcLoc ispec)])
]
improveOne _ _ _
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment