89159f5bde95d26a4a78eefbc7058968cdecb466
[ghc-hetmet.git] / ghc / compiler / envs / InstEnv.hi
1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface InstEnv where
3 import BasicLit(BasicLit)
4 import Class(Class, ClassOp)
5 import CoreSyn(CoreAtom, CoreBinding, CoreCaseAlternatives, CoreExpr)
6 import CostCentre(CostCentre)
7 import HsBinds(Binds)
8 import HsExpr(ArithSeqInfo, Expr, Qual)
9 import HsLit(Literal)
10 import HsMatches(Match)
11 import HsPat(InPat, TypecheckedPat)
12 import HsTypes(PolyType)
13 import Id(Id)
14 import IdInfo(SpecEnv, SpecInfo)
15 import Inst(Inst, InstOrigin, OverloadedLit)
16 import Maybes(Labda, MaybeErr)
17 import Name(Name)
18 import PreludePS(_PackedString)
19 import PrimOps(PrimOp)
20 import SplitUniq(SplitUniqSupply)
21 import SrcLoc(SrcLoc)
22 import TyCon(TyCon)
23 import TyVar(TyVar, TyVarTemplate)
24 import UniType(UniType)
25 import Unique(Unique)
26 data Class 
27 type ClassInstEnv = [(UniType, InstTemplate)]
28 data ClassOp 
29 data CoreExpr a b 
30 data Expr a b 
31 data Id 
32 data Inst 
33 data InstOrigin 
34 data InstTemplate 
35 data InstTy 
36 type InstanceMapper = Class -> ([(UniType, InstTemplate)], ClassOp -> SpecEnv)
37 data Labda a 
38 type MatchEnv a b = [(a, b)]
39 data MaybeErr a b 
40 type MethodInstInfo = (Id, [UniType], InstTemplate)
41 data TypecheckedPat 
42 data SpecEnv 
43 data SpecInfo 
44 data SplitUniqSupply 
45 data TyCon 
46 data TyVarTemplate 
47 data UniType 
48 addClassInst :: Class -> [(UniType, InstTemplate)] -> UniType -> Id -> [TyVarTemplate] -> [(Class, UniType)] -> SrcLoc -> MaybeErr [(UniType, InstTemplate)] (Class, (UniType, SrcLoc), (UniType, SrcLoc))
49 lookupClassInstAtSimpleType :: Class -> UniType -> Labda Id
50 lookupInst :: SplitUniqSupply -> Inst -> Labda (Expr Id TypecheckedPat, [Inst])
51 lookupNoBindInst :: SplitUniqSupply -> Inst -> Labda [Inst]
52 mkInstSpecEnv :: Class -> UniType -> [TyVarTemplate] -> [(Class, UniType)] -> SpecEnv
53 nullMEnv :: [(a, b)]
54