1 Things which are ubiquitous in the GHC compiler.
6 import PreludePS(_PackedString)
9 import BinderInfo ( BinderInfo )
10 import Class ( GenClass, GenClassOp, Class(..), ClassOp )
11 import CmdLineOpts ( SimplifierSwitch, SwitchResult )
12 import CoreSyn ( GenCoreArg, GenCoreBinder, GenCoreBinding, GenCoreExpr,
13 GenCoreCaseAlts, GenCoreCaseDefault
15 import CoreUnfold ( UnfoldingDetails, UnfoldingGuidance )
16 import CostCentre ( CostCentre )
17 import FiniteMap ( FiniteMap )
18 import HsCore ( UnfoldingCoreExpr )
19 import HsPat ( OutPat )
20 import HsPragmas ( ClassOpPragmas, ClassPragmas, DataPragmas, GenPragmas,
23 import Id ( StrictnessMark, GenId, Id(..) )
24 import IdInfo ( IdInfo, OptIdInfo(..), ArityInfo, DeforestInfo, Demand, StrictnessInfo, UpdateInfo )
26 import Literal ( Literal )
27 import Maybes ( MaybeErr )
28 import MatchEnv ( MatchEnv )
30 import NameTypes ( FullName, ShortName )
31 import Outputable ( ExportFlag, NamedThing(..), Outputable(..) )
32 import PprStyle ( PprStyle )
33 import PragmaInfo ( PragmaInfo )
34 import Pretty ( PrettyRep )
35 import PrimOp ( PrimOp )
36 import PrimRep ( PrimRep )
37 import ProtoName ( ProtoName )
38 import SrcLoc ( SrcLoc )
39 import TcType ( TcMaybe )
40 import TyCon ( TyCon, Arity(..) )
41 import TyVar ( GenTyVar, TyVar(..) )
42 import Type ( GenType, Type(..) )
43 import UniqFM ( UniqFM )
44 import UniqSupply ( UniqSupply )
45 import Unique ( Unique )
46 import Usage ( GenUsage, Usage(..) )
47 import Util ( Ord3(..) )
49 -- All the classes in GHC go; life is just too short
50 -- to try to contain their visibility.
52 class NamedThing a where
53 getExportFlag :: a -> ExportFlag
54 isLocallyDefined :: a -> Bool
55 getOrigName :: a -> (_PackedString, _PackedString)
56 getOccurrenceName :: a -> _PackedString
57 getInformingModules :: a -> [_PackedString]
58 getSrcLoc :: a -> SrcLoc
59 getItsUnique :: a -> Unique
60 fromPreludeCore :: a -> Bool
61 class OptIdInfo a where
63 getInfo :: IdInfo -> a
64 addInfo :: IdInfo -> a -> IdInfo
65 ppInfo :: PprStyle -> (Id -> Id) -> a -> Int -> Bool -> PrettyRep
68 class Outputable a where
69 ppr :: PprStyle -> a -> Int -> Bool -> PrettyRep
71 -- For datatypes, we ubiquitize those types that (a) are
72 -- used everywhere and (b) the compiler doesn't lose much
73 -- optimisation-wise by not seeing their pragma-gunk.
86 data FullName -- NB: fails the optimisation criterion
90 data GenCoreBinder a b c
91 data GenCoreBinding a b c d
92 data GenCoreCaseAlts a b c d
93 data GenCoreCaseDefault a b c d
94 data GenCoreExpr a b c d
95 data GenId a -- NB: fails the optimisation criterion
97 data GenTyVar a -- NB: fails the optimisation criterion
101 data InstancePragmas a
112 data PrimRep -- NB: an enumeration
114 data ShortName -- NB: fails the optimisation criterion
115 data SimplifierSwitch
122 data UnfoldingCoreExpr a
126 data UnfoldingDetails
127 data UnfoldingGuidance
128 data Unique -- NB: fails the optimisation criterion
130 -- don't get clever and unexpand some of these synonyms
131 -- (GHC 0.26 will barf)
133 type Class = GenClass (GenTyVar (GenUsage Unique)) Unique
134 type ClassOp = GenClassOp (GenType (GenTyVar (GenUsage Unique)) Unique)
135 type Id = GenId (GenType (GenTyVar (GenUsage Unique)) Unique)
136 type Type = GenType (GenTyVar (GenUsage Unique)) Unique
137 type TyVar = GenTyVar (GenUsage Unique)
138 type Usage = GenUsage Unique