{-# GHC_PRAGMA INTERFACE VERSION 5 #-} interface TaggedCore where import BasicLit(BasicLit) import BinderInfo(BinderInfo) import CmdLineOpts(GlobalSwitch) import CoreFuns(unTagBinders, unTagBindersAlts) import CoreSyn(CoreArg(..), CoreAtom(..), CoreBinding(..), CoreCaseAlternatives(..), CoreCaseDefault(..), CoreExpr(..), applyToArgs, collectArgs, decomposeArgs) import CostCentre(CostCentre) import Id(Id) import Outputable(ExportFlag, NamedThing(..), Outputable(..)) import PreludePS(_PackedString) import Pretty(PprStyle, Pretty(..), PrettyRep) import PrimOps(PrimOp) import SrcLoc(SrcLoc) import TyCon(TyCon) import TyVar(TyVar) import UniType(UniType) import Unique(Unique) class NamedThing a where getExportFlag :: a -> ExportFlag isLocallyDefined :: a -> Bool getOrigName :: a -> (_PackedString, _PackedString) getOccurrenceName :: a -> _PackedString getInformingModules :: a -> [_PackedString] getSrcLoc :: a -> SrcLoc getTheUnique :: a -> Unique hasType :: a -> Bool getType :: a -> UniType fromPreludeCore :: a -> Bool class Outputable a where ppr :: PprStyle -> a -> Int -> Bool -> PrettyRep data BasicLit data BinderInfo data GlobalSwitch data CoreArg a = TypeArg UniType | ValArg (CoreAtom a) data CoreAtom a = CoVarAtom a | CoLitAtom BasicLit data CoreBinding a b = CoNonRec a (CoreExpr a b) | CoRec [(a, CoreExpr a b)] data CoreCaseAlternatives a b = CoAlgAlts [(Id, [a], CoreExpr a b)] (CoreCaseDefault a b) | CoPrimAlts [(BasicLit, CoreExpr a b)] (CoreCaseDefault a b) data CoreCaseDefault a b = CoNoDefault | CoBindDefault a (CoreExpr a b) data CoreExpr a b = CoVar b | CoLit BasicLit | CoCon Id [UniType] [CoreAtom b] | CoPrim PrimOp [UniType] [CoreAtom b] | CoLam [a] (CoreExpr a b) | CoTyLam TyVar (CoreExpr a b) | CoApp (CoreExpr a b) (CoreAtom b) | CoTyApp (CoreExpr a b) UniType | CoCase (CoreExpr a b) (CoreCaseAlternatives a b) | CoLet (CoreBinding a b) (CoreExpr a b) | CoSCC CostCentre (CoreExpr a b) data CostCentre data Id data ExportFlag data PprStyle type Pretty = Int -> Bool -> PrettyRep data PrettyRep data PrimOp type SimplifiableBinder = (Id, BinderInfo) type SimplifiableCoreAtom = CoreAtom Id type SimplifiableCoreBinding = CoreBinding (Id, BinderInfo) Id type SimplifiableCoreCaseAlternatives = CoreCaseAlternatives (Id, BinderInfo) Id type SimplifiableCoreCaseDefault = CoreCaseDefault (Id, BinderInfo) Id type SimplifiableCoreExpr = CoreExpr (Id, BinderInfo) Id data SrcLoc type TaggedBinder a = (Id, a) type TaggedCoreAtom a = CoreAtom Id type TaggedCoreBinding a = CoreBinding (Id, a) Id type TaggedCoreCaseAlternatives a = CoreCaseAlternatives (Id, a) Id type TaggedCoreCaseDefault a = CoreCaseDefault (Id, a) Id type TaggedCoreExpr a = CoreExpr (Id, a) Id data TyCon data TyVar data UniType data Unique unTagBinders :: CoreExpr (Id, a) b -> CoreExpr Id b unTagBindersAlts :: CoreCaseAlternatives (Id, a) b -> CoreCaseAlternatives Id b applyToArgs :: CoreExpr a b -> [CoreArg b] -> CoreExpr a b collectArgs :: CoreExpr a b -> (CoreExpr a b, [CoreArg b]) decomposeArgs :: [CoreArg a] -> ([UniType], [CoreAtom a], [CoreArg a]) instance (Outputable a, Outputable b) => Outputable (a, b) instance (Outputable a, Outputable b, Outputable c) => Outputable (a, b, c) instance Outputable BinderInfo instance Outputable Bool instance Outputable a => Outputable (CoreArg a) instance Outputable a => Outputable (CoreAtom a) instance (Outputable a, Outputable b) => Outputable (CoreBinding a b) instance (Outputable a, Outputable b) => Outputable (CoreCaseAlternatives a b) instance (Outputable a, Outputable b) => Outputable (CoreCaseDefault a b) instance (Outputable a, Outputable b) => Outputable (CoreExpr a b) instance Outputable a => Outputable [a]