[project @ 1996-04-08 16:15:43 by partain]
[ghc-hetmet.git] / ghc / compiler / utils / Ubiq.lhi
1 Things which are ubiquitous in the GHC compiler.
2
3 \begin{code}
4 interface Ubiq where
5
6 import PreludePS(_PackedString)
7
8 import Bag              ( Bag )
9 import BinderInfo       ( BinderInfo )
10 import CgBindery        ( CgIdInfo )
11 import CharSeq          ( CSeq )
12 import CLabel           ( CLabel )
13 import Class            ( GenClass, GenClassOp, Class(..), ClassOp )
14 import ClosureInfo      ( ClosureInfo, LambdaFormInfo )
15 import CmdLineOpts      ( SimplifierSwitch, SwitchResult )
16 import CoreSyn          ( GenCoreArg, GenCoreBinder, GenCoreBinding, GenCoreExpr,
17                           GenCoreCaseAlts, GenCoreCaseDefault
18                         )
19 import CoreUnfold       ( UnfoldingDetails, UnfoldingGuidance )
20 import CostCentre       ( CostCentre )
21 import FieldLabel       ( FieldLabel )
22 import FiniteMap        ( FiniteMap )
23 import HeapOffs         ( HeapOffset )
24 import HsCore           ( UnfoldingCoreExpr )
25 import HsPat            ( OutPat )
26 import HsPragmas        ( ClassOpPragmas, ClassPragmas, DataPragmas, GenPragmas, InstancePragmas )
27 import Id               ( StrictnessMark, GenId, Id(..) )
28 import IdInfo           ( IdInfo, OptIdInfo(..), ArityInfo, DeforestInfo, Demand, StrictnessInfo, UpdateInfo )
29 import Kind             ( Kind )
30 import Literal          ( Literal )
31 import Maybes           ( MaybeErr )
32 import MatchEnv         ( MatchEnv )
33 import Name             ( Module(..), RdrName, Name, ExportFlag, NamedThing(..) )
34 import Outputable       ( Outputable(..) )
35 import PprStyle         ( PprStyle )
36 import PragmaInfo       ( PragmaInfo )
37 import Pretty           ( PrettyRep )
38 import PrimOp           ( PrimOp )
39 import PrimRep          ( PrimRep )
40 import RnHsSyn          ( RnName )
41 import SMRep            ( SMRep )
42 import SrcLoc           ( SrcLoc )
43 import TcType           ( TcMaybe )
44 import TyCon            ( TyCon, Arity(..) )
45 import TyVar            ( GenTyVar, TyVar(..) )
46 import Type             ( GenType, Type(..) )
47 import UniqFM           ( UniqFM, Uniquable(..) )
48 import UniqSupply       ( UniqSupply )
49 import Unique           ( Unique )
50 import Usage            ( GenUsage, Usage(..) )
51 import Util             ( Ord3(..) )
52
53 -- All the classes in GHC go; life is just too short
54 -- to try to contain their visibility.
55
56 class NamedThing a where
57         getName :: a -> Name
58 class OptIdInfo a where
59         noInfo  :: a
60         getInfo :: IdInfo -> a
61         addInfo :: IdInfo -> a -> IdInfo
62         ppInfo  :: PprStyle -> (Id -> Id) -> a -> Int -> Bool -> PrettyRep
63 class Ord3 a where
64         cmp :: a -> a -> Int#
65 class Outputable a where
66         ppr :: PprStyle -> a -> Int -> Bool -> PrettyRep
67 class Uniquable a where
68         uniqueOf :: a -> Unique
69
70 -- For datatypes, we ubiquitize those types that (a) are
71 -- used everywhere and (b) the compiler doesn't lose much
72 -- optimisation-wise by not seeing their pragma-gunk.
73
74 data ArityInfo
75 data Bag a
76 data BinderInfo
77 data CgIdInfo
78 data CLabel
79 data ClassOpPragmas a
80 data ClassPragmas a
81 data ClosureInfo
82 data CostCentre
83 data CSeq
84 data DataPragmas a
85 data DeforestInfo
86 data Demand
87 data ExportFlag
88 data FieldLabel
89 data FiniteMap a b
90 data GenClass a b
91 data GenClassOp a
92 data GenCoreArg a b c
93 data GenCoreBinder a b c
94 data GenCoreBinding a b c d
95 data GenCoreCaseAlts a b c d
96 data GenCoreCaseDefault a b c d
97 data GenCoreExpr a b c d
98 data GenId a    -- NB: fails the optimisation criterion
99 data GenPragmas a
100 data GenTyVar a -- NB: fails the optimisation criterion
101 data GenType  a b
102 data GenUsage a
103 data HeapOffset
104 data IdInfo
105 data InstancePragmas a
106 data Kind
107 data LambdaFormInfo
108 data Literal
109 data MaybeErr a b
110 data MatchEnv a b
111 data Name
112 data RdrName = Unqual _PackedString | Qual _PackedString _PackedString
113 data OutPat a b c
114 data PprStyle
115 data PragmaInfo
116 data PrettyRep
117 data PrimOp
118 data PrimRep    -- NB: an enumeration
119 data RnName
120 data SimplifierSwitch
121 data SMRep
122 data SrcLoc
123 data StrictnessInfo
124 data StrictnessMark
125 data SwitchResult
126 data TcMaybe s
127 data TyCon
128 data UnfoldingCoreExpr a
129 data UniqFM a
130 data UpdateInfo
131 data UniqSupply
132 data UnfoldingDetails
133 data UnfoldingGuidance
134 data Unique     -- NB: fails the optimisation criterion
135
136 -- don't get clever and unexpand some of these synonyms
137 -- (GHC 0.26 will barf)
138 type Module = _PackedString
139 type Arity = Int
140 type Class = GenClass (GenTyVar (GenUsage Unique)) Unique
141 type ClassOp = GenClassOp (GenType (GenTyVar (GenUsage Unique)) Unique)
142 type Id    = GenId (GenType (GenTyVar (GenUsage Unique)) Unique)
143 type Type  = GenType (GenTyVar (GenUsage Unique)) Unique
144 type TyVar = GenTyVar (GenUsage Unique)
145 type Usage = GenUsage Unique
146 \end{code}