complain pred = addErrTc (freeErr pred)
freeErr pred
- = sep [ptext SLIT("All of the type variables in the constraint") <+> quotes (pprPred pred) <+>
- ptext SLIT("are already in scope"),
- nest 4 (ptext SLIT("(at least one must be universally quantified here)"))
- ]
+ = sep [ ptext SLIT("All of the type variables in the constraint") <+>
+ quotes (pprPred pred)
+ , ptext SLIT("are already in scope") <+>
+ ptext SLIT("(at least one must be universally quantified here)")
+ , nest 4 $
+ ptext SLIT("(Use -XFlexibleContexts to lift this restriction)")
+ ]
\end{code}
\begin{code}
badPredTyErr sty = ptext SLIT("Illegal constraint") <+> pprPred sty
eqPredTyErr sty = ptext SLIT("Illegal equational constraint") <+> pprPred sty
$$
- parens (ptext SLIT("Use -ftype-families to permit this"))
+ parens (ptext SLIT("Use -XTypeFamilies to permit this"))
predTyVarErr pred = sep [ptext SLIT("Non type-variable argument"),
nest 2 (ptext SLIT("in the constraint:") <+> pprPred pred)]
dupPredWarn dups = ptext SLIT("Duplicate constraint(s):") <+> pprWithCommas pprPred (map head dups)
sizePred (ClassP _ tys') = sizeTypes tys'
sizePred (IParam _ ty) = sizeType ty
sizePred (EqPred ty1 ty2) = sizeType ty1 + sizeType ty2
-
--- Type family instances occuring in a type after expanding synonyms
-tyFamInsts :: Type -> [(TyCon, [Type])]
-tyFamInsts ty
- | Just exp_ty <- tcView ty = tyFamInsts exp_ty
-tyFamInsts (TyVarTy _) = []
-tyFamInsts (TyConApp tc tys)
- | isOpenSynTyCon tc = [(tc, tys)]
- | otherwise = concat (map tyFamInsts tys)
-tyFamInsts (FunTy ty1 ty2) = tyFamInsts ty1 ++ tyFamInsts ty2
-tyFamInsts (AppTy ty1 ty2) = tyFamInsts ty1 ++ tyFamInsts ty2
-tyFamInsts (ForAllTy _ ty) = tyFamInsts ty
\end{code}