{-# GHC_PRAGMA INTERFACE VERSION 5 #-} interface PlainCore where import Bag(Bag) import BasicLit(BasicLit) import BinderInfo(BinderInfo) import CharSeq(CSeq) import Class(Class) import CmdLineOpts(GlobalSwitch) import CoreFuns(atomToExpr, bindersOf, coreExprArity, digForLambdas, escErrorMsg, exprSmallEnoughToDup, instCoreBindings, instCoreExpr, isWrapperFor, manifestlyBottom, manifestlyWHNF, maybeErrorApp, mkCoApps, mkCoLam, mkCoLetAny, mkCoLetNoUnboxed, mkCoLetUnboxedToCase, mkCoLetrecAny, mkCoLetrecNoUnboxed, mkCoLetsAny, mkCoLetsNoUnboxed, mkCoLetsUnboxedToCase, mkCoTyApps, mkCoTyLam, mkCoreIfThenElse, mkErrorCoApp, mkFunction, nonErrorRHSs, pairsFromCoreBinds, squashableDictishCcExpr, substCoreExpr, substCoreExprUS, typeOfCoreAlts, typeOfCoreExpr) import CoreSyn(CoreArg(..), CoreAtom(..), CoreBinding(..), CoreCaseAlternatives(..), CoreCaseDefault(..), CoreExpr(..), applyToArgs, collectArgs, decomposeArgs, mkCoTyApp, pprCoreExpr) import CoreUnfold(calcUnfoldingGuidance, mentionedInUnfolding, pprCoreUnfolding) import CostCentre(CostCentre) import FreeVars(FVCoreBinding(..), FVCoreExpr(..), addTopBindsFVs) import Id(Id) import IdEnv(IdEnv(..)) import IdInfo(Demand, IdInfo) import Maybes(Labda) import NameTypes(FullName) import Outputable(ExportFlag, NamedThing(..), Outputable(..)) import PreludePS(_PackedString) import Pretty(Delay, PprStyle, Pretty(..), PrettyRep) import PrimOps(PrimOp) import SimplEnv(UnfoldingGuidance) import SrcLoc(SrcLoc) import TyCon(TyCon) import TyVar(TyVar) import TyVarEnv(TyVarEnv(..), TypeEnv(..)) import UniType(SigmaType(..), TauType(..), ThetaType(..), UniType) import UniqFM(UniqFM) import UniqSet(IdSet(..), UniqSet(..)) import Unique(UniqSM(..), Unique, UniqueSupply) 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 Bag a data BasicLit data BinderInfo data Class 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 type FVCoreBinding = CoreBinding (Id, UniqFM Id) Id type FVCoreExpr = CoreExpr (Id, UniqFM Id) Id data Id type IdEnv a = UniqFM a data Demand data IdInfo data Labda a data FullName data ExportFlag type PlainCoreArg = CoreArg Id type PlainCoreAtom = CoreAtom Id type PlainCoreBinding = CoreBinding Id Id type PlainCoreCaseAlternatives = CoreCaseAlternatives Id Id type PlainCoreCaseDefault = CoreCaseDefault Id Id type PlainCoreExpr = CoreExpr Id Id type PlainCoreProgram = [CoreBinding Id Id] data PprStyle type Pretty = Int -> Bool -> PrettyRep data PrettyRep data PrimOp data UnfoldingGuidance data SrcLoc data TyCon data TyVar type TyVarEnv a = UniqFM a type TypeEnv = UniqFM UniType type SigmaType = UniType type TauType = UniType type ThetaType = [(Class, UniType)] data UniType data UniqFM a type IdSet = UniqFM Id type UniqSet a = UniqFM a type UniqSM a = UniqueSupply -> (UniqueSupply, a) data Unique data UniqueSupply atomToExpr :: CoreAtom b -> CoreExpr a b bindersOf :: CoreBinding b a -> [b] coreExprArity :: (Id -> Labda (CoreExpr a Id)) -> CoreExpr a Id -> Int digForLambdas :: CoreExpr a b -> ([TyVar], [a], CoreExpr a b) escErrorMsg :: [Char] -> [Char] exprSmallEnoughToDup :: CoreExpr a Id -> Bool instCoreBindings :: UniqueSupply -> [CoreBinding Id Id] -> (UniqueSupply, [CoreBinding Id Id]) instCoreExpr :: UniqueSupply -> CoreExpr Id Id -> (UniqueSupply, CoreExpr Id Id) isWrapperFor :: CoreExpr Id Id -> Id -> Bool manifestlyBottom :: CoreExpr a Id -> Bool manifestlyWHNF :: CoreExpr a Id -> Bool maybeErrorApp :: CoreExpr a Id -> Labda UniType -> Labda (CoreExpr a Id) mkCoApps :: CoreExpr Id Id -> [CoreExpr Id Id] -> UniqueSupply -> (UniqueSupply, CoreExpr Id Id) mkCoLam :: [a] -> CoreExpr a b -> CoreExpr a b mkCoLetAny :: CoreBinding Id Id -> CoreExpr Id Id -> CoreExpr Id Id mkCoLetNoUnboxed :: CoreBinding Id Id -> CoreExpr Id Id -> CoreExpr Id Id mkCoLetUnboxedToCase :: CoreBinding Id Id -> CoreExpr Id Id -> CoreExpr Id Id mkCoLetrecAny :: [(Id, CoreExpr Id Id)] -> CoreExpr Id Id -> CoreExpr Id Id mkCoLetrecNoUnboxed :: [(Id, CoreExpr Id Id)] -> CoreExpr Id Id -> CoreExpr Id Id mkCoLetsAny :: [CoreBinding Id Id] -> CoreExpr Id Id -> CoreExpr Id Id mkCoLetsNoUnboxed :: [CoreBinding Id Id] -> CoreExpr Id Id -> CoreExpr Id Id mkCoLetsUnboxedToCase :: [CoreBinding Id Id] -> CoreExpr Id Id -> CoreExpr Id Id mkCoTyApps :: CoreExpr a b -> [UniType] -> CoreExpr a b mkCoTyLam :: [TyVar] -> CoreExpr a b -> CoreExpr a b mkCoreIfThenElse :: CoreExpr a Id -> CoreExpr a Id -> CoreExpr a Id -> CoreExpr a Id mkErrorCoApp :: UniType -> Id -> [Char] -> CoreExpr Id Id mkFunction :: [TyVar] -> [a] -> CoreExpr a b -> CoreExpr a b nonErrorRHSs :: CoreCaseAlternatives a Id -> [CoreExpr a Id] pairsFromCoreBinds :: [CoreBinding a b] -> [(a, CoreExpr a b)] squashableDictishCcExpr :: CostCentre -> CoreExpr a b -> Bool substCoreExpr :: UniqueSupply -> UniqFM (CoreExpr Id Id) -> UniqFM UniType -> CoreExpr Id Id -> (UniqueSupply, CoreExpr Id Id) substCoreExprUS :: UniqFM (CoreExpr Id Id) -> UniqFM UniType -> CoreExpr Id Id -> UniqueSupply -> (UniqueSupply, CoreExpr Id Id) typeOfCoreAlts :: CoreCaseAlternatives Id Id -> UniType typeOfCoreExpr :: CoreExpr Id Id -> UniType 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]) mkCoTyApp :: CoreExpr a b -> UniType -> CoreExpr a b pprCoreExpr :: PprStyle -> (PprStyle -> a -> Int -> Bool -> PrettyRep) -> (PprStyle -> a -> Int -> Bool -> PrettyRep) -> (PprStyle -> b -> Int -> Bool -> PrettyRep) -> CoreExpr a b -> Int -> Bool -> PrettyRep calcUnfoldingGuidance :: Bool -> Int -> CoreExpr Id Id -> UnfoldingGuidance mentionedInUnfolding :: (a -> Id) -> CoreExpr a Id -> ([Id], [TyCon], [Class], Bool) pprCoreUnfolding :: CoreExpr Id Id -> Int -> Bool -> PrettyRep addTopBindsFVs :: (UniqFM Id -> Id -> Bool) -> [CoreBinding Id Id] -> ([CoreBinding (Id, UniqFM Id) Id], UniqFM Id) pprBigCoreBinder :: PprStyle -> Id -> Int -> Bool -> PrettyRep pprPlainCoreBinding :: PprStyle -> CoreBinding Id Id -> Int -> Bool -> PrettyRep pprTypedCoreBinder :: PprStyle -> Id -> Int -> Bool -> PrettyRep instance Eq Class instance Eq Id instance Eq Demand instance Eq UniType instance Eq Unique instance Ord Class instance Ord Id instance Ord Demand instance Ord Unique instance NamedThing Class instance NamedThing Id instance NamedThing FullName instance (Outputable a, Outputable b) => Outputable (a, b) instance (Outputable a, Outputable b, Outputable c) => Outputable (a, b, c) instance Outputable Bool instance Outputable Class 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 Id instance Outputable Demand instance Outputable FullName instance Outputable UniType instance Outputable a => Outputable [a] instance Text Demand instance Text Unique