Fix header locations
[ghc.git] / compiler / hsSyn / HsExpr.hs-boot
index 500d601..109e981 100644 (file)
@@ -5,7 +5,7 @@
 {-# LANGUAGE ConstraintKinds #-}
 {-# LANGUAGE RoleAnnotations #-}
 {-# LANGUAGE ExistentialQuantification #-}
-{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE TypeFamilies #-}
 
 module HsExpr where
 
@@ -13,13 +13,12 @@ import SrcLoc     ( Located )
 import Outputable ( SDoc, Outputable )
 import {-# SOURCE #-} HsPat  ( LPat )
 import BasicTypes ( SpliceExplicitFlag(..))
-import HsExtension ( OutputableBndrId, DataIdLR, SourceTextX, GhcPass )
-import Data.Data hiding ( Fixity )
+import HsExtension ( OutputableBndrId, GhcPass )
 
 type role HsExpr nominal
 type role HsCmd nominal
-type role MatchGroup nominal representational
-type role GRHSs nominal representational
+type role MatchGroup nominal nominal
+type role GRHSs nominal nominal
 type role HsSplice nominal
 type role SyntaxExpr nominal
 data HsExpr (i :: *)
@@ -29,39 +28,24 @@ data MatchGroup (a :: *) (body :: *)
 data GRHSs (a :: *) (body :: *)
 data SyntaxExpr (i :: *)
 
-instance (DataIdLR p p) => Data (HsSplice p)
-instance (DataIdLR p p) => Data (HsExpr p)
-instance (DataIdLR p p) => Data (HsCmd p)
-instance (Data body,DataIdLR p p) => Data (MatchGroup p body)
-instance (Data body,DataIdLR p p) => Data (GRHSs p body)
-instance (DataIdLR p p) => Data (SyntaxExpr p)
-
-instance (SourceTextX (GhcPass p), OutputableBndrId (GhcPass p))
-       => Outputable (HsExpr (GhcPass p))
-instance (SourceTextX (GhcPass p), OutputableBndrId (GhcPass p))
-       => Outputable (HsCmd (GhcPass p))
+instance (p ~ GhcPass pass, OutputableBndrId p) => Outputable (HsExpr p)
+instance (p ~ GhcPass pass, OutputableBndrId p) => Outputable (HsCmd p)
 
 type LHsExpr a = Located (HsExpr a)
 
-pprLExpr :: (SourceTextX (GhcPass p), OutputableBndrId (GhcPass p))
-         => LHsExpr (GhcPass p) -> SDoc
+pprLExpr :: (OutputableBndrId (GhcPass p)) => LHsExpr (GhcPass p) -> SDoc
 
-pprExpr :: (SourceTextX (GhcPass p), OutputableBndrId (GhcPass p))
-        => HsExpr (GhcPass p) -> SDoc
+pprExpr :: (OutputableBndrId (GhcPass p)) => HsExpr (GhcPass p) -> SDoc
 
-pprSplice :: (SourceTextX (GhcPass p), OutputableBndrId (GhcPass p))
-          => HsSplice (GhcPass p) -> SDoc
+pprSplice :: (OutputableBndrId (GhcPass p)) => HsSplice (GhcPass p) -> SDoc
 
-pprSpliceDecl ::  (SourceTextX (GhcPass p), OutputableBndrId (GhcPass p))
+pprSpliceDecl ::  (OutputableBndrId (GhcPass p))
           => HsSplice (GhcPass p) -> SpliceExplicitFlag -> SDoc
 
-pprPatBind :: forall bndr p body. (SourceTextX (GhcPass p),
-                                   SourceTextX (GhcPass bndr),
-                                   OutputableBndrId (GhcPass bndr),
+pprPatBind :: forall bndr p body. (OutputableBndrId (GhcPass bndr),
                                    OutputableBndrId (GhcPass p),
                                    Outputable body)
            => LPat (GhcPass bndr) -> GRHSs (GhcPass p) body -> SDoc
 
-pprFunBind :: (SourceTextX (GhcPass idR), OutputableBndrId (GhcPass idR),
-               Outputable body)
+pprFunBind :: (OutputableBndrId (GhcPass idR), Outputable body)
            => MatchGroup (GhcPass idR) body -> SDoc