[project @ 1996-01-08 20:28:12 by partain]
[ghc-hetmet.git] / ghc / compiler / typecheck / TcDeriv.hi
1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface TcDeriv where
3 import Bag(Bag)
4 import Class(Class)
5 import CmdLineOpts(GlobalSwitch)
6 import HsBinds(Binds)
7 import HsDecls(FixityDecl)
8 import HsPat(InPat)
9 import Maybes(Labda)
10 import Name(Name)
11 import PreludePS(_PackedString)
12 import Pretty(PprStyle, PrettyRep)
13 import ProtoName(ProtoName)
14 import SplitUniq(SplitUniqSupply)
15 import SrcLoc(SrcLoc)
16 import Subst(Subst)
17 import TcInstDcls(InstInfo)
18 import TcMonad(TcResult)
19 import TyCon(TyCon)
20 import TyVar(TyVar)
21 import UniType(UniType)
22 import UniqFM(UniqFM)
23 type DerivEqn = (Class, TyCon, [TyVar], [(Class, UniType)])
24 data TagThingWanted   = GenCon2Tag | GenTag2Con | GenMaxTag
25 con2tag_PN :: TyCon -> ProtoName
26         {-# GHC_PRAGMA _A_ 1 _U_ 2 _N_ _N_ _N_ _N_ #-}
27 maxtag_PN :: TyCon -> ProtoName
28         {-# GHC_PRAGMA _A_ 1 _U_ 2 _N_ _N_ _N_ _N_ #-}
29 tag2con_PN :: TyCon -> ProtoName
30         {-# GHC_PRAGMA _A_ 1 _U_ 2 _N_ _N_ _N_ _N_ #-}
31 tcDeriving :: _PackedString -> (ProtoName -> Labda Name, ProtoName -> Labda Name) -> Bag InstInfo -> UniqFM TyCon -> [FixityDecl Name] -> (GlobalSwitch -> Bool) -> [UniType] -> Subst -> SplitUniqSupply -> Bag (PprStyle -> Int -> Bool -> PrettyRep) -> SrcLoc -> TcResult (Bag InstInfo, Binds Name (InPat Name), PprStyle -> Int -> Bool -> PrettyRep)
32         {-# GHC_PRAGMA _A_ 5 _U_ 22220222222 _N_ _S_ "LLLSA" {_A_ 4 _U_ 2222222222 _N_ _N_ _N_ _N_} _N_ _N_ #-}
33