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(..), 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.
85 data FullName -- NB: fails the optimisation criterion
89 data GenCoreBinder a b c
90 data GenCoreBinding a b c d
91 data GenCoreCaseAlts a b c d
92 data GenCoreCaseDefault a b c d
93 data GenCoreExpr a b c d
94 data GenId a -- NB: fails the optimisation criterion
96 data GenTyVar a -- NB: fails the optimisation criterion
100 data InstancePragmas a
111 data PrimRep -- NB: an enumeration
113 data ShortName -- NB: fails the optimisation criterion
114 data SimplifierSwitch
121 data UnfoldingCoreExpr a
125 data UnfoldingDetails
126 data UnfoldingGuidance
127 data Unique -- NB: fails the optimisation criterion
129 -- don't get clever and unexpand some of these synonyms
130 -- (GHC 0.26 will barf)
132 type Class = GenClass (GenTyVar (GenUsage Unique)) Unique
133 type ClassOp = GenClassOp (GenType (GenTyVar (GenUsage Unique)) Unique)
134 type Id = GenId (GenType (GenTyVar (GenUsage Unique)) Unique)
135 type Type = GenType (GenTyVar (GenUsage Unique)) Unique
136 type TyVar = GenTyVar (GenUsage Unique)
137 type Usage = GenUsage Unique