[project @ 1996-01-11 14:06:51 by partain]
[ghc-hetmet.git] / ghc / compiler / abstractSyn / HsMatches.hi
1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface HsMatches where
3 import HsBinds(Binds)
4 import HsExpr(Expr)
5 import HsPat(InPat, TypecheckedPat)
6 import Id(Id)
7 import Name(Name)
8 import Outputable(NamedThing, Outputable)
9 import Pretty(PprStyle, PrettyRep)
10 import ProtoName(ProtoName)
11 import SrcLoc(SrcLoc)
12 import UniType(UniType)
13 data GRHS a b   = GRHS (Expr a b) (Expr a b) SrcLoc | OtherwiseGRHS (Expr a b) SrcLoc
14 data GRHSsAndBinds a b   = GRHSsAndBindsIn [GRHS a b] (Binds a b) | GRHSsAndBindsOut [GRHS a b] (Binds a b) UniType
15 data Match a b   = PatMatch b (Match a b) | GRHSMatch (GRHSsAndBinds a b)
16 type ProtoNameGRHS = GRHS ProtoName (InPat ProtoName)
17 type ProtoNameGRHSsAndBinds = GRHSsAndBinds ProtoName (InPat ProtoName)
18 type ProtoNameMatch = Match ProtoName (InPat ProtoName)
19 type RenamedGRHS = GRHS Name (InPat Name)
20 type RenamedGRHSsAndBinds = GRHSsAndBinds Name (InPat Name)
21 type RenamedMatch = Match Name (InPat Name)
22 type TypecheckedGRHS = GRHS Id TypecheckedPat
23 type TypecheckedGRHSsAndBinds = GRHSsAndBinds Id TypecheckedPat
24 type TypecheckedMatch = Match Id TypecheckedPat
25 pprGRHS :: (NamedThing a, Outputable a, NamedThing b, Outputable b) => PprStyle -> Bool -> GRHS a b -> Int -> Bool -> PrettyRep
26 pprGRHSsAndBinds :: (NamedThing a, Outputable a, NamedThing b, Outputable b) => PprStyle -> Bool -> GRHSsAndBinds a b -> Int -> Bool -> PrettyRep
27 pprMatch :: (NamedThing a, Outputable a, NamedThing b, Outputable b) => PprStyle -> Bool -> Match a b -> Int -> Bool -> PrettyRep
28 pprMatches :: (NamedThing a, Outputable a, NamedThing b, Outputable b) => PprStyle -> (Bool, Int -> Bool -> PrettyRep) -> [Match a b] -> Int -> Bool -> PrettyRep
29 instance (NamedThing a, Outputable a, NamedThing b, Outputable b) => Outputable (GRHS a b)
30 instance (NamedThing a, Outputable a, NamedThing b, Outputable b) => Outputable (GRHSsAndBinds a b)
31 instance (NamedThing a, Outputable a, NamedThing b, Outputable b) => Outputable (Match a b)
32