import BasicTypes ( Boxity(..) )
import ListSetOps (findDupsEq)
-import List
import Control.Monad
\end{code}
check_e (HsApp e1 e2) = checkl_e e1 `mplus` checkl_e e2
check_e (NegApp e _) = checkl_e e
check_e (ExplicitList _ es) = checkl_es es
- check_e (ExplicitTuple es _) = checkl_es es
check_e other = Just other -- Fails
checkl_es es = foldr (mplus . checkl_e) Nothing es
rnFamily (tydecl@TyFamily {tcdFlavour = flavour,
tcdLName = tycon, tcdTyVars = tyvars})
bindIdxVars =
- do { checkM (isDataFlavour flavour -- for synonyms,
- || not (null tyvars)) $ addErr needOneIdx -- no. of indexes >= 1
- ; bindIdxVars (family_doc tycon) tyvars $ \tyvars' -> do {
+ do { bindIdxVars (family_doc tycon) tyvars $ \tyvars' -> do {
; tycon' <- lookupLocatedTopBndrRn tycon
; return (TyFamily {tcdFlavour = flavour, tcdLName = tycon',
tcdTyVars = tyvars', tcdKind = tcdKind tydecl},
emptyFVs)
} }
- where
- isDataFlavour DataFamily = True
- isDataFlavour _ = False
rnFamily d _ = pprPanic "rnFamily" (ppr d)
family_doc :: Located RdrName -> SDoc
family_doc tycon = text "In the family declaration for" <+> quotes (ppr tycon)
-needOneIdx :: SDoc
-needOneIdx = text "Type family declarations requires at least one type index"
-
-- Rename associated type declarations (in classes)
--
-- * This can be family declarations and (default) type instances