Merge branch 'master' of darcs.haskell.org:/home/darcs/ghc
[ghc.git] / compiler / hsSyn / HsExpr.lhs-boot
1 \begin{code}
2 {-# LANGUAGE CPP, KindSignatures #-}
3 module HsExpr where
4
5 import SrcLoc     ( Located )
6 import Outputable ( SDoc, OutputableBndr, Outputable )
7 import {-# SOURCE #-} HsPat  ( LPat )
8
9 import Data.Data
10
11 data HsExpr (i :: *)
12 data HsCmd  (i :: *)
13 data HsSplice (i :: *)
14 data MatchGroup (a :: *) (body :: *)
15 data GRHSs (a :: *) (body :: *)
16
17 #if __GLASGOW_HASKELL__ > 706
18 instance Typeable HsSplice
19 instance Typeable HsExpr
20 instance Typeable MatchGroup
21 instance Typeable GRHSs
22 #else
23 instance Typeable1 HsSplice
24 instance Typeable1 HsExpr
25 instance Typeable1 HsCmd
26 instance Typeable2 MatchGroup
27 instance Typeable2 GRHSs
28 #endif
29
30 instance Data i => Data (HsSplice i)
31 instance Data i => Data (HsExpr i)
32 instance Data i => Data (HsCmd i)
33 instance (Data i, Data body) => Data (MatchGroup i body)
34 instance (Data i, Data body) => Data (GRHSs i body)
35
36 instance OutputableBndr id => Outputable (HsExpr id)
37 instance OutputableBndr id => Outputable (HsCmd id)
38
39 type LHsExpr a = Located (HsExpr a)
40 type SyntaxExpr a = HsExpr a
41
42 pprLExpr :: (OutputableBndr i) => 
43         LHsExpr i -> SDoc
44
45 pprExpr :: (OutputableBndr i) => 
46         HsExpr i -> SDoc
47
48 pprSplice :: (OutputableBndr i) => 
49         HsSplice i -> SDoc
50
51 pprPatBind :: (OutputableBndr bndr, OutputableBndr id, Outputable body)
52            => LPat bndr -> GRHSs id body -> SDoc
53
54 pprFunBind :: (OutputableBndr idL, OutputableBndr idR, Outputable body) 
55            => idL -> Bool -> MatchGroup idR body -> SDoc
56 \end{code}