TcGenDeriv

ghc-8.0.1: The GHC API

Safe Haskell | None
Language | Haskell2010

TcGenDeriv

# Documentation

type BagDerivStuff = Bag DerivStuff #

data DerivStuff #

Constructors

DerivAuxBind AuxBindSpec |
DerivFamInst FamInst |
DerivHsBind (LHsBind RdrName, LSig RdrName) |
DerivInst (InstInfo RdrName) |

hasBuiltinDeriving :: DynFlags -> (Name -> Fixity) -> Class -> Maybe (SrcSpan -> TyCon -> (LHsBinds RdrName, BagDerivStuff)) #

data FFoldType a #

Constructors

FT |
Fields ft_triv :: a Does not contain variable ft_var :: a The variable itself ft_co_var :: a The variable itself, contravariantly ft_fun :: a -> a -> a Function type ft_tup :: TyCon -> [a] -> a Tuple type ft_ty_app :: Type -> a -> a Type app, variable only in last argument ft_bad_app :: a Type app, variable other than in last argument ft_forall :: TcTyVar -> a -> a Forall type

functorLikeTraverse #

Arguments

:: TyVar | Variable to look for
-> FFoldType a | How to fold
-> Type | Type to process
-> a |

deepSubtypesContaining :: TyVar -> Type -> [TcType] #

foldDataConArgs :: FFoldType a -> DataCon -> [a] #

mkCoerceClassMethEqn :: Class -> [TyVar] -> [Type] -> Type -> Id -> Pair Type #

gen_Newtype_binds :: SrcSpan -> Class -> [TyVar] -> [Type] -> Type -> LHsBinds RdrName #

genAuxBinds :: SrcSpan -> BagDerivStuff -> SeparateBagsDerivStuff #

ordOpTbl :: [(Type, (RdrName, RdrName, RdrName, RdrName, RdrName))] #

boxConTbl :: [(Type, RdrName)] #

litConTbl :: [(Type, LHsExpr RdrName -> LHsExpr RdrName)] #

mkRdrFunBind :: Located RdrName -> [LMatch RdrName (LHsExpr RdrName)] -> LHsBind RdrName #