1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
4 import BasicLit(BasicLit)
5 import BinderInfo(BinderInfo)
7 import Class(Class, ClassOp)
8 import CmdLineOpts(GlobalSwitch)
9 import CoreSyn(CoreAtom, CoreExpr)
10 import IdInfo(ArgUsageInfo, ArityInfo, DemandInfo, FBTypeInfo, IdInfo, SpecEnv, SpecInfo, StrictnessInfo, UpdateInfo, nullSpecEnv)
11 import Inst(Inst, InstOrigin, OverloadedLit)
12 import InstEnv(InstTemplate)
13 import MagicUFs(MagicUnfoldingFun)
16 import NameTypes(FullName, ShortName)
17 import Outputable(NamedThing, Outputable)
18 import PreludePS(_PackedString)
19 import Pretty(Delay, PprStyle, Pretty(..), PrettyRep)
20 import PrimKind(PrimKind)
21 import SimplEnv(FormSummary, UnfoldingDetails, UnfoldingGuidance)
24 import TyCon(Arity(..), TyCon)
25 import TyVar(TyVar, TyVarTemplate)
26 import TyVarEnv(TypeEnv(..))
27 import UniType(TauType(..), ThetaType(..), UniType)
29 import Unique(Unique, UniqueSupply)
49 type Pretty = Int -> Bool -> PrettyRep
59 type TypeEnv = UniqFM UniType
60 type TauType = UniType
61 type ThetaType = [(Class, UniType)]
66 addIdArgUsageInfo :: Id -> ArgUsageInfo -> Id
67 addIdArity :: Id -> Int -> Id
68 addIdDemandInfo :: Id -> DemandInfo -> Id
69 addIdFBTypeInfo :: Id -> FBTypeInfo -> Id
70 addIdSpecialisation :: Id -> SpecEnv -> Id
71 addIdStrictness :: Id -> StrictnessInfo -> Id
72 addIdUnfolding :: Id -> UnfoldingDetails -> Id
73 addIdUpdateInfo :: Id -> UpdateInfo -> Id
74 applySubstToId :: Subst -> Id -> (Subst, Id)
75 applyTypeEnvToId :: UniqFM UniType -> Id -> Id
76 cmpId :: Id -> Id -> Int#
77 cmpId_withSpecDataCon :: Id -> Id -> Int#
78 eqId :: Id -> Id -> Bool
79 externallyVisibleId :: Id -> Bool
81 getDataConArity :: Id -> Int
82 getDataConSig :: Id -> ([TyVarTemplate], [(Class, UniType)], [UniType], TyCon)
83 getDataConTag :: Id -> Int
84 getDataConTyCon :: Id -> TyCon
85 getIdArgUsageInfo :: Id -> ArgUsageInfo
86 getIdArity :: Id -> ArityInfo
87 getIdDemandInfo :: Id -> DemandInfo
88 getIdFBTypeInfo :: Id -> FBTypeInfo
89 getIdInfo :: Id -> IdInfo
90 getIdKind :: Id -> PrimKind
91 getIdSpecialisation :: Id -> SpecEnv
92 getIdStrictness :: Id -> StrictnessInfo
93 getIdUnfolding :: Id -> UnfoldingDetails
94 getIdUniType :: Id -> UniType
95 getIdUpdateInfo :: Id -> UpdateInfo
96 getInstIdModule :: Id -> _PackedString
97 getInstNamePieces :: Bool -> Inst -> [_PackedString]
98 getInstantiatedDataConSig :: Id -> [UniType] -> ([UniType], [UniType], UniType)
99 getMentionedTyConsAndClassesFromId :: Id -> (Bag TyCon, Bag Class)
100 idWantsToBeINLINEd :: Id -> Bool
101 isBottomingId :: Id -> Bool
102 isClassOpId :: Id -> Bool
103 isConstMethodId_maybe :: Id -> Labda (Class, UniType, ClassOp)
104 isDataCon :: Id -> Bool
105 isDefaultMethodId_maybe :: Id -> Labda (Class, ClassOp, Bool)
106 isDictFunId :: Id -> Bool
107 isImportedId :: Id -> Bool
108 isInstId_maybe :: Id -> Labda Inst
109 isNullaryDataCon :: Id -> Bool
110 isSpecId_maybe :: Id -> Labda (Id, [Labda UniType])
111 isSpecPragmaId_maybe :: Id -> Labda (Labda SpecInfo)
112 isSuperDictSelId_maybe :: Id -> Labda (Class, Class)
113 isSysLocalId :: Id -> Bool
114 isTopLevId :: Id -> Bool
115 isTupleCon :: Id -> Bool
116 isWorkerId :: Id -> Bool
117 isWrapperId :: Id -> Bool
118 localiseId :: Id -> Id
119 mkClassOpId :: Unique -> Class -> ClassOp -> UniType -> IdInfo -> Id
120 mkConstMethodId :: Unique -> Class -> ClassOp -> UniType -> UniType -> Bool -> _PackedString -> IdInfo -> Id
121 mkDataCon :: Unique -> FullName -> [TyVarTemplate] -> [(Class, UniType)] -> [UniType] -> TyCon -> SpecEnv -> Id
122 mkDefaultMethodId :: Unique -> Class -> ClassOp -> Bool -> UniType -> IdInfo -> Id
123 mkDictFunId :: Unique -> Class -> UniType -> UniType -> Bool -> _PackedString -> IdInfo -> Id
124 mkId :: Name -> UniType -> IdInfo -> Id
125 mkIdWithNewUniq :: Id -> Unique -> Id
126 mkImported :: Unique -> FullName -> UniType -> IdInfo -> Id
127 mkInstId :: Inst -> Id
128 mkPreludeId :: Unique -> FullName -> UniType -> IdInfo -> Id
129 mkSameSpecCon :: [Labda UniType] -> Id -> Id
130 mkSpecId :: Unique -> Id -> [Labda UniType] -> UniType -> IdInfo -> Id
131 mkSpecPragmaId :: _PackedString -> Unique -> UniType -> Labda SpecInfo -> SrcLoc -> Id
132 mkSuperDictSelId :: Unique -> Class -> Class -> UniType -> IdInfo -> Id
133 mkSysLocal :: _PackedString -> Unique -> UniType -> SrcLoc -> Id
134 mkTemplateLocals :: [UniType] -> [Id]
135 mkTupleCon :: Int -> Id
136 mkUserLocal :: _PackedString -> Unique -> UniType -> SrcLoc -> Id
137 mkWorkerId :: Unique -> Id -> UniType -> IdInfo -> Id
138 myWrapperMaybe :: Id -> Labda Id
139 nullSpecEnv :: SpecEnv
140 pprIdInUnfolding :: UniqFM Id -> Id -> Int -> Bool -> PrettyRep
141 replaceIdInfo :: Id -> IdInfo -> Id
142 selectIdInfoForSpecId :: Id -> IdInfo
143 showId :: PprStyle -> Id -> [Char]
144 toplevelishId :: Id -> Bool
145 unfoldingUnfriendlyId :: Id -> Bool
146 unlocaliseId :: _PackedString -> Id -> Labda Id
147 updateIdType :: Id -> UniType -> Id
148 whatsMentionedInId :: UniqFM Id -> Id -> (Bag Id, Bag TyCon, Bag Class)
151 instance NamedThing Id
152 instance Outputable Id