{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE StandaloneDeriving #-}
module GHC.Parser.Annotation (
AnnKeywordId(..),
EpToken(..), EpUniToken(..),
getEpTokenSrcSpan,
EpLayout(..),
EpaComment(..), EpaCommentTok(..),
IsUnicodeSyntax(..),
unicodeAnn,
HasE(..),
AddEpAnn(..),
EpaLocation, EpaLocation'(..), epaLocationRealSrcSpan,
TokenLocation(..),
DeltaPos(..), deltaPos, getDeltaLine,
EpAnn(..), Anchor,
anchor,
spanAsAnchor, realSpanAsAnchor,
noSpanAnchor,
NoAnn(..),
EpAnnComments(..), LEpaComment, NoCommentsLocation, NoComments(..), emptyComments,
epaToNoCommentsLocation, noCommentsToEpaLocation,
getFollowingComments, setFollowingComments, setPriorComments,
EpAnnCO,
LocatedA, LocatedL, LocatedC, LocatedN, LocatedAn, LocatedP,
SrcSpanAnnA, SrcSpanAnnL, SrcSpanAnnP, SrcSpanAnnC, SrcSpanAnnN,
LocatedE,
AnnListItem(..), AnnList(..),
AnnParen(..), ParenType(..), parenTypeKws,
AnnPragma(..),
AnnContext(..),
NameAnn(..), NameAdornment(..),
NoEpAnns(..),
AnnSortKey(..), DeclTag(..), BindTag(..),
TrailingAnn(..), trailingAnnToAddEpAnn,
addTrailingAnnToA, addTrailingAnnToL, addTrailingCommaToN,
noTrailingN,
l2l, la2la,
reLoc,
HasLoc(..), getHasLocList,
srcSpan2e, realSrcSpan,
reAnnL, reAnnC,
addAnns, addAnnsA, widenSpan, widenAnchor, widenAnchorS, widenLocatedAn,
getLocAnn,
epAnnAnns,
annParen2AddEpAnn,
epAnnComments,
sortLocatedA,
mapLocA,
combineLocsA,
combineSrcSpansA,
addCLocA,
HasAnnotation(..),
locA,
noLocA,
getLocA,
noSrcSpanA,
noComments, comment, addCommentsToEpAnn, setCommentsEpAnn,
transferAnnsA, transferAnnsOnlyA, transferCommentsOnlyA,
transferPriorCommentsA, transferFollowingA,
commentsOnlyA, removeCommentsA,
placeholderRealSpan,
) where
import GHC.Prelude
import Data.Data
import Data.Function (on)
import Data.List (sortBy, foldl1')
import Data.Semigroup
import GHC.Data.FastString
import GHC.TypeLits (Symbol, KnownSymbol)
import GHC.Types.Name
import GHC.Types.SrcLoc
import GHC.Hs.DocString
import GHC.Utils.Outputable hiding ( (<>) )
import GHC.Utils.Panic
import qualified GHC.Data.Strict as Strict
data AnnKeywordId
= AnnAnyclass
| AnnAs
| AnnBang
| AnnBackquote
| AnnBy
| AnnCase
| AnnCases
| AnnClass
| AnnClose
| AnnCloseB
| AnnCloseBU
| AnnCloseC
| AnnCloseQ
| AnnCloseQU
| AnnCloseP
| AnnClosePH
| AnnCloseS
| AnnColon
| AnnComma
| AnnCommaTuple
| AnnDarrow
| AnnDarrowU
| AnnData
| AnnDcolon
| AnnDcolonU
| AnnDefault
| AnnDeriving
| AnnDo
| AnnDot
| AnnDotdot
| AnnElse
| AnnEqual
| AnnExport
| AnnFamily
| AnnForall
| AnnForallU
| AnnForeign
| AnnFunId
| AnnGroup
|
| AnnHiding
| AnnIf
| AnnImport
| AnnIn
| AnnInfix
| AnnInstance
| AnnLam
| AnnLarrow
| AnnLarrowU
| AnnLet
| AnnLollyU
| AnnMdo
| AnnMinus
| AnnModule
| AnnNewtype
| AnnName
| AnnOf
| AnnOpen
| AnnOpenB
| AnnOpenBU
| AnnOpenC
| AnnOpenE
| AnnOpenEQ
| AnnOpenEQU
| AnnOpenP
| AnnOpenS
| AnnOpenPH
| AnnDollar
| AnnDollarDollar
| AnnPackageName
| AnnPattern
| AnnPercent
| AnnPercentOne
| AnnProc
| AnnQualified
| AnnRarrow
| AnnRarrowU
| AnnRec
| AnnRole
| AnnSafe
| AnnSemi
| AnnSimpleQuote
| AnnSignature
| AnnStatic
| AnnStock
| AnnThen
| AnnThTyQuote
| AnnTilde
| AnnType
| AnnUnit
| AnnUsing
| AnnVal
| AnnValStr
| AnnVbar
| AnnVia
| AnnWhere
| Annlarrowtail
| AnnlarrowtailU
| Annrarrowtail
| AnnrarrowtailU
| AnnLarrowtail
| AnnLarrowtailU
| AnnRarrowtail
| AnnRarrowtailU
deriving (AnnKeywordId -> AnnKeywordId -> Bool
(AnnKeywordId -> AnnKeywordId -> Bool)
-> (AnnKeywordId -> AnnKeywordId -> Bool) -> Eq AnnKeywordId
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AnnKeywordId -> AnnKeywordId -> Bool
== :: AnnKeywordId -> AnnKeywordId -> Bool
$c/= :: AnnKeywordId -> AnnKeywordId -> Bool
/= :: AnnKeywordId -> AnnKeywordId -> Bool
Eq, Eq AnnKeywordId
Eq AnnKeywordId =>
(AnnKeywordId -> AnnKeywordId -> Ordering)
-> (AnnKeywordId -> AnnKeywordId -> Bool)
-> (AnnKeywordId -> AnnKeywordId -> Bool)
-> (AnnKeywordId -> AnnKeywordId -> Bool)
-> (AnnKeywordId -> AnnKeywordId -> Bool)
-> (AnnKeywordId -> AnnKeywordId -> AnnKeywordId)
-> (AnnKeywordId -> AnnKeywordId -> AnnKeywordId)
-> Ord AnnKeywordId
AnnKeywordId -> AnnKeywordId -> Bool
AnnKeywordId -> AnnKeywordId -> Ordering
AnnKeywordId -> AnnKeywordId -> AnnKeywordId
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: AnnKeywordId -> AnnKeywordId -> Ordering
compare :: AnnKeywordId -> AnnKeywordId -> Ordering
$c< :: AnnKeywordId -> AnnKeywordId -> Bool
< :: AnnKeywordId -> AnnKeywordId -> Bool
$c<= :: AnnKeywordId -> AnnKeywordId -> Bool
<= :: AnnKeywordId -> AnnKeywordId -> Bool
$c> :: AnnKeywordId -> AnnKeywordId -> Bool
> :: AnnKeywordId -> AnnKeywordId -> Bool
$c>= :: AnnKeywordId -> AnnKeywordId -> Bool
>= :: AnnKeywordId -> AnnKeywordId -> Bool
$cmax :: AnnKeywordId -> AnnKeywordId -> AnnKeywordId
max :: AnnKeywordId -> AnnKeywordId -> AnnKeywordId
$cmin :: AnnKeywordId -> AnnKeywordId -> AnnKeywordId
min :: AnnKeywordId -> AnnKeywordId -> AnnKeywordId
Ord, Typeable AnnKeywordId
Typeable AnnKeywordId =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnKeywordId -> c AnnKeywordId)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AnnKeywordId)
-> (AnnKeywordId -> Constr)
-> (AnnKeywordId -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AnnKeywordId))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c AnnKeywordId))
-> ((forall b. Data b => b -> b) -> AnnKeywordId -> AnnKeywordId)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnKeywordId -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnKeywordId -> r)
-> (forall u. (forall d. Data d => d -> u) -> AnnKeywordId -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> AnnKeywordId -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AnnKeywordId -> m AnnKeywordId)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnKeywordId -> m AnnKeywordId)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnKeywordId -> m AnnKeywordId)
-> Data AnnKeywordId
AnnKeywordId -> Constr
AnnKeywordId -> DataType
(forall b. Data b => b -> b) -> AnnKeywordId -> AnnKeywordId
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> AnnKeywordId -> u
forall u. (forall d. Data d => d -> u) -> AnnKeywordId -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnKeywordId -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnKeywordId -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AnnKeywordId -> m AnnKeywordId
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnKeywordId -> m AnnKeywordId
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AnnKeywordId
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnKeywordId -> c AnnKeywordId
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AnnKeywordId)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c AnnKeywordId)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnKeywordId -> c AnnKeywordId
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnKeywordId -> c AnnKeywordId
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AnnKeywordId
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AnnKeywordId
$ctoConstr :: AnnKeywordId -> Constr
toConstr :: AnnKeywordId -> Constr
$cdataTypeOf :: AnnKeywordId -> DataType
dataTypeOf :: AnnKeywordId -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AnnKeywordId)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AnnKeywordId)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c AnnKeywordId)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c AnnKeywordId)
$cgmapT :: (forall b. Data b => b -> b) -> AnnKeywordId -> AnnKeywordId
gmapT :: (forall b. Data b => b -> b) -> AnnKeywordId -> AnnKeywordId
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnKeywordId -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnKeywordId -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnKeywordId -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnKeywordId -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> AnnKeywordId -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> AnnKeywordId -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> AnnKeywordId -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> AnnKeywordId -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AnnKeywordId -> m AnnKeywordId
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AnnKeywordId -> m AnnKeywordId
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnKeywordId -> m AnnKeywordId
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnKeywordId -> m AnnKeywordId
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnKeywordId -> m AnnKeywordId
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnKeywordId -> m AnnKeywordId
Data, Int -> AnnKeywordId -> ShowS
[AnnKeywordId] -> ShowS
AnnKeywordId -> String
(Int -> AnnKeywordId -> ShowS)
-> (AnnKeywordId -> String)
-> ([AnnKeywordId] -> ShowS)
-> Show AnnKeywordId
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> AnnKeywordId -> ShowS
showsPrec :: Int -> AnnKeywordId -> ShowS
$cshow :: AnnKeywordId -> String
show :: AnnKeywordId -> String
$cshowList :: [AnnKeywordId] -> ShowS
showList :: [AnnKeywordId] -> ShowS
Show)
instance Outputable AnnKeywordId where
ppr :: AnnKeywordId -> SDoc
ppr AnnKeywordId
x = String -> SDoc
forall doc. IsLine doc => String -> doc
text (AnnKeywordId -> String
forall a. Show a => a -> String
show AnnKeywordId
x)
data IsUnicodeSyntax = UnicodeSyntax | NormalSyntax
deriving (IsUnicodeSyntax -> IsUnicodeSyntax -> Bool
(IsUnicodeSyntax -> IsUnicodeSyntax -> Bool)
-> (IsUnicodeSyntax -> IsUnicodeSyntax -> Bool)
-> Eq IsUnicodeSyntax
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: IsUnicodeSyntax -> IsUnicodeSyntax -> Bool
== :: IsUnicodeSyntax -> IsUnicodeSyntax -> Bool
$c/= :: IsUnicodeSyntax -> IsUnicodeSyntax -> Bool
/= :: IsUnicodeSyntax -> IsUnicodeSyntax -> Bool
Eq, Eq IsUnicodeSyntax
Eq IsUnicodeSyntax =>
(IsUnicodeSyntax -> IsUnicodeSyntax -> Ordering)
-> (IsUnicodeSyntax -> IsUnicodeSyntax -> Bool)
-> (IsUnicodeSyntax -> IsUnicodeSyntax -> Bool)
-> (IsUnicodeSyntax -> IsUnicodeSyntax -> Bool)
-> (IsUnicodeSyntax -> IsUnicodeSyntax -> Bool)
-> (IsUnicodeSyntax -> IsUnicodeSyntax -> IsUnicodeSyntax)
-> (IsUnicodeSyntax -> IsUnicodeSyntax -> IsUnicodeSyntax)
-> Ord IsUnicodeSyntax
IsUnicodeSyntax -> IsUnicodeSyntax -> Bool
IsUnicodeSyntax -> IsUnicodeSyntax -> Ordering
IsUnicodeSyntax -> IsUnicodeSyntax -> IsUnicodeSyntax
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: IsUnicodeSyntax -> IsUnicodeSyntax -> Ordering
compare :: IsUnicodeSyntax -> IsUnicodeSyntax -> Ordering
$c< :: IsUnicodeSyntax -> IsUnicodeSyntax -> Bool
< :: IsUnicodeSyntax -> IsUnicodeSyntax -> Bool
$c<= :: IsUnicodeSyntax -> IsUnicodeSyntax -> Bool
<= :: IsUnicodeSyntax -> IsUnicodeSyntax -> Bool
$c> :: IsUnicodeSyntax -> IsUnicodeSyntax -> Bool
> :: IsUnicodeSyntax -> IsUnicodeSyntax -> Bool
$c>= :: IsUnicodeSyntax -> IsUnicodeSyntax -> Bool
>= :: IsUnicodeSyntax -> IsUnicodeSyntax -> Bool
$cmax :: IsUnicodeSyntax -> IsUnicodeSyntax -> IsUnicodeSyntax
max :: IsUnicodeSyntax -> IsUnicodeSyntax -> IsUnicodeSyntax
$cmin :: IsUnicodeSyntax -> IsUnicodeSyntax -> IsUnicodeSyntax
min :: IsUnicodeSyntax -> IsUnicodeSyntax -> IsUnicodeSyntax
Ord, Typeable IsUnicodeSyntax
Typeable IsUnicodeSyntax =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> IsUnicodeSyntax -> c IsUnicodeSyntax)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c IsUnicodeSyntax)
-> (IsUnicodeSyntax -> Constr)
-> (IsUnicodeSyntax -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c IsUnicodeSyntax))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c IsUnicodeSyntax))
-> ((forall b. Data b => b -> b)
-> IsUnicodeSyntax -> IsUnicodeSyntax)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> IsUnicodeSyntax -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> IsUnicodeSyntax -> r)
-> (forall u.
(forall d. Data d => d -> u) -> IsUnicodeSyntax -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> IsUnicodeSyntax -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> IsUnicodeSyntax -> m IsUnicodeSyntax)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> IsUnicodeSyntax -> m IsUnicodeSyntax)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> IsUnicodeSyntax -> m IsUnicodeSyntax)
-> Data IsUnicodeSyntax
IsUnicodeSyntax -> Constr
IsUnicodeSyntax -> DataType
(forall b. Data b => b -> b) -> IsUnicodeSyntax -> IsUnicodeSyntax
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u.
Int -> (forall d. Data d => d -> u) -> IsUnicodeSyntax -> u
forall u. (forall d. Data d => d -> u) -> IsUnicodeSyntax -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> IsUnicodeSyntax -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> IsUnicodeSyntax -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> IsUnicodeSyntax -> m IsUnicodeSyntax
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> IsUnicodeSyntax -> m IsUnicodeSyntax
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c IsUnicodeSyntax
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> IsUnicodeSyntax -> c IsUnicodeSyntax
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c IsUnicodeSyntax)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c IsUnicodeSyntax)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> IsUnicodeSyntax -> c IsUnicodeSyntax
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> IsUnicodeSyntax -> c IsUnicodeSyntax
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c IsUnicodeSyntax
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c IsUnicodeSyntax
$ctoConstr :: IsUnicodeSyntax -> Constr
toConstr :: IsUnicodeSyntax -> Constr
$cdataTypeOf :: IsUnicodeSyntax -> DataType
dataTypeOf :: IsUnicodeSyntax -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c IsUnicodeSyntax)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c IsUnicodeSyntax)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c IsUnicodeSyntax)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c IsUnicodeSyntax)
$cgmapT :: (forall b. Data b => b -> b) -> IsUnicodeSyntax -> IsUnicodeSyntax
gmapT :: (forall b. Data b => b -> b) -> IsUnicodeSyntax -> IsUnicodeSyntax
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> IsUnicodeSyntax -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> IsUnicodeSyntax -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> IsUnicodeSyntax -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> IsUnicodeSyntax -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> IsUnicodeSyntax -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> IsUnicodeSyntax -> [u]
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> IsUnicodeSyntax -> u
gmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> IsUnicodeSyntax -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> IsUnicodeSyntax -> m IsUnicodeSyntax
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> IsUnicodeSyntax -> m IsUnicodeSyntax
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> IsUnicodeSyntax -> m IsUnicodeSyntax
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> IsUnicodeSyntax -> m IsUnicodeSyntax
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> IsUnicodeSyntax -> m IsUnicodeSyntax
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> IsUnicodeSyntax -> m IsUnicodeSyntax
Data, Int -> IsUnicodeSyntax -> ShowS
[IsUnicodeSyntax] -> ShowS
IsUnicodeSyntax -> String
(Int -> IsUnicodeSyntax -> ShowS)
-> (IsUnicodeSyntax -> String)
-> ([IsUnicodeSyntax] -> ShowS)
-> Show IsUnicodeSyntax
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> IsUnicodeSyntax -> ShowS
showsPrec :: Int -> IsUnicodeSyntax -> ShowS
$cshow :: IsUnicodeSyntax -> String
show :: IsUnicodeSyntax -> String
$cshowList :: [IsUnicodeSyntax] -> ShowS
showList :: [IsUnicodeSyntax] -> ShowS
Show)
unicodeAnn :: AnnKeywordId -> AnnKeywordId
unicodeAnn :: AnnKeywordId -> AnnKeywordId
unicodeAnn AnnKeywordId
AnnForall = AnnKeywordId
AnnForallU
unicodeAnn AnnKeywordId
AnnDcolon = AnnKeywordId
AnnDcolonU
unicodeAnn AnnKeywordId
AnnLarrow = AnnKeywordId
AnnLarrowU
unicodeAnn AnnKeywordId
AnnRarrow = AnnKeywordId
AnnRarrowU
unicodeAnn AnnKeywordId
AnnDarrow = AnnKeywordId
AnnDarrowU
unicodeAnn AnnKeywordId
Annlarrowtail = AnnKeywordId
AnnlarrowtailU
unicodeAnn AnnKeywordId
Annrarrowtail = AnnKeywordId
AnnrarrowtailU
unicodeAnn AnnKeywordId
AnnLarrowtail = AnnKeywordId
AnnLarrowtailU
unicodeAnn AnnKeywordId
AnnRarrowtail = AnnKeywordId
AnnRarrowtailU
unicodeAnn AnnKeywordId
AnnOpenB = AnnKeywordId
AnnOpenBU
unicodeAnn AnnKeywordId
AnnCloseB = AnnKeywordId
AnnCloseBU
unicodeAnn AnnKeywordId
AnnOpenEQ = AnnKeywordId
AnnOpenEQU
unicodeAnn AnnKeywordId
AnnCloseQ = AnnKeywordId
AnnCloseQU
unicodeAnn AnnKeywordId
ann = AnnKeywordId
ann
data HasE = HasE | NoE
deriving (HasE -> HasE -> Bool
(HasE -> HasE -> Bool) -> (HasE -> HasE -> Bool) -> Eq HasE
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: HasE -> HasE -> Bool
== :: HasE -> HasE -> Bool
$c/= :: HasE -> HasE -> Bool
/= :: HasE -> HasE -> Bool
Eq, Eq HasE
Eq HasE =>
(HasE -> HasE -> Ordering)
-> (HasE -> HasE -> Bool)
-> (HasE -> HasE -> Bool)
-> (HasE -> HasE -> Bool)
-> (HasE -> HasE -> Bool)
-> (HasE -> HasE -> HasE)
-> (HasE -> HasE -> HasE)
-> Ord HasE
HasE -> HasE -> Bool
HasE -> HasE -> Ordering
HasE -> HasE -> HasE
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: HasE -> HasE -> Ordering
compare :: HasE -> HasE -> Ordering
$c< :: HasE -> HasE -> Bool
< :: HasE -> HasE -> Bool
$c<= :: HasE -> HasE -> Bool
<= :: HasE -> HasE -> Bool
$c> :: HasE -> HasE -> Bool
> :: HasE -> HasE -> Bool
$c>= :: HasE -> HasE -> Bool
>= :: HasE -> HasE -> Bool
$cmax :: HasE -> HasE -> HasE
max :: HasE -> HasE -> HasE
$cmin :: HasE -> HasE -> HasE
min :: HasE -> HasE -> HasE
Ord, Typeable HasE
Typeable HasE =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> HasE -> c HasE)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c HasE)
-> (HasE -> Constr)
-> (HasE -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c HasE))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c HasE))
-> ((forall b. Data b => b -> b) -> HasE -> HasE)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HasE -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HasE -> r)
-> (forall u. (forall d. Data d => d -> u) -> HasE -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> HasE -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> HasE -> m HasE)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> HasE -> m HasE)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> HasE -> m HasE)
-> Data HasE
HasE -> Constr
HasE -> DataType
(forall b. Data b => b -> b) -> HasE -> HasE
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> HasE -> u
forall u. (forall d. Data d => d -> u) -> HasE -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HasE -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HasE -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> HasE -> m HasE
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> HasE -> m HasE
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c HasE
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> HasE -> c HasE
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c HasE)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c HasE)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> HasE -> c HasE
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> HasE -> c HasE
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c HasE
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c HasE
$ctoConstr :: HasE -> Constr
toConstr :: HasE -> Constr
$cdataTypeOf :: HasE -> DataType
dataTypeOf :: HasE -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c HasE)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c HasE)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c HasE)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c HasE)
$cgmapT :: (forall b. Data b => b -> b) -> HasE -> HasE
gmapT :: (forall b. Data b => b -> b) -> HasE -> HasE
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HasE -> r
gmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HasE -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HasE -> r
gmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HasE -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> HasE -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> HasE -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> HasE -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> HasE -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> HasE -> m HasE
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> HasE -> m HasE
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> HasE -> m HasE
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> HasE -> m HasE
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> HasE -> m HasE
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> HasE -> m HasE
Data, Int -> HasE -> ShowS
[HasE] -> ShowS
HasE -> String
(Int -> HasE -> ShowS)
-> (HasE -> String) -> ([HasE] -> ShowS) -> Show HasE
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> HasE -> ShowS
showsPrec :: Int -> HasE -> ShowS
$cshow :: HasE -> String
show :: HasE -> String
$cshowList :: [HasE] -> ShowS
showList :: [HasE] -> ShowS
Show)
data EpToken (tok :: Symbol)
= NoEpTok
| EpTok !EpaLocation
data EpUniToken (tok :: Symbol) (utok :: Symbol)
= NoEpUniTok
| EpUniTok !EpaLocation !IsUnicodeSyntax
deriving instance Eq (EpToken tok)
deriving instance KnownSymbol tok => Data (EpToken tok)
deriving instance (KnownSymbol tok, KnownSymbol utok) => Data (EpUniToken tok utok)
getEpTokenSrcSpan :: EpToken tok -> SrcSpan
getEpTokenSrcSpan :: forall (tok :: Symbol). EpToken tok -> SrcSpan
getEpTokenSrcSpan EpToken tok
NoEpTok = SrcSpan
noSrcSpan
getEpTokenSrcSpan (EpTok EpaDelta{}) = SrcSpan
noSrcSpan
getEpTokenSrcSpan (EpTok (EpaSpan SrcSpan
span)) = SrcSpan
span
data EpLayout =
EpExplicitBraces !(EpToken "{") !(EpToken "}")
|
EpVirtualBraces
!Int
|
EpNoLayout
deriving instance Data EpLayout
data =
{ EpaComment -> EpaCommentTok
ac_tok :: EpaCommentTok
, EpaComment -> RealSrcSpan
ac_prior_tok :: RealSrcSpan
}
deriving (EpaComment -> EpaComment -> Bool
(EpaComment -> EpaComment -> Bool)
-> (EpaComment -> EpaComment -> Bool) -> Eq EpaComment
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: EpaComment -> EpaComment -> Bool
== :: EpaComment -> EpaComment -> Bool
$c/= :: EpaComment -> EpaComment -> Bool
/= :: EpaComment -> EpaComment -> Bool
Eq, Typeable EpaComment
Typeable EpaComment =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> EpaComment -> c EpaComment)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c EpaComment)
-> (EpaComment -> Constr)
-> (EpaComment -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c EpaComment))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c EpaComment))
-> ((forall b. Data b => b -> b) -> EpaComment -> EpaComment)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> EpaComment -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> EpaComment -> r)
-> (forall u. (forall d. Data d => d -> u) -> EpaComment -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> EpaComment -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> EpaComment -> m EpaComment)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpaComment -> m EpaComment)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpaComment -> m EpaComment)
-> Data EpaComment
EpaComment -> Constr
EpaComment -> DataType
(forall b. Data b => b -> b) -> EpaComment -> EpaComment
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> EpaComment -> u
forall u. (forall d. Data d => d -> u) -> EpaComment -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> EpaComment -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> EpaComment -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> EpaComment -> m EpaComment
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpaComment -> m EpaComment
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c EpaComment
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> EpaComment -> c EpaComment
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c EpaComment)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c EpaComment)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> EpaComment -> c EpaComment
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> EpaComment -> c EpaComment
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c EpaComment
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c EpaComment
$ctoConstr :: EpaComment -> Constr
toConstr :: EpaComment -> Constr
$cdataTypeOf :: EpaComment -> DataType
dataTypeOf :: EpaComment -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c EpaComment)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c EpaComment)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c EpaComment)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c EpaComment)
$cgmapT :: (forall b. Data b => b -> b) -> EpaComment -> EpaComment
gmapT :: (forall b. Data b => b -> b) -> EpaComment -> EpaComment
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> EpaComment -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> EpaComment -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> EpaComment -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> EpaComment -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> EpaComment -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> EpaComment -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> EpaComment -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> EpaComment -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> EpaComment -> m EpaComment
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> EpaComment -> m EpaComment
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpaComment -> m EpaComment
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpaComment -> m EpaComment
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpaComment -> m EpaComment
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpaComment -> m EpaComment
Data, Int -> EpaComment -> ShowS
[EpaComment] -> ShowS
EpaComment -> String
(Int -> EpaComment -> ShowS)
-> (EpaComment -> String)
-> ([EpaComment] -> ShowS)
-> Show EpaComment
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> EpaComment -> ShowS
showsPrec :: Int -> EpaComment -> ShowS
$cshow :: EpaComment -> String
show :: EpaComment -> String
$cshowList :: [EpaComment] -> ShowS
showList :: [EpaComment] -> ShowS
Show)
data =
HsDocString
| EpaDocOptions String
| String
| String
deriving (EpaCommentTok -> EpaCommentTok -> Bool
(EpaCommentTok -> EpaCommentTok -> Bool)
-> (EpaCommentTok -> EpaCommentTok -> Bool) -> Eq EpaCommentTok
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: EpaCommentTok -> EpaCommentTok -> Bool
== :: EpaCommentTok -> EpaCommentTok -> Bool
$c/= :: EpaCommentTok -> EpaCommentTok -> Bool
/= :: EpaCommentTok -> EpaCommentTok -> Bool
Eq, Typeable EpaCommentTok
Typeable EpaCommentTok =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> EpaCommentTok -> c EpaCommentTok)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c EpaCommentTok)
-> (EpaCommentTok -> Constr)
-> (EpaCommentTok -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c EpaCommentTok))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c EpaCommentTok))
-> ((forall b. Data b => b -> b) -> EpaCommentTok -> EpaCommentTok)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> EpaCommentTok -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> EpaCommentTok -> r)
-> (forall u. (forall d. Data d => d -> u) -> EpaCommentTok -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> EpaCommentTok -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> EpaCommentTok -> m EpaCommentTok)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpaCommentTok -> m EpaCommentTok)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpaCommentTok -> m EpaCommentTok)
-> Data EpaCommentTok
EpaCommentTok -> Constr
EpaCommentTok -> DataType
(forall b. Data b => b -> b) -> EpaCommentTok -> EpaCommentTok
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> EpaCommentTok -> u
forall u. (forall d. Data d => d -> u) -> EpaCommentTok -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> EpaCommentTok -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> EpaCommentTok -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> EpaCommentTok -> m EpaCommentTok
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpaCommentTok -> m EpaCommentTok
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c EpaCommentTok
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> EpaCommentTok -> c EpaCommentTok
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c EpaCommentTok)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c EpaCommentTok)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> EpaCommentTok -> c EpaCommentTok
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> EpaCommentTok -> c EpaCommentTok
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c EpaCommentTok
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c EpaCommentTok
$ctoConstr :: EpaCommentTok -> Constr
toConstr :: EpaCommentTok -> Constr
$cdataTypeOf :: EpaCommentTok -> DataType
dataTypeOf :: EpaCommentTok -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c EpaCommentTok)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c EpaCommentTok)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c EpaCommentTok)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c EpaCommentTok)
$cgmapT :: (forall b. Data b => b -> b) -> EpaCommentTok -> EpaCommentTok
gmapT :: (forall b. Data b => b -> b) -> EpaCommentTok -> EpaCommentTok
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> EpaCommentTok -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> EpaCommentTok -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> EpaCommentTok -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> EpaCommentTok -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> EpaCommentTok -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> EpaCommentTok -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> EpaCommentTok -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> EpaCommentTok -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> EpaCommentTok -> m EpaCommentTok
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> EpaCommentTok -> m EpaCommentTok
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpaCommentTok -> m EpaCommentTok
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpaCommentTok -> m EpaCommentTok
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpaCommentTok -> m EpaCommentTok
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpaCommentTok -> m EpaCommentTok
Data, Int -> EpaCommentTok -> ShowS
[EpaCommentTok] -> ShowS
EpaCommentTok -> String
(Int -> EpaCommentTok -> ShowS)
-> (EpaCommentTok -> String)
-> ([EpaCommentTok] -> ShowS)
-> Show EpaCommentTok
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> EpaCommentTok -> ShowS
showsPrec :: Int -> EpaCommentTok -> ShowS
$cshow :: EpaCommentTok -> String
show :: EpaCommentTok -> String
$cshowList :: [EpaCommentTok] -> ShowS
showList :: [EpaCommentTok] -> ShowS
Show)
instance Outputable EpaComment where
ppr :: EpaComment -> SDoc
ppr EpaComment
x = String -> SDoc
forall doc. IsLine doc => String -> doc
text (EpaComment -> String
forall a. Show a => a -> String
show EpaComment
x)
data AddEpAnn = AddEpAnn AnnKeywordId EpaLocation deriving (Typeable AddEpAnn
Typeable AddEpAnn =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AddEpAnn -> c AddEpAnn)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AddEpAnn)
-> (AddEpAnn -> Constr)
-> (AddEpAnn -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AddEpAnn))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AddEpAnn))
-> ((forall b. Data b => b -> b) -> AddEpAnn -> AddEpAnn)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AddEpAnn -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AddEpAnn -> r)
-> (forall u. (forall d. Data d => d -> u) -> AddEpAnn -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> AddEpAnn -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AddEpAnn -> m AddEpAnn)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AddEpAnn -> m AddEpAnn)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AddEpAnn -> m AddEpAnn)
-> Data AddEpAnn
AddEpAnn -> Constr
AddEpAnn -> DataType
(forall b. Data b => b -> b) -> AddEpAnn -> AddEpAnn
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> AddEpAnn -> u
forall u. (forall d. Data d => d -> u) -> AddEpAnn -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AddEpAnn -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AddEpAnn -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AddEpAnn -> m AddEpAnn
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AddEpAnn -> m AddEpAnn
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AddEpAnn
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AddEpAnn -> c AddEpAnn
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AddEpAnn)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AddEpAnn)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AddEpAnn -> c AddEpAnn
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AddEpAnn -> c AddEpAnn
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AddEpAnn
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AddEpAnn
$ctoConstr :: AddEpAnn -> Constr
toConstr :: AddEpAnn -> Constr
$cdataTypeOf :: AddEpAnn -> DataType
dataTypeOf :: AddEpAnn -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AddEpAnn)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AddEpAnn)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AddEpAnn)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AddEpAnn)
$cgmapT :: (forall b. Data b => b -> b) -> AddEpAnn -> AddEpAnn
gmapT :: (forall b. Data b => b -> b) -> AddEpAnn -> AddEpAnn
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AddEpAnn -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AddEpAnn -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AddEpAnn -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AddEpAnn -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> AddEpAnn -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> AddEpAnn -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> AddEpAnn -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> AddEpAnn -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AddEpAnn -> m AddEpAnn
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AddEpAnn -> m AddEpAnn
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AddEpAnn -> m AddEpAnn
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AddEpAnn -> m AddEpAnn
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AddEpAnn -> m AddEpAnn
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AddEpAnn -> m AddEpAnn
Data,AddEpAnn -> AddEpAnn -> Bool
(AddEpAnn -> AddEpAnn -> Bool)
-> (AddEpAnn -> AddEpAnn -> Bool) -> Eq AddEpAnn
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AddEpAnn -> AddEpAnn -> Bool
== :: AddEpAnn -> AddEpAnn -> Bool
$c/= :: AddEpAnn -> AddEpAnn -> Bool
/= :: AddEpAnn -> AddEpAnn -> Bool
Eq)
type EpaLocation = EpaLocation' [LEpaComment]
epaToNoCommentsLocation :: EpaLocation -> NoCommentsLocation
(EpaSpan SrcSpan
ss) = SrcSpan -> EpaLocation' NoComments
forall a. SrcSpan -> EpaLocation' a
EpaSpan SrcSpan
ss
epaToNoCommentsLocation (EpaDelta DeltaPos
dp []) = DeltaPos -> NoComments -> EpaLocation' NoComments
forall a. DeltaPos -> a -> EpaLocation' a
EpaDelta DeltaPos
dp NoComments
NoComments
epaToNoCommentsLocation (EpaDelta DeltaPos
_ [LEpaComment]
_ ) = String -> EpaLocation' NoComments
forall a. HasCallStack => String -> a
panic String
"epaToNoCommentsLocation"
noCommentsToEpaLocation :: NoCommentsLocation -> EpaLocation
(EpaSpan SrcSpan
ss) = SrcSpan -> EpaLocation
forall a. SrcSpan -> EpaLocation' a
EpaSpan SrcSpan
ss
noCommentsToEpaLocation (EpaDelta DeltaPos
dp NoComments
NoComments) = DeltaPos -> [LEpaComment] -> EpaLocation
forall a. DeltaPos -> a -> EpaLocation' a
EpaDelta DeltaPos
dp []
data TokenLocation = NoTokenLoc | TokenLoc !EpaLocation
deriving (Typeable TokenLocation
Typeable TokenLocation =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> TokenLocation -> c TokenLocation)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c TokenLocation)
-> (TokenLocation -> Constr)
-> (TokenLocation -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c TokenLocation))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c TokenLocation))
-> ((forall b. Data b => b -> b) -> TokenLocation -> TokenLocation)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> TokenLocation -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> TokenLocation -> r)
-> (forall u. (forall d. Data d => d -> u) -> TokenLocation -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> TokenLocation -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> TokenLocation -> m TokenLocation)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> TokenLocation -> m TokenLocation)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> TokenLocation -> m TokenLocation)
-> Data TokenLocation
TokenLocation -> Constr
TokenLocation -> DataType
(forall b. Data b => b -> b) -> TokenLocation -> TokenLocation
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> TokenLocation -> u
forall u. (forall d. Data d => d -> u) -> TokenLocation -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> TokenLocation -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> TokenLocation -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> TokenLocation -> m TokenLocation
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> TokenLocation -> m TokenLocation
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c TokenLocation
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> TokenLocation -> c TokenLocation
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c TokenLocation)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c TokenLocation)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> TokenLocation -> c TokenLocation
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> TokenLocation -> c TokenLocation
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c TokenLocation
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c TokenLocation
$ctoConstr :: TokenLocation -> Constr
toConstr :: TokenLocation -> Constr
$cdataTypeOf :: TokenLocation -> DataType
dataTypeOf :: TokenLocation -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c TokenLocation)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c TokenLocation)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c TokenLocation)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c TokenLocation)
$cgmapT :: (forall b. Data b => b -> b) -> TokenLocation -> TokenLocation
gmapT :: (forall b. Data b => b -> b) -> TokenLocation -> TokenLocation
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> TokenLocation -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> TokenLocation -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> TokenLocation -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> TokenLocation -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> TokenLocation -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> TokenLocation -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> TokenLocation -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> TokenLocation -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> TokenLocation -> m TokenLocation
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> TokenLocation -> m TokenLocation
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> TokenLocation -> m TokenLocation
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> TokenLocation -> m TokenLocation
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> TokenLocation -> m TokenLocation
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> TokenLocation -> m TokenLocation
Data,TokenLocation -> TokenLocation -> Bool
(TokenLocation -> TokenLocation -> Bool)
-> (TokenLocation -> TokenLocation -> Bool) -> Eq TokenLocation
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TokenLocation -> TokenLocation -> Bool
== :: TokenLocation -> TokenLocation -> Bool
$c/= :: TokenLocation -> TokenLocation -> Bool
/= :: TokenLocation -> TokenLocation -> Bool
Eq)
instance Outputable a => Outputable (GenLocated TokenLocation a) where
ppr :: GenLocated TokenLocation a -> SDoc
ppr (L TokenLocation
_ a
x) = a -> SDoc
forall a. Outputable a => a -> SDoc
ppr a
x
epaLocationRealSrcSpan :: EpaLocation -> RealSrcSpan
epaLocationRealSrcSpan :: EpaLocation -> RealSrcSpan
epaLocationRealSrcSpan (EpaSpan (RealSrcSpan RealSrcSpan
r Maybe BufSpan
_)) = RealSrcSpan
r
epaLocationRealSrcSpan EpaLocation
_ = String -> RealSrcSpan
forall a. HasCallStack => String -> a
panic String
"epaLocationRealSrcSpan"
instance Outputable AddEpAnn where
ppr :: AddEpAnn -> SDoc
ppr (AddEpAnn AnnKeywordId
kw EpaLocation
ss) = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"AddEpAnn" SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> AnnKeywordId -> SDoc
forall a. Outputable a => a -> SDoc
ppr AnnKeywordId
kw SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> EpaLocation -> SDoc
forall a. Outputable a => a -> SDoc
ppr EpaLocation
ss
data EpAnn ann
= EpAnn { forall ann. EpAnn ann -> EpaLocation
entry :: !Anchor
, forall ann. EpAnn ann -> ann
anns :: !ann
, :: !EpAnnComments
}
deriving (Typeable (EpAnn ann)
Typeable (EpAnn ann) =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> EpAnn ann -> c (EpAnn ann))
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (EpAnn ann))
-> (EpAnn ann -> Constr)
-> (EpAnn ann -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (EpAnn ann)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (EpAnn ann)))
-> ((forall b. Data b => b -> b) -> EpAnn ann -> EpAnn ann)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> EpAnn ann -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> EpAnn ann -> r)
-> (forall u. (forall d. Data d => d -> u) -> EpAnn ann -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> EpAnn ann -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> EpAnn ann -> m (EpAnn ann))
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpAnn ann -> m (EpAnn ann))
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpAnn ann -> m (EpAnn ann))
-> Data (EpAnn ann)
EpAnn ann -> Constr
EpAnn ann -> DataType
(forall b. Data b => b -> b) -> EpAnn ann -> EpAnn ann
forall ann. Data ann => Typeable (EpAnn ann)
forall ann. Data ann => EpAnn ann -> Constr
forall ann. Data ann => EpAnn ann -> DataType
forall ann.
Data ann =>
(forall b. Data b => b -> b) -> EpAnn ann -> EpAnn ann
forall ann u.
Data ann =>
Int -> (forall d. Data d => d -> u) -> EpAnn ann -> u
forall ann u.
Data ann =>
(forall d. Data d => d -> u) -> EpAnn ann -> [u]
forall ann r r'.
Data ann =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> EpAnn ann -> r
forall ann r r'.
Data ann =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> EpAnn ann -> r
forall ann (m :: * -> *).
(Data ann, Monad m) =>
(forall d. Data d => d -> m d) -> EpAnn ann -> m (EpAnn ann)
forall ann (m :: * -> *).
(Data ann, MonadPlus m) =>
(forall d. Data d => d -> m d) -> EpAnn ann -> m (EpAnn ann)
forall ann (c :: * -> *).
Data ann =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (EpAnn ann)
forall ann (c :: * -> *).
Data ann =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> EpAnn ann -> c (EpAnn ann)
forall ann (t :: * -> *) (c :: * -> *).
(Data ann, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (EpAnn ann))
forall ann (t :: * -> * -> *) (c :: * -> *).
(Data ann, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (EpAnn ann))
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> EpAnn ann -> u
forall u. (forall d. Data d => d -> u) -> EpAnn ann -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> EpAnn ann -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> EpAnn ann -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> EpAnn ann -> m (EpAnn ann)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpAnn ann -> m (EpAnn ann)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (EpAnn ann)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> EpAnn ann -> c (EpAnn ann)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (EpAnn ann))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (EpAnn ann))
$cgfoldl :: forall ann (c :: * -> *).
Data ann =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> EpAnn ann -> c (EpAnn ann)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> EpAnn ann -> c (EpAnn ann)
$cgunfold :: forall ann (c :: * -> *).
Data ann =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (EpAnn ann)
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (EpAnn ann)
$ctoConstr :: forall ann. Data ann => EpAnn ann -> Constr
toConstr :: EpAnn ann -> Constr
$cdataTypeOf :: forall ann. Data ann => EpAnn ann -> DataType
dataTypeOf :: EpAnn ann -> DataType
$cdataCast1 :: forall ann (t :: * -> *) (c :: * -> *).
(Data ann, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (EpAnn ann))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (EpAnn ann))
$cdataCast2 :: forall ann (t :: * -> * -> *) (c :: * -> *).
(Data ann, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (EpAnn ann))
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (EpAnn ann))
$cgmapT :: forall ann.
Data ann =>
(forall b. Data b => b -> b) -> EpAnn ann -> EpAnn ann
gmapT :: (forall b. Data b => b -> b) -> EpAnn ann -> EpAnn ann
$cgmapQl :: forall ann r r'.
Data ann =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> EpAnn ann -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> EpAnn ann -> r
$cgmapQr :: forall ann r r'.
Data ann =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> EpAnn ann -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> EpAnn ann -> r
$cgmapQ :: forall ann u.
Data ann =>
(forall d. Data d => d -> u) -> EpAnn ann -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> EpAnn ann -> [u]
$cgmapQi :: forall ann u.
Data ann =>
Int -> (forall d. Data d => d -> u) -> EpAnn ann -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> EpAnn ann -> u
$cgmapM :: forall ann (m :: * -> *).
(Data ann, Monad m) =>
(forall d. Data d => d -> m d) -> EpAnn ann -> m (EpAnn ann)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> EpAnn ann -> m (EpAnn ann)
$cgmapMp :: forall ann (m :: * -> *).
(Data ann, MonadPlus m) =>
(forall d. Data d => d -> m d) -> EpAnn ann -> m (EpAnn ann)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpAnn ann -> m (EpAnn ann)
$cgmapMo :: forall ann (m :: * -> *).
(Data ann, MonadPlus m) =>
(forall d. Data d => d -> m d) -> EpAnn ann -> m (EpAnn ann)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpAnn ann -> m (EpAnn ann)
Data, EpAnn ann -> EpAnn ann -> Bool
(EpAnn ann -> EpAnn ann -> Bool)
-> (EpAnn ann -> EpAnn ann -> Bool) -> Eq (EpAnn ann)
forall ann. Eq ann => EpAnn ann -> EpAnn ann -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall ann. Eq ann => EpAnn ann -> EpAnn ann -> Bool
== :: EpAnn ann -> EpAnn ann -> Bool
$c/= :: forall ann. Eq ann => EpAnn ann -> EpAnn ann -> Bool
/= :: EpAnn ann -> EpAnn ann -> Bool
Eq, (forall a b. (a -> b) -> EpAnn a -> EpAnn b)
-> (forall a b. a -> EpAnn b -> EpAnn a) -> Functor EpAnn
forall a b. a -> EpAnn b -> EpAnn a
forall a b. (a -> b) -> EpAnn a -> EpAnn b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
$cfmap :: forall a b. (a -> b) -> EpAnn a -> EpAnn b
fmap :: forall a b. (a -> b) -> EpAnn a -> EpAnn b
$c<$ :: forall a b. a -> EpAnn b -> EpAnn a
<$ :: forall a b. a -> EpAnn b -> EpAnn a
Functor)
type Anchor = EpaLocation
anchor :: (EpaLocation' a) -> RealSrcSpan
anchor :: forall a. EpaLocation' a -> RealSrcSpan
anchor (EpaSpan (RealSrcSpan RealSrcSpan
r Maybe BufSpan
_)) = RealSrcSpan
r
anchor EpaLocation' a
_ = String -> RealSrcSpan
forall a. HasCallStack => String -> a
panic String
"anchor"
spanAsAnchor :: SrcSpan -> (EpaLocation' a)
spanAsAnchor :: forall a. SrcSpan -> EpaLocation' a
spanAsAnchor SrcSpan
ss = SrcSpan -> EpaLocation' a
forall a. SrcSpan -> EpaLocation' a
EpaSpan SrcSpan
ss
realSpanAsAnchor :: RealSrcSpan -> (EpaLocation' a)
realSpanAsAnchor :: forall a. RealSrcSpan -> EpaLocation' a
realSpanAsAnchor RealSrcSpan
s = SrcSpan -> EpaLocation' a
forall a. SrcSpan -> EpaLocation' a
EpaSpan (RealSrcSpan -> Maybe BufSpan -> SrcSpan
RealSrcSpan RealSrcSpan
s Maybe BufSpan
forall a. Maybe a
Strict.Nothing)
noSpanAnchor :: (NoAnn a) => (EpaLocation' a)
noSpanAnchor :: forall a. NoAnn a => EpaLocation' a
noSpanAnchor = DeltaPos -> a -> EpaLocation' a
forall a. DeltaPos -> a -> EpaLocation' a
EpaDelta (Int -> DeltaPos
SameLine Int
0) a
forall a. NoAnn a => a
noAnn
data =
{ :: ![LEpaComment] }
|
{ :: ![LEpaComment]
, :: ![LEpaComment] }
deriving (Typeable EpAnnComments
Typeable EpAnnComments =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> EpAnnComments -> c EpAnnComments)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c EpAnnComments)
-> (EpAnnComments -> Constr)
-> (EpAnnComments -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c EpAnnComments))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c EpAnnComments))
-> ((forall b. Data b => b -> b) -> EpAnnComments -> EpAnnComments)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> EpAnnComments -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> EpAnnComments -> r)
-> (forall u. (forall d. Data d => d -> u) -> EpAnnComments -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> EpAnnComments -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> EpAnnComments -> m EpAnnComments)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpAnnComments -> m EpAnnComments)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpAnnComments -> m EpAnnComments)
-> Data EpAnnComments
EpAnnComments -> Constr
EpAnnComments -> DataType
(forall b. Data b => b -> b) -> EpAnnComments -> EpAnnComments
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> EpAnnComments -> u
forall u. (forall d. Data d => d -> u) -> EpAnnComments -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> EpAnnComments -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> EpAnnComments -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> EpAnnComments -> m EpAnnComments
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpAnnComments -> m EpAnnComments
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c EpAnnComments
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> EpAnnComments -> c EpAnnComments
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c EpAnnComments)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c EpAnnComments)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> EpAnnComments -> c EpAnnComments
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> EpAnnComments -> c EpAnnComments
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c EpAnnComments
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c EpAnnComments
$ctoConstr :: EpAnnComments -> Constr
toConstr :: EpAnnComments -> Constr
$cdataTypeOf :: EpAnnComments -> DataType
dataTypeOf :: EpAnnComments -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c EpAnnComments)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c EpAnnComments)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c EpAnnComments)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c EpAnnComments)
$cgmapT :: (forall b. Data b => b -> b) -> EpAnnComments -> EpAnnComments
gmapT :: (forall b. Data b => b -> b) -> EpAnnComments -> EpAnnComments
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> EpAnnComments -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> EpAnnComments -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> EpAnnComments -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> EpAnnComments -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> EpAnnComments -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> EpAnnComments -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> EpAnnComments -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> EpAnnComments -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> EpAnnComments -> m EpAnnComments
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> EpAnnComments -> m EpAnnComments
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpAnnComments -> m EpAnnComments
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpAnnComments -> m EpAnnComments
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpAnnComments -> m EpAnnComments
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> EpAnnComments -> m EpAnnComments
Data, EpAnnComments -> EpAnnComments -> Bool
(EpAnnComments -> EpAnnComments -> Bool)
-> (EpAnnComments -> EpAnnComments -> Bool) -> Eq EpAnnComments
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: EpAnnComments -> EpAnnComments -> Bool
== :: EpAnnComments -> EpAnnComments -> Bool
$c/= :: EpAnnComments -> EpAnnComments -> Bool
/= :: EpAnnComments -> EpAnnComments -> Bool
Eq)
type = GenLocated NoCommentsLocation EpaComment
emptyComments :: EpAnnComments
= [LEpaComment] -> EpAnnComments
EpaComments []
type LocatedA = GenLocated SrcSpanAnnA
type LocatedN = GenLocated SrcSpanAnnN
type LocatedL = GenLocated SrcSpanAnnL
type LocatedP = GenLocated SrcSpanAnnP
type LocatedC = GenLocated SrcSpanAnnC
type SrcSpanAnnA = EpAnn AnnListItem
type SrcSpanAnnN = EpAnn NameAnn
type SrcSpanAnnL = EpAnn AnnList
type SrcSpanAnnP = EpAnn AnnPragma
type SrcSpanAnnC = EpAnn AnnContext
type LocatedE = GenLocated EpaLocation
type LocatedAn an = GenLocated (EpAnn an)
data TrailingAnn
= AddSemiAnn { TrailingAnn -> EpaLocation
ta_location :: EpaLocation }
| AddCommaAnn { ta_location :: EpaLocation }
| AddVbarAnn { ta_location :: EpaLocation }
| AddDarrowAnn { ta_location :: EpaLocation }
| AddDarrowUAnn { ta_location :: EpaLocation }
deriving (Typeable TrailingAnn
Typeable TrailingAnn =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> TrailingAnn -> c TrailingAnn)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c TrailingAnn)
-> (TrailingAnn -> Constr)
-> (TrailingAnn -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c TrailingAnn))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c TrailingAnn))
-> ((forall b. Data b => b -> b) -> TrailingAnn -> TrailingAnn)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> TrailingAnn -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> TrailingAnn -> r)
-> (forall u. (forall d. Data d => d -> u) -> TrailingAnn -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> TrailingAnn -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> TrailingAnn -> m TrailingAnn)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> TrailingAnn -> m TrailingAnn)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> TrailingAnn -> m TrailingAnn)
-> Data TrailingAnn
TrailingAnn -> Constr
TrailingAnn -> DataType
(forall b. Data b => b -> b) -> TrailingAnn -> TrailingAnn
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> TrailingAnn -> u
forall u. (forall d. Data d => d -> u) -> TrailingAnn -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> TrailingAnn -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> TrailingAnn -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> TrailingAnn -> m TrailingAnn
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> TrailingAnn -> m TrailingAnn
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c TrailingAnn
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> TrailingAnn -> c TrailingAnn
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c TrailingAnn)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c TrailingAnn)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> TrailingAnn -> c TrailingAnn
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> TrailingAnn -> c TrailingAnn
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c TrailingAnn
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c TrailingAnn
$ctoConstr :: TrailingAnn -> Constr
toConstr :: TrailingAnn -> Constr
$cdataTypeOf :: TrailingAnn -> DataType
dataTypeOf :: TrailingAnn -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c TrailingAnn)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c TrailingAnn)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c TrailingAnn)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c TrailingAnn)
$cgmapT :: (forall b. Data b => b -> b) -> TrailingAnn -> TrailingAnn
gmapT :: (forall b. Data b => b -> b) -> TrailingAnn -> TrailingAnn
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> TrailingAnn -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> TrailingAnn -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> TrailingAnn -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> TrailingAnn -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> TrailingAnn -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> TrailingAnn -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> TrailingAnn -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> TrailingAnn -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> TrailingAnn -> m TrailingAnn
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> TrailingAnn -> m TrailingAnn
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> TrailingAnn -> m TrailingAnn
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> TrailingAnn -> m TrailingAnn
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> TrailingAnn -> m TrailingAnn
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> TrailingAnn -> m TrailingAnn
Data, TrailingAnn -> TrailingAnn -> Bool
(TrailingAnn -> TrailingAnn -> Bool)
-> (TrailingAnn -> TrailingAnn -> Bool) -> Eq TrailingAnn
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TrailingAnn -> TrailingAnn -> Bool
== :: TrailingAnn -> TrailingAnn -> Bool
$c/= :: TrailingAnn -> TrailingAnn -> Bool
/= :: TrailingAnn -> TrailingAnn -> Bool
Eq)
instance Outputable TrailingAnn where
ppr :: TrailingAnn -> SDoc
ppr (AddSemiAnn EpaLocation
ss) = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"AddSemiAnn" SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> EpaLocation -> SDoc
forall a. Outputable a => a -> SDoc
ppr EpaLocation
ss
ppr (AddCommaAnn EpaLocation
ss) = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"AddCommaAnn" SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> EpaLocation -> SDoc
forall a. Outputable a => a -> SDoc
ppr EpaLocation
ss
ppr (AddVbarAnn EpaLocation
ss) = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"AddVbarAnn" SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> EpaLocation -> SDoc
forall a. Outputable a => a -> SDoc
ppr EpaLocation
ss
ppr (AddDarrowAnn EpaLocation
ss) = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"AddDarrowAnn" SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> EpaLocation -> SDoc
forall a. Outputable a => a -> SDoc
ppr EpaLocation
ss
ppr (AddDarrowUAnn EpaLocation
ss) = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"AddDarrowUAnn" SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> EpaLocation -> SDoc
forall a. Outputable a => a -> SDoc
ppr EpaLocation
ss
data AnnListItem
= AnnListItem {
AnnListItem -> [TrailingAnn]
lann_trailing :: [TrailingAnn]
}
deriving (Typeable AnnListItem
Typeable AnnListItem =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnListItem -> c AnnListItem)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AnnListItem)
-> (AnnListItem -> Constr)
-> (AnnListItem -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AnnListItem))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c AnnListItem))
-> ((forall b. Data b => b -> b) -> AnnListItem -> AnnListItem)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnListItem -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnListItem -> r)
-> (forall u. (forall d. Data d => d -> u) -> AnnListItem -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> AnnListItem -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AnnListItem -> m AnnListItem)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnListItem -> m AnnListItem)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnListItem -> m AnnListItem)
-> Data AnnListItem
AnnListItem -> Constr
AnnListItem -> DataType
(forall b. Data b => b -> b) -> AnnListItem -> AnnListItem
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> AnnListItem -> u
forall u. (forall d. Data d => d -> u) -> AnnListItem -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnListItem -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnListItem -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AnnListItem -> m AnnListItem
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnListItem -> m AnnListItem
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AnnListItem
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnListItem -> c AnnListItem
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AnnListItem)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c AnnListItem)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnListItem -> c AnnListItem
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnListItem -> c AnnListItem
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AnnListItem
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AnnListItem
$ctoConstr :: AnnListItem -> Constr
toConstr :: AnnListItem -> Constr
$cdataTypeOf :: AnnListItem -> DataType
dataTypeOf :: AnnListItem -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AnnListItem)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AnnListItem)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c AnnListItem)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c AnnListItem)
$cgmapT :: (forall b. Data b => b -> b) -> AnnListItem -> AnnListItem
gmapT :: (forall b. Data b => b -> b) -> AnnListItem -> AnnListItem
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnListItem -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnListItem -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnListItem -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnListItem -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> AnnListItem -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> AnnListItem -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> AnnListItem -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> AnnListItem -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AnnListItem -> m AnnListItem
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AnnListItem -> m AnnListItem
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnListItem -> m AnnListItem
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnListItem -> m AnnListItem
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnListItem -> m AnnListItem
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnListItem -> m AnnListItem
Data, AnnListItem -> AnnListItem -> Bool
(AnnListItem -> AnnListItem -> Bool)
-> (AnnListItem -> AnnListItem -> Bool) -> Eq AnnListItem
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AnnListItem -> AnnListItem -> Bool
== :: AnnListItem -> AnnListItem -> Bool
$c/= :: AnnListItem -> AnnListItem -> Bool
/= :: AnnListItem -> AnnListItem -> Bool
Eq)
data AnnList
= AnnList {
AnnList -> Maybe EpaLocation
al_anchor :: Maybe Anchor,
AnnList -> Maybe AddEpAnn
al_open :: Maybe AddEpAnn,
AnnList -> Maybe AddEpAnn
al_close :: Maybe AddEpAnn,
AnnList -> [AddEpAnn]
al_rest :: [AddEpAnn],
AnnList -> [TrailingAnn]
al_trailing :: [TrailingAnn]
} deriving (Typeable AnnList
Typeable AnnList =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnList -> c AnnList)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AnnList)
-> (AnnList -> Constr)
-> (AnnList -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AnnList))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AnnList))
-> ((forall b. Data b => b -> b) -> AnnList -> AnnList)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnList -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnList -> r)
-> (forall u. (forall d. Data d => d -> u) -> AnnList -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> AnnList -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AnnList -> m AnnList)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnList -> m AnnList)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnList -> m AnnList)
-> Data AnnList
AnnList -> Constr
AnnList -> DataType
(forall b. Data b => b -> b) -> AnnList -> AnnList
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> AnnList -> u
forall u. (forall d. Data d => d -> u) -> AnnList -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnList -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnList -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AnnList -> m AnnList
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnList -> m AnnList
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AnnList
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnList -> c AnnList
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AnnList)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AnnList)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnList -> c AnnList
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnList -> c AnnList
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AnnList
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AnnList
$ctoConstr :: AnnList -> Constr
toConstr :: AnnList -> Constr
$cdataTypeOf :: AnnList -> DataType
dataTypeOf :: AnnList -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AnnList)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AnnList)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AnnList)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AnnList)
$cgmapT :: (forall b. Data b => b -> b) -> AnnList -> AnnList
gmapT :: (forall b. Data b => b -> b) -> AnnList -> AnnList
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnList -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnList -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnList -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnList -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> AnnList -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> AnnList -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> AnnList -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> AnnList -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AnnList -> m AnnList
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AnnList -> m AnnList
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnList -> m AnnList
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnList -> m AnnList
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnList -> m AnnList
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnList -> m AnnList
Data,AnnList -> AnnList -> Bool
(AnnList -> AnnList -> Bool)
-> (AnnList -> AnnList -> Bool) -> Eq AnnList
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AnnList -> AnnList -> Bool
== :: AnnList -> AnnList -> Bool
$c/= :: AnnList -> AnnList -> Bool
/= :: AnnList -> AnnList -> Bool
Eq)
data AnnParen
= AnnParen {
AnnParen -> ParenType
ap_adornment :: ParenType,
AnnParen -> EpaLocation
ap_open :: EpaLocation,
AnnParen -> EpaLocation
ap_close :: EpaLocation
} deriving (Typeable AnnParen
Typeable AnnParen =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnParen -> c AnnParen)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AnnParen)
-> (AnnParen -> Constr)
-> (AnnParen -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AnnParen))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AnnParen))
-> ((forall b. Data b => b -> b) -> AnnParen -> AnnParen)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnParen -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnParen -> r)
-> (forall u. (forall d. Data d => d -> u) -> AnnParen -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> AnnParen -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AnnParen -> m AnnParen)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnParen -> m AnnParen)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnParen -> m AnnParen)
-> Data AnnParen
AnnParen -> Constr
AnnParen -> DataType
(forall b. Data b => b -> b) -> AnnParen -> AnnParen
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> AnnParen -> u
forall u. (forall d. Data d => d -> u) -> AnnParen -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnParen -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnParen -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AnnParen -> m AnnParen
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnParen -> m AnnParen
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AnnParen
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnParen -> c AnnParen
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AnnParen)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AnnParen)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnParen -> c AnnParen
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnParen -> c AnnParen
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AnnParen
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AnnParen
$ctoConstr :: AnnParen -> Constr
toConstr :: AnnParen -> Constr
$cdataTypeOf :: AnnParen -> DataType
dataTypeOf :: AnnParen -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AnnParen)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AnnParen)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AnnParen)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AnnParen)
$cgmapT :: (forall b. Data b => b -> b) -> AnnParen -> AnnParen
gmapT :: (forall b. Data b => b -> b) -> AnnParen -> AnnParen
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnParen -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnParen -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnParen -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnParen -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> AnnParen -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> AnnParen -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> AnnParen -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> AnnParen -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AnnParen -> m AnnParen
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AnnParen -> m AnnParen
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnParen -> m AnnParen
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnParen -> m AnnParen
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnParen -> m AnnParen
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnParen -> m AnnParen
Data)
data ParenType
= AnnParens
| AnnParensHash
| AnnParensSquare
deriving (ParenType -> ParenType -> Bool
(ParenType -> ParenType -> Bool)
-> (ParenType -> ParenType -> Bool) -> Eq ParenType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ParenType -> ParenType -> Bool
== :: ParenType -> ParenType -> Bool
$c/= :: ParenType -> ParenType -> Bool
/= :: ParenType -> ParenType -> Bool
Eq, Eq ParenType
Eq ParenType =>
(ParenType -> ParenType -> Ordering)
-> (ParenType -> ParenType -> Bool)
-> (ParenType -> ParenType -> Bool)
-> (ParenType -> ParenType -> Bool)
-> (ParenType -> ParenType -> Bool)
-> (ParenType -> ParenType -> ParenType)
-> (ParenType -> ParenType -> ParenType)
-> Ord ParenType
ParenType -> ParenType -> Bool
ParenType -> ParenType -> Ordering
ParenType -> ParenType -> ParenType
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: ParenType -> ParenType -> Ordering
compare :: ParenType -> ParenType -> Ordering
$c< :: ParenType -> ParenType -> Bool
< :: ParenType -> ParenType -> Bool
$c<= :: ParenType -> ParenType -> Bool
<= :: ParenType -> ParenType -> Bool
$c> :: ParenType -> ParenType -> Bool
> :: ParenType -> ParenType -> Bool
$c>= :: ParenType -> ParenType -> Bool
>= :: ParenType -> ParenType -> Bool
$cmax :: ParenType -> ParenType -> ParenType
max :: ParenType -> ParenType -> ParenType
$cmin :: ParenType -> ParenType -> ParenType
min :: ParenType -> ParenType -> ParenType
Ord, Typeable ParenType
Typeable ParenType =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> ParenType -> c ParenType)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c ParenType)
-> (ParenType -> Constr)
-> (ParenType -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c ParenType))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ParenType))
-> ((forall b. Data b => b -> b) -> ParenType -> ParenType)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> ParenType -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> ParenType -> r)
-> (forall u. (forall d. Data d => d -> u) -> ParenType -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> ParenType -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> ParenType -> m ParenType)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> ParenType -> m ParenType)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> ParenType -> m ParenType)
-> Data ParenType
ParenType -> Constr
ParenType -> DataType
(forall b. Data b => b -> b) -> ParenType -> ParenType
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> ParenType -> u
forall u. (forall d. Data d => d -> u) -> ParenType -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> ParenType -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> ParenType -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> ParenType -> m ParenType
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> ParenType -> m ParenType
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c ParenType
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> ParenType -> c ParenType
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c ParenType)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ParenType)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> ParenType -> c ParenType
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> ParenType -> c ParenType
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c ParenType
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c ParenType
$ctoConstr :: ParenType -> Constr
toConstr :: ParenType -> Constr
$cdataTypeOf :: ParenType -> DataType
dataTypeOf :: ParenType -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c ParenType)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c ParenType)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ParenType)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ParenType)
$cgmapT :: (forall b. Data b => b -> b) -> ParenType -> ParenType
gmapT :: (forall b. Data b => b -> b) -> ParenType -> ParenType
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> ParenType -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> ParenType -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> ParenType -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> ParenType -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> ParenType -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> ParenType -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> ParenType -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> ParenType -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> ParenType -> m ParenType
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> ParenType -> m ParenType
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> ParenType -> m ParenType
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> ParenType -> m ParenType
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> ParenType -> m ParenType
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> ParenType -> m ParenType
Data, Int -> ParenType -> ShowS
[ParenType] -> ShowS
ParenType -> String
(Int -> ParenType -> ShowS)
-> (ParenType -> String)
-> ([ParenType] -> ShowS)
-> Show ParenType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ParenType -> ShowS
showsPrec :: Int -> ParenType -> ShowS
$cshow :: ParenType -> String
show :: ParenType -> String
$cshowList :: [ParenType] -> ShowS
showList :: [ParenType] -> ShowS
Show)
parenTypeKws :: ParenType -> (AnnKeywordId, AnnKeywordId)
parenTypeKws :: ParenType -> (AnnKeywordId, AnnKeywordId)
parenTypeKws ParenType
AnnParens = (AnnKeywordId
AnnOpenP, AnnKeywordId
AnnCloseP)
parenTypeKws ParenType
AnnParensHash = (AnnKeywordId
AnnOpenPH, AnnKeywordId
AnnClosePH)
parenTypeKws ParenType
AnnParensSquare = (AnnKeywordId
AnnOpenS, AnnKeywordId
AnnCloseS)
data AnnContext
= AnnContext {
AnnContext -> Maybe (IsUnicodeSyntax, EpaLocation)
ac_darrow :: Maybe (IsUnicodeSyntax, EpaLocation),
AnnContext -> [EpaLocation]
ac_open :: [EpaLocation],
AnnContext -> [EpaLocation]
ac_close :: [EpaLocation]
} deriving (Typeable AnnContext
Typeable AnnContext =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnContext -> c AnnContext)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AnnContext)
-> (AnnContext -> Constr)
-> (AnnContext -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AnnContext))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c AnnContext))
-> ((forall b. Data b => b -> b) -> AnnContext -> AnnContext)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnContext -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnContext -> r)
-> (forall u. (forall d. Data d => d -> u) -> AnnContext -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> AnnContext -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AnnContext -> m AnnContext)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnContext -> m AnnContext)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnContext -> m AnnContext)
-> Data AnnContext
AnnContext -> Constr
AnnContext -> DataType
(forall b. Data b => b -> b) -> AnnContext -> AnnContext
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> AnnContext -> u
forall u. (forall d. Data d => d -> u) -> AnnContext -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnContext -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnContext -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AnnContext -> m AnnContext
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnContext -> m AnnContext
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AnnContext
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnContext -> c AnnContext
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AnnContext)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AnnContext)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnContext -> c AnnContext
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnContext -> c AnnContext
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AnnContext
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AnnContext
$ctoConstr :: AnnContext -> Constr
toConstr :: AnnContext -> Constr
$cdataTypeOf :: AnnContext -> DataType
dataTypeOf :: AnnContext -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AnnContext)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AnnContext)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AnnContext)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AnnContext)
$cgmapT :: (forall b. Data b => b -> b) -> AnnContext -> AnnContext
gmapT :: (forall b. Data b => b -> b) -> AnnContext -> AnnContext
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnContext -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnContext -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnContext -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnContext -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> AnnContext -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> AnnContext -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> AnnContext -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> AnnContext -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AnnContext -> m AnnContext
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AnnContext -> m AnnContext
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnContext -> m AnnContext
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnContext -> m AnnContext
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnContext -> m AnnContext
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnContext -> m AnnContext
Data)
data NameAnn
= NameAnn {
NameAnn -> NameAdornment
nann_adornment :: NameAdornment,
NameAnn -> EpaLocation
nann_open :: EpaLocation,
NameAnn -> EpaLocation
nann_name :: EpaLocation,
NameAnn -> EpaLocation
nann_close :: EpaLocation,
NameAnn -> [TrailingAnn]
nann_trailing :: [TrailingAnn]
}
| NameAnnCommas {
nann_adornment :: NameAdornment,
nann_open :: EpaLocation,
NameAnn -> [EpaLocation]
nann_commas :: [EpaLocation],
nann_close :: EpaLocation,
nann_trailing :: [TrailingAnn]
}
| NameAnnBars {
nann_adornment :: NameAdornment,
nann_open :: EpaLocation,
NameAnn -> [EpaLocation]
nann_bars :: [EpaLocation],
nann_close :: EpaLocation,
nann_trailing :: [TrailingAnn]
}
| NameAnnOnly {
nann_adornment :: NameAdornment,
nann_open :: EpaLocation,
nann_close :: EpaLocation,
nann_trailing :: [TrailingAnn]
}
| NameAnnRArrow {
NameAnn -> Bool
nann_unicode :: Bool,
NameAnn -> Maybe EpaLocation
nann_mopen :: Maybe EpaLocation,
nann_name :: EpaLocation,
NameAnn -> Maybe EpaLocation
nann_mclose :: Maybe EpaLocation,
nann_trailing :: [TrailingAnn]
}
| NameAnnQuote {
NameAnn -> EpaLocation
nann_quote :: EpaLocation,
NameAnn -> SrcSpanAnnN
nann_quoted :: SrcSpanAnnN,
nann_trailing :: [TrailingAnn]
}
| NameAnnTrailing {
nann_trailing :: [TrailingAnn]
}
deriving (Typeable NameAnn
Typeable NameAnn =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NameAnn -> c NameAnn)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NameAnn)
-> (NameAnn -> Constr)
-> (NameAnn -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c NameAnn))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NameAnn))
-> ((forall b. Data b => b -> b) -> NameAnn -> NameAnn)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> NameAnn -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> NameAnn -> r)
-> (forall u. (forall d. Data d => d -> u) -> NameAnn -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> NameAnn -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> NameAnn -> m NameAnn)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NameAnn -> m NameAnn)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NameAnn -> m NameAnn)
-> Data NameAnn
NameAnn -> Constr
NameAnn -> DataType
(forall b. Data b => b -> b) -> NameAnn -> NameAnn
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> NameAnn -> u
forall u. (forall d. Data d => d -> u) -> NameAnn -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> NameAnn -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> NameAnn -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> NameAnn -> m NameAnn
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NameAnn -> m NameAnn
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NameAnn
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NameAnn -> c NameAnn
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c NameAnn)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NameAnn)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NameAnn -> c NameAnn
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NameAnn -> c NameAnn
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NameAnn
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NameAnn
$ctoConstr :: NameAnn -> Constr
toConstr :: NameAnn -> Constr
$cdataTypeOf :: NameAnn -> DataType
dataTypeOf :: NameAnn -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c NameAnn)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c NameAnn)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NameAnn)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NameAnn)
$cgmapT :: (forall b. Data b => b -> b) -> NameAnn -> NameAnn
gmapT :: (forall b. Data b => b -> b) -> NameAnn -> NameAnn
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> NameAnn -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> NameAnn -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> NameAnn -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> NameAnn -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> NameAnn -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> NameAnn -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> NameAnn -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> NameAnn -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> NameAnn -> m NameAnn
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> NameAnn -> m NameAnn
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NameAnn -> m NameAnn
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NameAnn -> m NameAnn
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NameAnn -> m NameAnn
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NameAnn -> m NameAnn
Data, NameAnn -> NameAnn -> Bool
(NameAnn -> NameAnn -> Bool)
-> (NameAnn -> NameAnn -> Bool) -> Eq NameAnn
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: NameAnn -> NameAnn -> Bool
== :: NameAnn -> NameAnn -> Bool
$c/= :: NameAnn -> NameAnn -> Bool
/= :: NameAnn -> NameAnn -> Bool
Eq)
data NameAdornment
= NameParens
| NameParensHash
| NameBackquotes
| NameSquare
deriving (NameAdornment -> NameAdornment -> Bool
(NameAdornment -> NameAdornment -> Bool)
-> (NameAdornment -> NameAdornment -> Bool) -> Eq NameAdornment
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: NameAdornment -> NameAdornment -> Bool
== :: NameAdornment -> NameAdornment -> Bool
$c/= :: NameAdornment -> NameAdornment -> Bool
/= :: NameAdornment -> NameAdornment -> Bool
Eq, Eq NameAdornment
Eq NameAdornment =>
(NameAdornment -> NameAdornment -> Ordering)
-> (NameAdornment -> NameAdornment -> Bool)
-> (NameAdornment -> NameAdornment -> Bool)
-> (NameAdornment -> NameAdornment -> Bool)
-> (NameAdornment -> NameAdornment -> Bool)
-> (NameAdornment -> NameAdornment -> NameAdornment)
-> (NameAdornment -> NameAdornment -> NameAdornment)
-> Ord NameAdornment
NameAdornment -> NameAdornment -> Bool
NameAdornment -> NameAdornment -> Ordering
NameAdornment -> NameAdornment -> NameAdornment
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: NameAdornment -> NameAdornment -> Ordering
compare :: NameAdornment -> NameAdornment -> Ordering
$c< :: NameAdornment -> NameAdornment -> Bool
< :: NameAdornment -> NameAdornment -> Bool
$c<= :: NameAdornment -> NameAdornment -> Bool
<= :: NameAdornment -> NameAdornment -> Bool
$c> :: NameAdornment -> NameAdornment -> Bool
> :: NameAdornment -> NameAdornment -> Bool
$c>= :: NameAdornment -> NameAdornment -> Bool
>= :: NameAdornment -> NameAdornment -> Bool
$cmax :: NameAdornment -> NameAdornment -> NameAdornment
max :: NameAdornment -> NameAdornment -> NameAdornment
$cmin :: NameAdornment -> NameAdornment -> NameAdornment
min :: NameAdornment -> NameAdornment -> NameAdornment
Ord, Typeable NameAdornment
Typeable NameAdornment =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NameAdornment -> c NameAdornment)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NameAdornment)
-> (NameAdornment -> Constr)
-> (NameAdornment -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c NameAdornment))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c NameAdornment))
-> ((forall b. Data b => b -> b) -> NameAdornment -> NameAdornment)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> NameAdornment -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> NameAdornment -> r)
-> (forall u. (forall d. Data d => d -> u) -> NameAdornment -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> NameAdornment -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> NameAdornment -> m NameAdornment)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NameAdornment -> m NameAdornment)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NameAdornment -> m NameAdornment)
-> Data NameAdornment
NameAdornment -> Constr
NameAdornment -> DataType
(forall b. Data b => b -> b) -> NameAdornment -> NameAdornment
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> NameAdornment -> u
forall u. (forall d. Data d => d -> u) -> NameAdornment -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> NameAdornment -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> NameAdornment -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> NameAdornment -> m NameAdornment
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NameAdornment -> m NameAdornment
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NameAdornment
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NameAdornment -> c NameAdornment
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c NameAdornment)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c NameAdornment)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NameAdornment -> c NameAdornment
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NameAdornment -> c NameAdornment
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NameAdornment
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NameAdornment
$ctoConstr :: NameAdornment -> Constr
toConstr :: NameAdornment -> Constr
$cdataTypeOf :: NameAdornment -> DataType
dataTypeOf :: NameAdornment -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c NameAdornment)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c NameAdornment)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c NameAdornment)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c NameAdornment)
$cgmapT :: (forall b. Data b => b -> b) -> NameAdornment -> NameAdornment
gmapT :: (forall b. Data b => b -> b) -> NameAdornment -> NameAdornment
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> NameAdornment -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> NameAdornment -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> NameAdornment -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> NameAdornment -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> NameAdornment -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> NameAdornment -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> NameAdornment -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> NameAdornment -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> NameAdornment -> m NameAdornment
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> NameAdornment -> m NameAdornment
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NameAdornment -> m NameAdornment
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NameAdornment -> m NameAdornment
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NameAdornment -> m NameAdornment
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NameAdornment -> m NameAdornment
Data)
data AnnPragma
= AnnPragma {
AnnPragma -> AddEpAnn
apr_open :: AddEpAnn,
AnnPragma -> AddEpAnn
apr_close :: AddEpAnn,
AnnPragma -> [AddEpAnn]
apr_rest :: [AddEpAnn]
} deriving (Typeable AnnPragma
Typeable AnnPragma =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnPragma -> c AnnPragma)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AnnPragma)
-> (AnnPragma -> Constr)
-> (AnnPragma -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AnnPragma))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AnnPragma))
-> ((forall b. Data b => b -> b) -> AnnPragma -> AnnPragma)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnPragma -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnPragma -> r)
-> (forall u. (forall d. Data d => d -> u) -> AnnPragma -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> AnnPragma -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AnnPragma -> m AnnPragma)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnPragma -> m AnnPragma)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnPragma -> m AnnPragma)
-> Data AnnPragma
AnnPragma -> Constr
AnnPragma -> DataType
(forall b. Data b => b -> b) -> AnnPragma -> AnnPragma
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> AnnPragma -> u
forall u. (forall d. Data d => d -> u) -> AnnPragma -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnPragma -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnPragma -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AnnPragma -> m AnnPragma
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnPragma -> m AnnPragma
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AnnPragma
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnPragma -> c AnnPragma
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AnnPragma)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AnnPragma)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnPragma -> c AnnPragma
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnPragma -> c AnnPragma
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AnnPragma
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c AnnPragma
$ctoConstr :: AnnPragma -> Constr
toConstr :: AnnPragma -> Constr
$cdataTypeOf :: AnnPragma -> DataType
dataTypeOf :: AnnPragma -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AnnPragma)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c AnnPragma)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AnnPragma)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AnnPragma)
$cgmapT :: (forall b. Data b => b -> b) -> AnnPragma -> AnnPragma
gmapT :: (forall b. Data b => b -> b) -> AnnPragma -> AnnPragma
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnPragma -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnPragma -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnPragma -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnPragma -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> AnnPragma -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> AnnPragma -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> AnnPragma -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> AnnPragma -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AnnPragma -> m AnnPragma
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> AnnPragma -> m AnnPragma
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnPragma -> m AnnPragma
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnPragma -> m AnnPragma
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnPragma -> m AnnPragma
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> AnnPragma -> m AnnPragma
Data,AnnPragma -> AnnPragma -> Bool
(AnnPragma -> AnnPragma -> Bool)
-> (AnnPragma -> AnnPragma -> Bool) -> Eq AnnPragma
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AnnPragma -> AnnPragma -> Bool
== :: AnnPragma -> AnnPragma -> Bool
$c/= :: AnnPragma -> AnnPragma -> Bool
/= :: AnnPragma -> AnnPragma -> Bool
Eq)
data AnnSortKey tag
= NoAnnSortKey
| AnnSortKey [tag]
deriving (Typeable (AnnSortKey tag)
Typeable (AnnSortKey tag) =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnSortKey tag -> c (AnnSortKey tag))
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (AnnSortKey tag))
-> (AnnSortKey tag -> Constr)
-> (AnnSortKey tag -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (AnnSortKey tag)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (AnnSortKey tag)))
-> ((forall b. Data b => b -> b)
-> AnnSortKey tag -> AnnSortKey tag)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnSortKey tag -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnSortKey tag -> r)
-> (forall u.
(forall d. Data d => d -> u) -> AnnSortKey tag -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> AnnSortKey tag -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> AnnSortKey tag -> m (AnnSortKey tag))
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> AnnSortKey tag -> m (AnnSortKey tag))
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> AnnSortKey tag -> m (AnnSortKey tag))
-> Data (AnnSortKey tag)
AnnSortKey tag -> Constr
AnnSortKey tag -> DataType
(forall b. Data b => b -> b) -> AnnSortKey tag -> AnnSortKey tag
forall tag. Data tag => Typeable (AnnSortKey tag)
forall tag. Data tag => AnnSortKey tag -> Constr
forall tag. Data tag => AnnSortKey tag -> DataType
forall tag.
Data tag =>
(forall b. Data b => b -> b) -> AnnSortKey tag -> AnnSortKey tag
forall tag u.
Data tag =>
Int -> (forall d. Data d => d -> u) -> AnnSortKey tag -> u
forall tag u.
Data tag =>
(forall d. Data d => d -> u) -> AnnSortKey tag -> [u]
forall tag r r'.
Data tag =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnSortKey tag -> r
forall tag r r'.
Data tag =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnSortKey tag -> r
forall tag (m :: * -> *).
(Data tag, Monad m) =>
(forall d. Data d => d -> m d)
-> AnnSortKey tag -> m (AnnSortKey tag)
forall tag (m :: * -> *).
(Data tag, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> AnnSortKey tag -> m (AnnSortKey tag)
forall tag (c :: * -> *).
Data tag =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (AnnSortKey tag)
forall tag (c :: * -> *).
Data tag =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnSortKey tag -> c (AnnSortKey tag)
forall tag (t :: * -> *) (c :: * -> *).
(Data tag, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (AnnSortKey tag))
forall tag (t :: * -> * -> *) (c :: * -> *).
(Data tag, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (AnnSortKey tag))
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u.
Int -> (forall d. Data d => d -> u) -> AnnSortKey tag -> u
forall u. (forall d. Data d => d -> u) -> AnnSortKey tag -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnSortKey tag -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnSortKey tag -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> AnnSortKey tag -> m (AnnSortKey tag)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> AnnSortKey tag -> m (AnnSortKey tag)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (AnnSortKey tag)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnSortKey tag -> c (AnnSortKey tag)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (AnnSortKey tag))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (AnnSortKey tag))
$cgfoldl :: forall tag (c :: * -> *).
Data tag =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnSortKey tag -> c (AnnSortKey tag)
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> AnnSortKey tag -> c (AnnSortKey tag)
$cgunfold :: forall tag (c :: * -> *).
Data tag =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (AnnSortKey tag)
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (AnnSortKey tag)
$ctoConstr :: forall tag. Data tag => AnnSortKey tag -> Constr
toConstr :: AnnSortKey tag -> Constr
$cdataTypeOf :: forall tag. Data tag => AnnSortKey tag -> DataType
dataTypeOf :: AnnSortKey tag -> DataType
$cdataCast1 :: forall tag (t :: * -> *) (c :: * -> *).
(Data tag, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (AnnSortKey tag))
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (AnnSortKey tag))
$cdataCast2 :: forall tag (t :: * -> * -> *) (c :: * -> *).
(Data tag, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (AnnSortKey tag))
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (AnnSortKey tag))
$cgmapT :: forall tag.
Data tag =>
(forall b. Data b => b -> b) -> AnnSortKey tag -> AnnSortKey tag
gmapT :: (forall b. Data b => b -> b) -> AnnSortKey tag -> AnnSortKey tag
$cgmapQl :: forall tag r r'.
Data tag =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnSortKey tag -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> AnnSortKey tag -> r
$cgmapQr :: forall tag r r'.
Data tag =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnSortKey tag -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> AnnSortKey tag -> r
$cgmapQ :: forall tag u.
Data tag =>
(forall d. Data d => d -> u) -> AnnSortKey tag -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> AnnSortKey tag -> [u]
$cgmapQi :: forall tag u.
Data tag =>
Int -> (forall d. Data d => d -> u) -> AnnSortKey tag -> u
gmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> AnnSortKey tag -> u
$cgmapM :: forall tag (m :: * -> *).
(Data tag, Monad m) =>
(forall d. Data d => d -> m d)
-> AnnSortKey tag -> m (AnnSortKey tag)
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> AnnSortKey tag -> m (AnnSortKey tag)
$cgmapMp :: forall tag (m :: * -> *).
(Data tag, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> AnnSortKey tag -> m (AnnSortKey tag)
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> AnnSortKey tag -> m (AnnSortKey tag)
$cgmapMo :: forall tag (m :: * -> *).
(Data tag, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> AnnSortKey tag -> m (AnnSortKey tag)
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> AnnSortKey tag -> m (AnnSortKey tag)
Data, AnnSortKey tag -> AnnSortKey tag -> Bool
(AnnSortKey tag -> AnnSortKey tag -> Bool)
-> (AnnSortKey tag -> AnnSortKey tag -> Bool)
-> Eq (AnnSortKey tag)
forall tag. Eq tag => AnnSortKey tag -> AnnSortKey tag -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall tag. Eq tag => AnnSortKey tag -> AnnSortKey tag -> Bool
== :: AnnSortKey tag -> AnnSortKey tag -> Bool
$c/= :: forall tag. Eq tag => AnnSortKey tag -> AnnSortKey tag -> Bool
/= :: AnnSortKey tag -> AnnSortKey tag -> Bool
Eq)
data BindTag
= BindTag
| SigDTag
deriving (BindTag -> BindTag -> Bool
(BindTag -> BindTag -> Bool)
-> (BindTag -> BindTag -> Bool) -> Eq BindTag
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: BindTag -> BindTag -> Bool
== :: BindTag -> BindTag -> Bool
$c/= :: BindTag -> BindTag -> Bool
/= :: BindTag -> BindTag -> Bool
Eq,Typeable BindTag
Typeable BindTag =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> BindTag -> c BindTag)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c BindTag)
-> (BindTag -> Constr)
-> (BindTag -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c BindTag))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c BindTag))
-> ((forall b. Data b => b -> b) -> BindTag -> BindTag)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> BindTag -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> BindTag -> r)
-> (forall u. (forall d. Data d => d -> u) -> BindTag -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> BindTag -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> BindTag -> m BindTag)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> BindTag -> m BindTag)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> BindTag -> m BindTag)
-> Data BindTag
BindTag -> Constr
BindTag -> DataType
(forall b. Data b => b -> b) -> BindTag -> BindTag
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> BindTag -> u
forall u. (forall d. Data d => d -> u) -> BindTag -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> BindTag -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> BindTag -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> BindTag -> m BindTag
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> BindTag -> m BindTag
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c BindTag
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> BindTag -> c BindTag
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c BindTag)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c BindTag)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> BindTag -> c BindTag
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> BindTag -> c BindTag
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c BindTag
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c BindTag
$ctoConstr :: BindTag -> Constr
toConstr :: BindTag -> Constr
$cdataTypeOf :: BindTag -> DataType
dataTypeOf :: BindTag -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c BindTag)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c BindTag)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c BindTag)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c BindTag)
$cgmapT :: (forall b. Data b => b -> b) -> BindTag -> BindTag
gmapT :: (forall b. Data b => b -> b) -> BindTag -> BindTag
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> BindTag -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> BindTag -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> BindTag -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> BindTag -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> BindTag -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> BindTag -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> BindTag -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> BindTag -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> BindTag -> m BindTag
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> BindTag -> m BindTag
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> BindTag -> m BindTag
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> BindTag -> m BindTag
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> BindTag -> m BindTag
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> BindTag -> m BindTag
Data,Eq BindTag
Eq BindTag =>
(BindTag -> BindTag -> Ordering)
-> (BindTag -> BindTag -> Bool)
-> (BindTag -> BindTag -> Bool)
-> (BindTag -> BindTag -> Bool)
-> (BindTag -> BindTag -> Bool)
-> (BindTag -> BindTag -> BindTag)
-> (BindTag -> BindTag -> BindTag)
-> Ord BindTag
BindTag -> BindTag -> Bool
BindTag -> BindTag -> Ordering
BindTag -> BindTag -> BindTag
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: BindTag -> BindTag -> Ordering
compare :: BindTag -> BindTag -> Ordering
$c< :: BindTag -> BindTag -> Bool
< :: BindTag -> BindTag -> Bool
$c<= :: BindTag -> BindTag -> Bool
<= :: BindTag -> BindTag -> Bool
$c> :: BindTag -> BindTag -> Bool
> :: BindTag -> BindTag -> Bool
$c>= :: BindTag -> BindTag -> Bool
>= :: BindTag -> BindTag -> Bool
$cmax :: BindTag -> BindTag -> BindTag
max :: BindTag -> BindTag -> BindTag
$cmin :: BindTag -> BindTag -> BindTag
min :: BindTag -> BindTag -> BindTag
Ord,Int -> BindTag -> ShowS
[BindTag] -> ShowS
BindTag -> String
(Int -> BindTag -> ShowS)
-> (BindTag -> String) -> ([BindTag] -> ShowS) -> Show BindTag
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> BindTag -> ShowS
showsPrec :: Int -> BindTag -> ShowS
$cshow :: BindTag -> String
show :: BindTag -> String
$cshowList :: [BindTag] -> ShowS
showList :: [BindTag] -> ShowS
Show)
data DeclTag
= ClsMethodTag
| ClsSigTag
| ClsAtTag
| ClsAtdTag
deriving (DeclTag -> DeclTag -> Bool
(DeclTag -> DeclTag -> Bool)
-> (DeclTag -> DeclTag -> Bool) -> Eq DeclTag
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DeclTag -> DeclTag -> Bool
== :: DeclTag -> DeclTag -> Bool
$c/= :: DeclTag -> DeclTag -> Bool
/= :: DeclTag -> DeclTag -> Bool
Eq,Typeable DeclTag
Typeable DeclTag =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> DeclTag -> c DeclTag)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c DeclTag)
-> (DeclTag -> Constr)
-> (DeclTag -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c DeclTag))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DeclTag))
-> ((forall b. Data b => b -> b) -> DeclTag -> DeclTag)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> DeclTag -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> DeclTag -> r)
-> (forall u. (forall d. Data d => d -> u) -> DeclTag -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> DeclTag -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> DeclTag -> m DeclTag)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> DeclTag -> m DeclTag)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> DeclTag -> m DeclTag)
-> Data DeclTag
DeclTag -> Constr
DeclTag -> DataType
(forall b. Data b => b -> b) -> DeclTag -> DeclTag
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> DeclTag -> u
forall u. (forall d. Data d => d -> u) -> DeclTag -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> DeclTag -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> DeclTag -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> DeclTag -> m DeclTag
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> DeclTag -> m DeclTag
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c DeclTag
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> DeclTag -> c DeclTag
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c DeclTag)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DeclTag)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> DeclTag -> c DeclTag
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> DeclTag -> c DeclTag
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c DeclTag
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c DeclTag
$ctoConstr :: DeclTag -> Constr
toConstr :: DeclTag -> Constr
$cdataTypeOf :: DeclTag -> DataType
dataTypeOf :: DeclTag -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c DeclTag)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c DeclTag)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DeclTag)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DeclTag)
$cgmapT :: (forall b. Data b => b -> b) -> DeclTag -> DeclTag
gmapT :: (forall b. Data b => b -> b) -> DeclTag -> DeclTag
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> DeclTag -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> DeclTag -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> DeclTag -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> DeclTag -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> DeclTag -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> DeclTag -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> DeclTag -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> DeclTag -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> DeclTag -> m DeclTag
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> DeclTag -> m DeclTag
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> DeclTag -> m DeclTag
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> DeclTag -> m DeclTag
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> DeclTag -> m DeclTag
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> DeclTag -> m DeclTag
Data,Eq DeclTag
Eq DeclTag =>
(DeclTag -> DeclTag -> Ordering)
-> (DeclTag -> DeclTag -> Bool)
-> (DeclTag -> DeclTag -> Bool)
-> (DeclTag -> DeclTag -> Bool)
-> (DeclTag -> DeclTag -> Bool)
-> (DeclTag -> DeclTag -> DeclTag)
-> (DeclTag -> DeclTag -> DeclTag)
-> Ord DeclTag
DeclTag -> DeclTag -> Bool
DeclTag -> DeclTag -> Ordering
DeclTag -> DeclTag -> DeclTag
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: DeclTag -> DeclTag -> Ordering
compare :: DeclTag -> DeclTag -> Ordering
$c< :: DeclTag -> DeclTag -> Bool
< :: DeclTag -> DeclTag -> Bool
$c<= :: DeclTag -> DeclTag -> Bool
<= :: DeclTag -> DeclTag -> Bool
$c> :: DeclTag -> DeclTag -> Bool
> :: DeclTag -> DeclTag -> Bool
$c>= :: DeclTag -> DeclTag -> Bool
>= :: DeclTag -> DeclTag -> Bool
$cmax :: DeclTag -> DeclTag -> DeclTag
max :: DeclTag -> DeclTag -> DeclTag
$cmin :: DeclTag -> DeclTag -> DeclTag
min :: DeclTag -> DeclTag -> DeclTag
Ord,Int -> DeclTag -> ShowS
[DeclTag] -> ShowS
DeclTag -> String
(Int -> DeclTag -> ShowS)
-> (DeclTag -> String) -> ([DeclTag] -> ShowS) -> Show DeclTag
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DeclTag -> ShowS
showsPrec :: Int -> DeclTag -> ShowS
$cshow :: DeclTag -> String
show :: DeclTag -> String
$cshowList :: [DeclTag] -> ShowS
showList :: [DeclTag] -> ShowS
Show)
trailingAnnToAddEpAnn :: TrailingAnn -> AddEpAnn
trailingAnnToAddEpAnn :: TrailingAnn -> AddEpAnn
trailingAnnToAddEpAnn (AddSemiAnn EpaLocation
ss) = AnnKeywordId -> EpaLocation -> AddEpAnn
AddEpAnn AnnKeywordId
AnnSemi EpaLocation
ss
trailingAnnToAddEpAnn (AddCommaAnn EpaLocation
ss) = AnnKeywordId -> EpaLocation -> AddEpAnn
AddEpAnn AnnKeywordId
AnnComma EpaLocation
ss
trailingAnnToAddEpAnn (AddVbarAnn EpaLocation
ss) = AnnKeywordId -> EpaLocation -> AddEpAnn
AddEpAnn AnnKeywordId
AnnVbar EpaLocation
ss
trailingAnnToAddEpAnn (AddDarrowUAnn EpaLocation
ss) = AnnKeywordId -> EpaLocation -> AddEpAnn
AddEpAnn AnnKeywordId
AnnDarrowU EpaLocation
ss
trailingAnnToAddEpAnn (AddDarrowAnn EpaLocation
ss) = AnnKeywordId -> EpaLocation -> AddEpAnn
AddEpAnn AnnKeywordId
AnnDarrow EpaLocation
ss
addTrailingAnnToL :: TrailingAnn -> EpAnnComments
-> EpAnn AnnList -> EpAnn AnnList
addTrailingAnnToL :: TrailingAnn -> EpAnnComments -> EpAnn AnnList -> EpAnn AnnList
addTrailingAnnToL TrailingAnn
t EpAnnComments
cs EpAnn AnnList
n = EpAnn AnnList
n { anns = addTrailing (anns n)
, comments = comments n <> cs }
where
addTrailing :: AnnList -> AnnList
addTrailing AnnList
n = AnnList
n { al_trailing = al_trailing n ++ [t]}
addTrailingAnnToA :: TrailingAnn -> EpAnnComments
-> EpAnn AnnListItem -> EpAnn AnnListItem
addTrailingAnnToA :: TrailingAnn
-> EpAnnComments -> EpAnn AnnListItem -> EpAnn AnnListItem
addTrailingAnnToA TrailingAnn
t EpAnnComments
cs EpAnn AnnListItem
n = EpAnn AnnListItem
n { anns = addTrailing (anns n)
, comments = comments n <> cs }
where
addTrailing :: AnnListItem -> AnnListItem
addTrailing AnnListItem
n = AnnListItem
n { lann_trailing = lann_trailing n ++ [t] }
addTrailingCommaToN :: EpAnn NameAnn -> EpaLocation -> EpAnn NameAnn
addTrailingCommaToN :: SrcSpanAnnN -> EpaLocation -> SrcSpanAnnN
addTrailingCommaToN SrcSpanAnnN
n EpaLocation
l = SrcSpanAnnN
n { anns = addTrailing (anns n) l }
where
addTrailing :: NameAnn -> EpaLocation -> NameAnn
addTrailing :: NameAnn -> EpaLocation -> NameAnn
addTrailing NameAnn
n EpaLocation
l = NameAnn
n { nann_trailing = nann_trailing n ++ [AddCommaAnn l]}
noTrailingN :: SrcSpanAnnN -> SrcSpanAnnN
noTrailingN :: SrcSpanAnnN -> SrcSpanAnnN
noTrailingN SrcSpanAnnN
s = SrcSpanAnnN
s { anns = (anns s) { nann_trailing = [] } }
l2l :: (HasLoc a, HasAnnotation b) => a -> b
l2l :: forall a b. (HasLoc a, HasAnnotation b) => a -> b
l2l a
a = SrcSpan -> b
forall e. HasAnnotation e => SrcSpan -> e
noAnnSrcSpan (a -> SrcSpan
forall a. HasLoc a => a -> SrcSpan
getHasLoc a
a)
la2la :: (HasLoc l, HasAnnotation l2) => GenLocated l a -> GenLocated l2 a
la2la :: forall l l2 a.
(HasLoc l, HasAnnotation l2) =>
GenLocated l a -> GenLocated l2 a
la2la (L l
la a
a) = l2 -> a -> GenLocated l2 a
forall l e. l -> e -> GenLocated l e
L (SrcSpan -> l2
forall e. HasAnnotation e => SrcSpan -> e
noAnnSrcSpan (l -> SrcSpan
forall a. HasLoc a => a -> SrcSpan
getHasLoc l
la)) a
a
locA :: (HasLoc a) => a -> SrcSpan
locA :: forall a. HasLoc a => a -> SrcSpan
locA = a -> SrcSpan
forall a. HasLoc a => a -> SrcSpan
getHasLoc
reLoc :: (HasLoc (GenLocated a e), HasAnnotation b)
=> GenLocated a e -> GenLocated b e
reLoc :: forall a e b.
(HasLoc (GenLocated a e), HasAnnotation b) =>
GenLocated a e -> GenLocated b e
reLoc (L a
la e
a) = b -> e -> GenLocated b e
forall l e. l -> e -> GenLocated l e
L (SrcSpan -> b
forall e. HasAnnotation e => SrcSpan -> e
noAnnSrcSpan (SrcSpan -> b) -> SrcSpan -> b
forall a b. (a -> b) -> a -> b
$ GenLocated a e -> SrcSpan
forall a. HasLoc a => a -> SrcSpan
locA (a -> e -> GenLocated a e
forall l e. l -> e -> GenLocated l e
L a
la e
a) ) e
a
class HasAnnotation e where
noAnnSrcSpan :: SrcSpan -> e
instance HasAnnotation SrcSpan where
noAnnSrcSpan :: SrcSpan -> SrcSpan
noAnnSrcSpan SrcSpan
l = SrcSpan
l
instance HasAnnotation EpaLocation where
noAnnSrcSpan :: SrcSpan -> EpaLocation
noAnnSrcSpan SrcSpan
l = SrcSpan -> EpaLocation
forall a. SrcSpan -> EpaLocation' a
EpaSpan SrcSpan
l
instance (NoAnn ann) => HasAnnotation (EpAnn ann) where
noAnnSrcSpan :: SrcSpan -> EpAnn ann
noAnnSrcSpan SrcSpan
l = EpaLocation -> ann -> EpAnnComments -> EpAnn ann
forall ann. EpaLocation -> ann -> EpAnnComments -> EpAnn ann
EpAnn (SrcSpan -> EpaLocation
forall a. SrcSpan -> EpaLocation' a
spanAsAnchor SrcSpan
l) ann
forall a. NoAnn a => a
noAnn EpAnnComments
emptyComments
noLocA :: (HasAnnotation e) => a -> GenLocated e a
noLocA :: forall e a. HasAnnotation e => a -> GenLocated e a
noLocA = e -> a -> GenLocated e a
forall l e. l -> e -> GenLocated l e
L (SrcSpan -> e
forall e. HasAnnotation e => SrcSpan -> e
noAnnSrcSpan SrcSpan
noSrcSpan)
getLocA :: (HasLoc a) => GenLocated a e -> SrcSpan
getLocA :: forall a e. HasLoc a => GenLocated a e -> SrcSpan
getLocA = GenLocated a e -> SrcSpan
forall a. HasLoc a => a -> SrcSpan
getHasLoc
noSrcSpanA :: (HasAnnotation e) => e
noSrcSpanA :: forall e. HasAnnotation e => e
noSrcSpanA = SrcSpan -> e
forall e. HasAnnotation e => SrcSpan -> e
noAnnSrcSpan SrcSpan
noSrcSpan
class NoAnn a where
noAnn :: a
class HasLoc a where
getHasLoc :: a -> SrcSpan
instance (HasLoc l) => HasLoc (GenLocated l a) where
getHasLoc :: GenLocated l a -> SrcSpan
getHasLoc (L l
l a
_) = l -> SrcSpan
forall a. HasLoc a => a -> SrcSpan
getHasLoc l
l
instance HasLoc SrcSpan where
getHasLoc :: SrcSpan -> SrcSpan
getHasLoc SrcSpan
l = SrcSpan
l
instance (HasLoc a) => (HasLoc (Maybe a)) where
getHasLoc :: Maybe a -> SrcSpan
getHasLoc (Just a
a) = a -> SrcSpan
forall a. HasLoc a => a -> SrcSpan
getHasLoc a
a
getHasLoc Maybe a
Nothing = SrcSpan
noSrcSpan
instance HasLoc (EpAnn a) where
getHasLoc :: EpAnn a -> SrcSpan
getHasLoc (EpAnn EpaLocation
l a
_ EpAnnComments
_) = EpaLocation -> SrcSpan
forall a. HasLoc a => a -> SrcSpan
getHasLoc EpaLocation
l
instance HasLoc EpaLocation where
getHasLoc :: EpaLocation -> SrcSpan
getHasLoc (EpaSpan SrcSpan
l) = SrcSpan
l
getHasLoc (EpaDelta DeltaPos
_ [LEpaComment]
_) = SrcSpan
noSrcSpan
getHasLocList :: HasLoc a => [a] -> SrcSpan
getHasLocList :: forall a. HasLoc a => [a] -> SrcSpan
getHasLocList [] = SrcSpan
noSrcSpan
getHasLocList [a]
xs = (SrcSpan -> SrcSpan -> SrcSpan) -> [SrcSpan] -> SrcSpan
forall a. HasCallStack => (a -> a -> a) -> [a] -> a
foldl1' SrcSpan -> SrcSpan -> SrcSpan
combineSrcSpans ([SrcSpan] -> SrcSpan) -> [SrcSpan] -> SrcSpan
forall a b. (a -> b) -> a -> b
$ (a -> SrcSpan) -> [a] -> [SrcSpan]
forall a b. (a -> b) -> [a] -> [b]
map a -> SrcSpan
forall a. HasLoc a => a -> SrcSpan
getHasLoc [a]
xs
realSrcSpan :: SrcSpan -> RealSrcSpan
realSrcSpan :: SrcSpan -> RealSrcSpan
realSrcSpan (RealSrcSpan RealSrcSpan
s Maybe BufSpan
_) = RealSrcSpan
s
realSrcSpan SrcSpan
_ = RealSrcLoc -> RealSrcLoc -> RealSrcSpan
mkRealSrcSpan RealSrcLoc
l RealSrcLoc
l
where
l :: RealSrcLoc
l = FastString -> Int -> Int -> RealSrcLoc
mkRealSrcLoc (String -> FastString
fsLit String
"realSrcSpan") (-Int
1) (-Int
1)
srcSpan2e :: SrcSpan -> EpaLocation
srcSpan2e :: SrcSpan -> EpaLocation
srcSpan2e ss :: SrcSpan
ss@(RealSrcSpan RealSrcSpan
_ Maybe BufSpan
_) = SrcSpan -> EpaLocation
forall a. SrcSpan -> EpaLocation' a
EpaSpan SrcSpan
ss
srcSpan2e SrcSpan
span = SrcSpan -> EpaLocation
forall a. SrcSpan -> EpaLocation' a
EpaSpan (RealSrcSpan -> Maybe BufSpan -> SrcSpan
RealSrcSpan (SrcSpan -> RealSrcSpan
realSrcSpan SrcSpan
span) Maybe BufSpan
forall a. Maybe a
Strict.Nothing)
reAnnC :: AnnContext -> EpAnnComments -> Located a -> LocatedC a
reAnnC :: forall a. AnnContext -> EpAnnComments -> Located a -> LocatedC a
reAnnC AnnContext
anns EpAnnComments
cs (L SrcSpan
l a
a) = SrcSpanAnnC -> a -> GenLocated SrcSpanAnnC a
forall l e. l -> e -> GenLocated l e
L (EpaLocation -> AnnContext -> EpAnnComments -> SrcSpanAnnC
forall ann. EpaLocation -> ann -> EpAnnComments -> EpAnn ann
EpAnn (SrcSpan -> EpaLocation
forall a. SrcSpan -> EpaLocation' a
spanAsAnchor SrcSpan
l) AnnContext
anns EpAnnComments
cs) a
a
reAnnL :: ann -> EpAnnComments -> Located e -> GenLocated (EpAnn ann) e
reAnnL :: forall ann e.
ann -> EpAnnComments -> Located e -> GenLocated (EpAnn ann) e
reAnnL ann
anns EpAnnComments
cs (L SrcSpan
l e
a) = EpAnn ann -> e -> GenLocated (EpAnn ann) e
forall l e. l -> e -> GenLocated l e
L (EpaLocation -> ann -> EpAnnComments -> EpAnn ann
forall ann. EpaLocation -> ann -> EpAnnComments -> EpAnn ann
EpAnn (SrcSpan -> EpaLocation
forall a. SrcSpan -> EpaLocation' a
spanAsAnchor SrcSpan
l) ann
anns EpAnnComments
cs) e
a
getLocAnn :: Located a -> SrcSpanAnnA
getLocAnn :: forall a. Located a -> EpAnn AnnListItem
getLocAnn (L SrcSpan
l a
_) = SrcSpan -> EpAnn AnnListItem
forall e. HasAnnotation e => SrcSpan -> e
noAnnSrcSpan SrcSpan
l
addAnns :: EpAnn [AddEpAnn] -> [AddEpAnn] -> EpAnnComments -> EpAnn [AddEpAnn]
addAnns :: EpAnn [AddEpAnn] -> [AddEpAnn] -> EpAnnComments -> EpAnn [AddEpAnn]
addAnns (EpAnn EpaLocation
l [AddEpAnn]
as1 EpAnnComments
cs) [AddEpAnn]
as2 EpAnnComments
cs2
= EpaLocation -> [AddEpAnn] -> EpAnnComments -> EpAnn [AddEpAnn]
forall ann. EpaLocation -> ann -> EpAnnComments -> EpAnn ann
EpAnn (EpaLocation -> [AddEpAnn] -> EpaLocation
widenAnchor EpaLocation
l ([AddEpAnn]
as1 [AddEpAnn] -> [AddEpAnn] -> [AddEpAnn]
forall a. [a] -> [a] -> [a]
++ [AddEpAnn]
as2)) ([AddEpAnn]
as1 [AddEpAnn] -> [AddEpAnn] -> [AddEpAnn]
forall a. [a] -> [a] -> [a]
++ [AddEpAnn]
as2) (EpAnnComments
cs EpAnnComments -> EpAnnComments -> EpAnnComments
forall a. Semigroup a => a -> a -> a
<> EpAnnComments
cs2)
addAnnsA :: SrcSpanAnnA -> [TrailingAnn] -> EpAnnComments -> SrcSpanAnnA
addAnnsA :: EpAnn AnnListItem
-> [TrailingAnn] -> EpAnnComments -> EpAnn AnnListItem
addAnnsA (EpAnn EpaLocation
l AnnListItem
as1 EpAnnComments
cs) [TrailingAnn]
as2 EpAnnComments
cs2
= EpaLocation -> AnnListItem -> EpAnnComments -> EpAnn AnnListItem
forall ann. EpaLocation -> ann -> EpAnnComments -> EpAnn ann
EpAnn EpaLocation
l ([TrailingAnn] -> AnnListItem
AnnListItem (AnnListItem -> [TrailingAnn]
lann_trailing AnnListItem
as1 [TrailingAnn] -> [TrailingAnn] -> [TrailingAnn]
forall a. [a] -> [a] -> [a]
++ [TrailingAnn]
as2)) (EpAnnComments
cs EpAnnComments -> EpAnnComments -> EpAnnComments
forall a. Semigroup a => a -> a -> a
<> EpAnnComments
cs2)
widenSpan :: SrcSpan -> [AddEpAnn] -> SrcSpan
widenSpan :: SrcSpan -> [AddEpAnn] -> SrcSpan
widenSpan SrcSpan
s [AddEpAnn]
as = (SrcSpan -> SrcSpan -> SrcSpan) -> SrcSpan -> [SrcSpan] -> SrcSpan
forall b a. (b -> a -> b) -> b -> [a] -> b
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl SrcSpan -> SrcSpan -> SrcSpan
combineSrcSpans SrcSpan
s ([AddEpAnn] -> [SrcSpan]
go [AddEpAnn]
as)
where
go :: [AddEpAnn] -> [SrcSpan]
go [] = []
go (AddEpAnn AnnKeywordId
_ (EpaSpan (RealSrcSpan RealSrcSpan
s Maybe BufSpan
mb)):[AddEpAnn]
rest) = RealSrcSpan -> Maybe BufSpan -> SrcSpan
RealSrcSpan RealSrcSpan
s Maybe BufSpan
mb SrcSpan -> [SrcSpan] -> [SrcSpan]
forall a. a -> [a] -> [a]
: [AddEpAnn] -> [SrcSpan]
go [AddEpAnn]
rest
go (AddEpAnn AnnKeywordId
_ (EpaSpan SrcSpan
_):[AddEpAnn]
rest) = [AddEpAnn] -> [SrcSpan]
go [AddEpAnn]
rest
go (AddEpAnn AnnKeywordId
_ (EpaDelta DeltaPos
_ [LEpaComment]
_):[AddEpAnn]
rest) = [AddEpAnn] -> [SrcSpan]
go [AddEpAnn]
rest
widenRealSpan :: RealSrcSpan -> [AddEpAnn] -> RealSrcSpan
widenRealSpan :: RealSrcSpan -> [AddEpAnn] -> RealSrcSpan
widenRealSpan RealSrcSpan
s [AddEpAnn]
as = (RealSrcSpan -> RealSrcSpan -> RealSrcSpan)
-> RealSrcSpan -> [RealSrcSpan] -> RealSrcSpan
forall b a. (b -> a -> b) -> b -> [a] -> b
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl RealSrcSpan -> RealSrcSpan -> RealSrcSpan
combineRealSrcSpans RealSrcSpan
s ([AddEpAnn] -> [RealSrcSpan]
go [AddEpAnn]
as)
where
go :: [AddEpAnn] -> [RealSrcSpan]
go [] = []
go (AddEpAnn AnnKeywordId
_ (EpaSpan (RealSrcSpan RealSrcSpan
s Maybe BufSpan
_)):[AddEpAnn]
rest) = RealSrcSpan
s RealSrcSpan -> [RealSrcSpan] -> [RealSrcSpan]
forall a. a -> [a] -> [a]
: [AddEpAnn] -> [RealSrcSpan]
go [AddEpAnn]
rest
go (AddEpAnn AnnKeywordId
_ EpaLocation
_:[AddEpAnn]
rest) = [AddEpAnn] -> [RealSrcSpan]
go [AddEpAnn]
rest
realSpanFromAnns :: [AddEpAnn] -> Strict.Maybe RealSrcSpan
realSpanFromAnns :: [AddEpAnn] -> Maybe RealSrcSpan
realSpanFromAnns [AddEpAnn]
as = Maybe RealSrcSpan -> [AddEpAnn] -> Maybe RealSrcSpan
go Maybe RealSrcSpan
forall a. Maybe a
Strict.Nothing [AddEpAnn]
as
where
combine :: Maybe RealSrcSpan -> RealSrcSpan -> Maybe RealSrcSpan
combine Maybe RealSrcSpan
Strict.Nothing RealSrcSpan
r = RealSrcSpan -> Maybe RealSrcSpan
forall a. a -> Maybe a
Strict.Just RealSrcSpan
r
combine (Strict.Just RealSrcSpan
l) RealSrcSpan
r = RealSrcSpan -> Maybe RealSrcSpan
forall a. a -> Maybe a
Strict.Just (RealSrcSpan -> Maybe RealSrcSpan)
-> RealSrcSpan -> Maybe RealSrcSpan
forall a b. (a -> b) -> a -> b
$ RealSrcSpan -> RealSrcSpan -> RealSrcSpan
combineRealSrcSpans RealSrcSpan
l RealSrcSpan
r
go :: Maybe RealSrcSpan -> [AddEpAnn] -> Maybe RealSrcSpan
go Maybe RealSrcSpan
acc [] = Maybe RealSrcSpan
acc
go Maybe RealSrcSpan
acc (AddEpAnn AnnKeywordId
_ (EpaSpan (RealSrcSpan RealSrcSpan
s Maybe BufSpan
_b)):[AddEpAnn]
rest) = Maybe RealSrcSpan -> [AddEpAnn] -> Maybe RealSrcSpan
go (Maybe RealSrcSpan -> RealSrcSpan -> Maybe RealSrcSpan
combine Maybe RealSrcSpan
acc RealSrcSpan
s) [AddEpAnn]
rest
go Maybe RealSrcSpan
acc (AddEpAnn AnnKeywordId
_ EpaLocation
_ :[AddEpAnn]
rest) = Maybe RealSrcSpan -> [AddEpAnn] -> Maybe RealSrcSpan
go Maybe RealSrcSpan
acc [AddEpAnn]
rest
bufSpanFromAnns :: [AddEpAnn] -> Strict.Maybe BufSpan
bufSpanFromAnns :: [AddEpAnn] -> Maybe BufSpan
bufSpanFromAnns [AddEpAnn]
as = Maybe BufSpan -> [AddEpAnn] -> Maybe BufSpan
go Maybe BufSpan
forall a. Maybe a
Strict.Nothing [AddEpAnn]
as
where
combine :: Maybe BufSpan -> BufSpan -> Maybe BufSpan
combine Maybe BufSpan
Strict.Nothing BufSpan
r = BufSpan -> Maybe BufSpan
forall a. a -> Maybe a
Strict.Just BufSpan
r
combine (Strict.Just BufSpan
l) BufSpan
r = BufSpan -> Maybe BufSpan
forall a. a -> Maybe a
Strict.Just (BufSpan -> Maybe BufSpan) -> BufSpan -> Maybe BufSpan
forall a b. (a -> b) -> a -> b
$ BufSpan -> BufSpan -> BufSpan
combineBufSpans BufSpan
l BufSpan
r
go :: Maybe BufSpan -> [AddEpAnn] -> Maybe BufSpan
go Maybe BufSpan
acc [] = Maybe BufSpan
acc
go Maybe BufSpan
acc (AddEpAnn AnnKeywordId
_ (EpaSpan (RealSrcSpan RealSrcSpan
_ (Strict.Just BufSpan
mb))):[AddEpAnn]
rest) = Maybe BufSpan -> [AddEpAnn] -> Maybe BufSpan
go (Maybe BufSpan -> BufSpan -> Maybe BufSpan
combine Maybe BufSpan
acc BufSpan
mb) [AddEpAnn]
rest
go Maybe BufSpan
acc (AddEpAnn AnnKeywordId
_ EpaLocation
_:[AddEpAnn]
rest) = Maybe BufSpan -> [AddEpAnn] -> Maybe BufSpan
go Maybe BufSpan
acc [AddEpAnn]
rest
widenAnchor :: Anchor -> [AddEpAnn] -> Anchor
widenAnchor :: EpaLocation -> [AddEpAnn] -> EpaLocation
widenAnchor (EpaSpan (RealSrcSpan RealSrcSpan
s Maybe BufSpan
mb)) [AddEpAnn]
as
= SrcSpan -> EpaLocation
forall a. SrcSpan -> EpaLocation' a
EpaSpan (RealSrcSpan -> Maybe BufSpan -> SrcSpan
RealSrcSpan (RealSrcSpan -> [AddEpAnn] -> RealSrcSpan
widenRealSpan RealSrcSpan
s [AddEpAnn]
as) ((BufSpan -> BufSpan -> BufSpan)
-> Maybe BufSpan -> Maybe BufSpan -> Maybe BufSpan
forall a b c. (a -> b -> c) -> Maybe a -> Maybe b -> Maybe c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 BufSpan -> BufSpan -> BufSpan
combineBufSpans Maybe BufSpan
mb ([AddEpAnn] -> Maybe BufSpan
bufSpanFromAnns [AddEpAnn]
as)))
widenAnchor (EpaSpan SrcSpan
us) [AddEpAnn]
_ = SrcSpan -> EpaLocation
forall a. SrcSpan -> EpaLocation' a
EpaSpan SrcSpan
us
widenAnchor a :: EpaLocation
a@(EpaDelta DeltaPos
_ [LEpaComment]
_) [AddEpAnn]
as = case ([AddEpAnn] -> Maybe RealSrcSpan
realSpanFromAnns [AddEpAnn]
as) of
Maybe RealSrcSpan
Strict.Nothing -> EpaLocation
a
Strict.Just RealSrcSpan
r -> SrcSpan -> EpaLocation
forall a. SrcSpan -> EpaLocation' a
EpaSpan (RealSrcSpan -> Maybe BufSpan -> SrcSpan
RealSrcSpan RealSrcSpan
r Maybe BufSpan
forall a. Maybe a
Strict.Nothing)
widenAnchorS :: Anchor -> SrcSpan -> Anchor
widenAnchorS :: EpaLocation -> SrcSpan -> EpaLocation
widenAnchorS (EpaSpan (RealSrcSpan RealSrcSpan
s Maybe BufSpan
mbe)) (RealSrcSpan RealSrcSpan
r Maybe BufSpan
mbr)
= SrcSpan -> EpaLocation
forall a. SrcSpan -> EpaLocation' a
EpaSpan (RealSrcSpan -> Maybe BufSpan -> SrcSpan
RealSrcSpan (RealSrcSpan -> RealSrcSpan -> RealSrcSpan
combineRealSrcSpans RealSrcSpan
s RealSrcSpan
r) ((BufSpan -> BufSpan -> BufSpan)
-> Maybe BufSpan -> Maybe BufSpan -> Maybe BufSpan
forall a b c. (a -> b -> c) -> Maybe a -> Maybe b -> Maybe c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 BufSpan -> BufSpan -> BufSpan
combineBufSpans Maybe BufSpan
mbe Maybe BufSpan
mbr))
widenAnchorS (EpaSpan SrcSpan
us) SrcSpan
_ = SrcSpan -> EpaLocation
forall a. SrcSpan -> EpaLocation' a
EpaSpan SrcSpan
us
widenAnchorS (EpaDelta DeltaPos
_ [LEpaComment]
_) (RealSrcSpan RealSrcSpan
r Maybe BufSpan
mb) = SrcSpan -> EpaLocation
forall a. SrcSpan -> EpaLocation' a
EpaSpan (RealSrcSpan -> Maybe BufSpan -> SrcSpan
RealSrcSpan RealSrcSpan
r Maybe BufSpan
mb)
widenAnchorS EpaLocation
anc SrcSpan
_ = EpaLocation
anc
widenLocatedAn :: EpAnn an -> [AddEpAnn] -> EpAnn an
widenLocatedAn :: forall an. EpAnn an -> [AddEpAnn] -> EpAnn an
widenLocatedAn (EpAnn (EpaSpan SrcSpan
l) an
a EpAnnComments
cs) [AddEpAnn]
as = EpaLocation -> an -> EpAnnComments -> EpAnn an
forall ann. EpaLocation -> ann -> EpAnnComments -> EpAnn ann
EpAnn (SrcSpan -> EpaLocation
forall a. SrcSpan -> EpaLocation' a
spanAsAnchor SrcSpan
l') an
a EpAnnComments
cs
where
l' :: SrcSpan
l' = SrcSpan -> [AddEpAnn] -> SrcSpan
widenSpan SrcSpan
l [AddEpAnn]
as
widenLocatedAn (EpAnn EpaLocation
anc an
a EpAnnComments
cs) [AddEpAnn]
_as = EpaLocation -> an -> EpAnnComments -> EpAnn an
forall ann. EpaLocation -> ann -> EpAnnComments -> EpAnn ann
EpAnn EpaLocation
anc an
a EpAnnComments
cs
epAnnAnns :: EpAnn [AddEpAnn] -> [AddEpAnn]
epAnnAnns :: EpAnn [AddEpAnn] -> [AddEpAnn]
epAnnAnns (EpAnn EpaLocation
_ [AddEpAnn]
anns EpAnnComments
_) = [AddEpAnn]
anns
annParen2AddEpAnn :: AnnParen -> [AddEpAnn]
annParen2AddEpAnn :: AnnParen -> [AddEpAnn]
annParen2AddEpAnn (AnnParen ParenType
pt EpaLocation
o EpaLocation
c)
= [AnnKeywordId -> EpaLocation -> AddEpAnn
AddEpAnn AnnKeywordId
ai EpaLocation
o, AnnKeywordId -> EpaLocation -> AddEpAnn
AddEpAnn AnnKeywordId
ac EpaLocation
c]
where
(AnnKeywordId
ai,AnnKeywordId
ac) = ParenType -> (AnnKeywordId, AnnKeywordId)
parenTypeKws ParenType
pt
epAnnComments :: EpAnn an -> EpAnnComments
(EpAnn EpaLocation
_ an
_ EpAnnComments
cs) = EpAnnComments
cs
sortLocatedA :: (HasLoc (EpAnn a)) => [GenLocated (EpAnn a) e] -> [GenLocated (EpAnn a) e]
sortLocatedA :: forall a e.
HasLoc (EpAnn a) =>
[GenLocated (EpAnn a) e] -> [GenLocated (EpAnn a) e]
sortLocatedA = (GenLocated (EpAnn a) e -> GenLocated (EpAnn a) e -> Ordering)
-> [GenLocated (EpAnn a) e] -> [GenLocated (EpAnn a) e]
forall a. (a -> a -> Ordering) -> [a] -> [a]
sortBy (SrcSpan -> SrcSpan -> Ordering
leftmost_smallest (SrcSpan -> SrcSpan -> Ordering)
-> (GenLocated (EpAnn a) e -> SrcSpan)
-> GenLocated (EpAnn a) e
-> GenLocated (EpAnn a) e
-> Ordering
forall b c a. (b -> b -> c) -> (a -> b) -> a -> a -> c
`on` GenLocated (EpAnn a) e -> SrcSpan
forall a e. HasLoc a => GenLocated a e -> SrcSpan
getLocA)
mapLocA :: (NoAnn ann) => (a -> b) -> GenLocated SrcSpan a -> GenLocated (EpAnn ann) b
mapLocA :: forall ann a b.
NoAnn ann =>
(a -> b) -> GenLocated SrcSpan a -> GenLocated (EpAnn ann) b
mapLocA a -> b
f (L SrcSpan
l a
a) = EpAnn ann -> b -> GenLocated (EpAnn ann) b
forall l e. l -> e -> GenLocated l e
L (SrcSpan -> EpAnn ann
forall e. HasAnnotation e => SrcSpan -> e
noAnnSrcSpan SrcSpan
l) (a -> b
f a
a)
combineLocsA :: Semigroup a => GenLocated (EpAnn a) e1 -> GenLocated (EpAnn a) e2 -> EpAnn a
combineLocsA :: forall a e1 e2.
Semigroup a =>
GenLocated (EpAnn a) e1 -> GenLocated (EpAnn a) e2 -> EpAnn a
combineLocsA (L EpAnn a
a e1
_) (L EpAnn a
b e2
_) = EpAnn a -> EpAnn a -> EpAnn a
forall a. Semigroup a => EpAnn a -> EpAnn a -> EpAnn a
combineSrcSpansA EpAnn a
a EpAnn a
b
combineSrcSpansA :: Semigroup a => EpAnn a -> EpAnn a -> EpAnn a
combineSrcSpansA :: forall a. Semigroup a => EpAnn a -> EpAnn a -> EpAnn a
combineSrcSpansA EpAnn a
aa EpAnn a
ab = EpAnn a
aa EpAnn a -> EpAnn a -> EpAnn a
forall a. Semigroup a => a -> a -> a
<> EpAnn a
ab
addCLocA :: (HasLoc a, HasLoc b, HasAnnotation l)
=> a -> b -> c -> GenLocated l c
addCLocA :: forall a b l c.
(HasLoc a, HasLoc b, HasAnnotation l) =>
a -> b -> c -> GenLocated l c
addCLocA a
a b
b c
c = l -> c -> GenLocated l c
forall l e. l -> e -> GenLocated l e
L (SrcSpan -> l
forall e. HasAnnotation e => SrcSpan -> e
noAnnSrcSpan (SrcSpan -> l) -> SrcSpan -> l
forall a b. (a -> b) -> a -> b
$ SrcSpan -> SrcSpan -> SrcSpan
combineSrcSpans (a -> SrcSpan
forall a. HasLoc a => a -> SrcSpan
getHasLoc a
a) (b -> SrcSpan
forall a. HasLoc a => a -> SrcSpan
getHasLoc b
b)) c
c
getFollowingComments :: EpAnnComments -> [LEpaComment]
(EpaComments [LEpaComment]
_) = []
getFollowingComments (EpaCommentsBalanced [LEpaComment]
_ [LEpaComment]
cs) = [LEpaComment]
cs
setFollowingComments :: EpAnnComments -> [LEpaComment] -> EpAnnComments
(EpaComments [LEpaComment]
ls) [LEpaComment]
cs = [LEpaComment] -> [LEpaComment] -> EpAnnComments
EpaCommentsBalanced [LEpaComment]
ls [LEpaComment]
cs
setFollowingComments (EpaCommentsBalanced [LEpaComment]
ls [LEpaComment]
_) [LEpaComment]
cs = [LEpaComment] -> [LEpaComment] -> EpAnnComments
EpaCommentsBalanced [LEpaComment]
ls [LEpaComment]
cs
setPriorComments :: EpAnnComments -> [LEpaComment] -> EpAnnComments
(EpaComments [LEpaComment]
_) [LEpaComment]
cs = [LEpaComment] -> EpAnnComments
EpaComments [LEpaComment]
cs
setPriorComments (EpaCommentsBalanced [LEpaComment]
_ [LEpaComment]
ts) [LEpaComment]
cs = [LEpaComment] -> [LEpaComment] -> EpAnnComments
EpaCommentsBalanced [LEpaComment]
cs [LEpaComment]
ts
type EpAnnCO = EpAnn NoEpAnns
data NoEpAnns = NoEpAnns
deriving (Typeable NoEpAnns
Typeable NoEpAnns =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NoEpAnns -> c NoEpAnns)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NoEpAnns)
-> (NoEpAnns -> Constr)
-> (NoEpAnns -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c NoEpAnns))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NoEpAnns))
-> ((forall b. Data b => b -> b) -> NoEpAnns -> NoEpAnns)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> NoEpAnns -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> NoEpAnns -> r)
-> (forall u. (forall d. Data d => d -> u) -> NoEpAnns -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> NoEpAnns -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> NoEpAnns -> m NoEpAnns)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NoEpAnns -> m NoEpAnns)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NoEpAnns -> m NoEpAnns)
-> Data NoEpAnns
NoEpAnns -> Constr
NoEpAnns -> DataType
(forall b. Data b => b -> b) -> NoEpAnns -> NoEpAnns
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> NoEpAnns -> u
forall u. (forall d. Data d => d -> u) -> NoEpAnns -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> NoEpAnns -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> NoEpAnns -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> NoEpAnns -> m NoEpAnns
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NoEpAnns -> m NoEpAnns
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NoEpAnns
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NoEpAnns -> c NoEpAnns
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c NoEpAnns)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NoEpAnns)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NoEpAnns -> c NoEpAnns
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> NoEpAnns -> c NoEpAnns
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NoEpAnns
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c NoEpAnns
$ctoConstr :: NoEpAnns -> Constr
toConstr :: NoEpAnns -> Constr
$cdataTypeOf :: NoEpAnns -> DataType
dataTypeOf :: NoEpAnns -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c NoEpAnns)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c NoEpAnns)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NoEpAnns)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c NoEpAnns)
$cgmapT :: (forall b. Data b => b -> b) -> NoEpAnns -> NoEpAnns
gmapT :: (forall b. Data b => b -> b) -> NoEpAnns -> NoEpAnns
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> NoEpAnns -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> NoEpAnns -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> NoEpAnns -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> NoEpAnns -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> NoEpAnns -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> NoEpAnns -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> NoEpAnns -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> NoEpAnns -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> NoEpAnns -> m NoEpAnns
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> NoEpAnns -> m NoEpAnns
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NoEpAnns -> m NoEpAnns
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NoEpAnns -> m NoEpAnns
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NoEpAnns -> m NoEpAnns
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> NoEpAnns -> m NoEpAnns
Data,NoEpAnns -> NoEpAnns -> Bool
(NoEpAnns -> NoEpAnns -> Bool)
-> (NoEpAnns -> NoEpAnns -> Bool) -> Eq NoEpAnns
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: NoEpAnns -> NoEpAnns -> Bool
== :: NoEpAnns -> NoEpAnns -> Bool
$c/= :: NoEpAnns -> NoEpAnns -> Bool
/= :: NoEpAnns -> NoEpAnns -> Bool
Eq,Eq NoEpAnns
Eq NoEpAnns =>
(NoEpAnns -> NoEpAnns -> Ordering)
-> (NoEpAnns -> NoEpAnns -> Bool)
-> (NoEpAnns -> NoEpAnns -> Bool)
-> (NoEpAnns -> NoEpAnns -> Bool)
-> (NoEpAnns -> NoEpAnns -> Bool)
-> (NoEpAnns -> NoEpAnns -> NoEpAnns)
-> (NoEpAnns -> NoEpAnns -> NoEpAnns)
-> Ord NoEpAnns
NoEpAnns -> NoEpAnns -> Bool
NoEpAnns -> NoEpAnns -> Ordering
NoEpAnns -> NoEpAnns -> NoEpAnns
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: NoEpAnns -> NoEpAnns -> Ordering
compare :: NoEpAnns -> NoEpAnns -> Ordering
$c< :: NoEpAnns -> NoEpAnns -> Bool
< :: NoEpAnns -> NoEpAnns -> Bool
$c<= :: NoEpAnns -> NoEpAnns -> Bool
<= :: NoEpAnns -> NoEpAnns -> Bool
$c> :: NoEpAnns -> NoEpAnns -> Bool
> :: NoEpAnns -> NoEpAnns -> Bool
$c>= :: NoEpAnns -> NoEpAnns -> Bool
>= :: NoEpAnns -> NoEpAnns -> Bool
$cmax :: NoEpAnns -> NoEpAnns -> NoEpAnns
max :: NoEpAnns -> NoEpAnns -> NoEpAnns
$cmin :: NoEpAnns -> NoEpAnns -> NoEpAnns
min :: NoEpAnns -> NoEpAnns -> NoEpAnns
Ord)
noComments ::EpAnnCO
= EpaLocation -> NoEpAnns -> EpAnnComments -> EpAnnCO
forall ann. EpaLocation -> ann -> EpAnnComments -> EpAnn ann
EpAnn EpaLocation
forall a. NoAnn a => EpaLocation' a
noSpanAnchor NoEpAnns
NoEpAnns EpAnnComments
emptyComments
placeholderRealSpan :: RealSrcSpan
placeholderRealSpan :: RealSrcSpan
placeholderRealSpan = RealSrcLoc -> RealSrcSpan
realSrcLocSpan (FastString -> Int -> Int -> RealSrcLoc
mkRealSrcLoc (String -> FastString
mkFastString String
"placeholder") (-Int
1) (-Int
1))
comment :: RealSrcSpan -> EpAnnComments -> EpAnnCO
RealSrcSpan
loc EpAnnComments
cs = EpaLocation -> NoEpAnns -> EpAnnComments -> EpAnnCO
forall ann. EpaLocation -> ann -> EpAnnComments -> EpAnn ann
EpAnn (SrcSpan -> EpaLocation
forall a. SrcSpan -> EpaLocation' a
EpaSpan (RealSrcSpan -> Maybe BufSpan -> SrcSpan
RealSrcSpan RealSrcSpan
loc Maybe BufSpan
forall a. Maybe a
Strict.Nothing)) NoEpAnns
NoEpAnns EpAnnComments
cs
addCommentsToEpAnn :: (NoAnn ann) => EpAnn ann -> EpAnnComments -> EpAnn ann
(EpAnn EpaLocation
a ann
an EpAnnComments
cs) EpAnnComments
cs' = EpaLocation -> ann -> EpAnnComments -> EpAnn ann
forall ann. EpaLocation -> ann -> EpAnnComments -> EpAnn ann
EpAnn EpaLocation
a ann
an (EpAnnComments
cs EpAnnComments -> EpAnnComments -> EpAnnComments
forall a. Semigroup a => a -> a -> a
<> EpAnnComments
cs')
setCommentsEpAnn :: (NoAnn ann) => EpAnn ann -> EpAnnComments -> EpAnn ann
(EpAnn EpaLocation
a ann
an EpAnnComments
_) EpAnnComments
cs = (EpaLocation -> ann -> EpAnnComments -> EpAnn ann
forall ann. EpaLocation -> ann -> EpAnnComments -> EpAnn ann
EpAnn EpaLocation
a ann
an EpAnnComments
cs)
transferAnnsA :: SrcSpanAnnA -> SrcSpanAnnA -> (SrcSpanAnnA, SrcSpanAnnA)
transferAnnsA :: EpAnn AnnListItem
-> EpAnn AnnListItem -> (EpAnn AnnListItem, EpAnn AnnListItem)
transferAnnsA (EpAnn EpaLocation
a AnnListItem
an EpAnnComments
cs) (EpAnn EpaLocation
a' AnnListItem
an' EpAnnComments
cs')
= (EpaLocation -> AnnListItem -> EpAnnComments -> EpAnn AnnListItem
forall ann. EpaLocation -> ann -> EpAnnComments -> EpAnn ann
EpAnn EpaLocation
a AnnListItem
forall a. NoAnn a => a
noAnn EpAnnComments
emptyComments, EpaLocation -> AnnListItem -> EpAnnComments -> EpAnn AnnListItem
forall ann. EpaLocation -> ann -> EpAnnComments -> EpAnn ann
EpAnn EpaLocation
a' (AnnListItem
an' AnnListItem -> AnnListItem -> AnnListItem
forall a. Semigroup a => a -> a -> a
<> AnnListItem
an) (EpAnnComments
cs' EpAnnComments -> EpAnnComments -> EpAnnComments
forall a. Semigroup a => a -> a -> a
<> EpAnnComments
cs))
transferFollowingA :: SrcSpanAnnA -> SrcSpanAnnA -> (SrcSpanAnnA, SrcSpanAnnA)
transferFollowingA :: EpAnn AnnListItem
-> EpAnn AnnListItem -> (EpAnn AnnListItem, EpAnn AnnListItem)
transferFollowingA (EpAnn EpaLocation
a1 AnnListItem
an1 EpAnnComments
cs1) (EpAnn EpaLocation
a2 AnnListItem
an2 EpAnnComments
cs2)
= (EpaLocation -> AnnListItem -> EpAnnComments -> EpAnn AnnListItem
forall ann. EpaLocation -> ann -> EpAnnComments -> EpAnn ann
EpAnn EpaLocation
a1 AnnListItem
forall a. NoAnn a => a
noAnn EpAnnComments
cs1', EpaLocation -> AnnListItem -> EpAnnComments -> EpAnn AnnListItem
forall ann. EpaLocation -> ann -> EpAnnComments -> EpAnn ann
EpAnn EpaLocation
a2 (AnnListItem
an1 AnnListItem -> AnnListItem -> AnnListItem
forall a. Semigroup a => a -> a -> a
<> AnnListItem
an2) EpAnnComments
cs2')
where
pc :: [LEpaComment]
pc = EpAnnComments -> [LEpaComment]
priorComments EpAnnComments
cs1
fc :: [LEpaComment]
fc = EpAnnComments -> [LEpaComment]
getFollowingComments EpAnnComments
cs1
cs1' :: EpAnnComments
cs1' = EpAnnComments -> [LEpaComment] -> EpAnnComments
setPriorComments EpAnnComments
emptyComments [LEpaComment]
pc
cs2' :: EpAnnComments
cs2' = EpAnnComments -> [LEpaComment] -> EpAnnComments
setFollowingComments EpAnnComments
cs2 [LEpaComment]
fc
transferAnnsOnlyA :: SrcSpanAnnA -> SrcSpanAnnA -> (SrcSpanAnnA, SrcSpanAnnA)
transferAnnsOnlyA :: EpAnn AnnListItem
-> EpAnn AnnListItem -> (EpAnn AnnListItem, EpAnn AnnListItem)
transferAnnsOnlyA (EpAnn EpaLocation
a AnnListItem
an EpAnnComments
cs) (EpAnn EpaLocation
a' AnnListItem
an' EpAnnComments
cs')
= (EpaLocation -> AnnListItem -> EpAnnComments -> EpAnn AnnListItem
forall ann. EpaLocation -> ann -> EpAnnComments -> EpAnn ann
EpAnn EpaLocation
a AnnListItem
forall a. NoAnn a => a
noAnn EpAnnComments
cs, EpaLocation -> AnnListItem -> EpAnnComments -> EpAnn AnnListItem
forall ann. EpaLocation -> ann -> EpAnnComments -> EpAnn ann
EpAnn EpaLocation
a' (AnnListItem
an' AnnListItem -> AnnListItem -> AnnListItem
forall a. Semigroup a => a -> a -> a
<> AnnListItem
an) EpAnnComments
cs')
transferCommentsOnlyA :: EpAnn a -> EpAnn b -> (EpAnn a, EpAnn b)
(EpAnn EpaLocation
a a
an EpAnnComments
cs) (EpAnn EpaLocation
a' b
an' EpAnnComments
cs')
= (EpaLocation -> a -> EpAnnComments -> EpAnn a
forall ann. EpaLocation -> ann -> EpAnnComments -> EpAnn ann
EpAnn EpaLocation
a a
an EpAnnComments
emptyComments, EpaLocation -> b -> EpAnnComments -> EpAnn b
forall ann. EpaLocation -> ann -> EpAnnComments -> EpAnn ann
EpAnn EpaLocation
a' b
an' (EpAnnComments
cs EpAnnComments -> EpAnnComments -> EpAnnComments
forall a. Semigroup a => a -> a -> a
<> EpAnnComments
cs'))
transferPriorCommentsA :: SrcSpanAnnA -> SrcSpanAnnA -> (SrcSpanAnnA, SrcSpanAnnA)
(EpAnn EpaLocation
a1 AnnListItem
an1 EpAnnComments
cs1) (EpAnn EpaLocation
a2 AnnListItem
an2 EpAnnComments
cs2)
= (EpaLocation -> AnnListItem -> EpAnnComments -> EpAnn AnnListItem
forall ann. EpaLocation -> ann -> EpAnnComments -> EpAnn ann
EpAnn EpaLocation
a1 AnnListItem
an1 EpAnnComments
cs1', EpaLocation -> AnnListItem -> EpAnnComments -> EpAnn AnnListItem
forall ann. EpaLocation -> ann -> EpAnnComments -> EpAnn ann
EpAnn EpaLocation
a2 AnnListItem
an2 EpAnnComments
cs2')
where
pc :: [LEpaComment]
pc = EpAnnComments -> [LEpaComment]
priorComments EpAnnComments
cs1
fc :: [LEpaComment]
fc = EpAnnComments -> [LEpaComment]
getFollowingComments EpAnnComments
cs1
cs1' :: EpAnnComments
cs1' = EpAnnComments -> [LEpaComment] -> EpAnnComments
setFollowingComments EpAnnComments
emptyComments [LEpaComment]
fc
cs2' :: EpAnnComments
cs2' = EpAnnComments -> [LEpaComment] -> EpAnnComments
setPriorComments EpAnnComments
cs2 (EpAnnComments -> [LEpaComment]
priorComments EpAnnComments
cs2 [LEpaComment] -> [LEpaComment] -> [LEpaComment]
forall a. Semigroup a => a -> a -> a
<> [LEpaComment]
pc)
commentsOnlyA :: NoAnn ann => EpAnn ann -> EpAnn ann
(EpAnn EpaLocation
a ann
_ EpAnnComments
cs) = EpaLocation -> ann -> EpAnnComments -> EpAnn ann
forall ann. EpaLocation -> ann -> EpAnnComments -> EpAnn ann
EpAnn EpaLocation
a ann
forall a. NoAnn a => a
noAnn EpAnnComments
cs
removeCommentsA :: EpAnn ann -> EpAnn ann
(EpAnn EpaLocation
a ann
an EpAnnComments
_) = EpaLocation -> ann -> EpAnnComments -> EpAnn ann
forall ann. EpaLocation -> ann -> EpAnnComments -> EpAnn ann
EpAnn EpaLocation
a ann
an EpAnnComments
emptyComments
instance (Semigroup a) => Semigroup (EpAnn a) where
(EpAnn EpaLocation
l1 a
a1 EpAnnComments
b1) <> :: EpAnn a -> EpAnn a -> EpAnn a
<> (EpAnn EpaLocation
l2 a
a2 EpAnnComments
b2) = EpaLocation -> a -> EpAnnComments -> EpAnn a
forall ann. EpaLocation -> ann -> EpAnnComments -> EpAnn ann
EpAnn (EpaLocation
l1 EpaLocation -> EpaLocation -> EpaLocation
forall a. Semigroup a => a -> a -> a
<> EpaLocation
l2) (a
a1 a -> a -> a
forall a. Semigroup a => a -> a -> a
<> a
a2) (EpAnnComments
b1 EpAnnComments -> EpAnnComments -> EpAnnComments
forall a. Semigroup a => a -> a -> a
<> EpAnnComments
b2)
instance Semigroup EpaLocation where
EpaSpan SrcSpan
s1 <> :: EpaLocation -> EpaLocation -> EpaLocation
<> EpaSpan SrcSpan
s2 = SrcSpan -> EpaLocation
forall a. SrcSpan -> EpaLocation' a
EpaSpan (SrcSpan -> SrcSpan -> SrcSpan
combineSrcSpans SrcSpan
s1 SrcSpan
s2)
EpaSpan SrcSpan
s1 <> EpaLocation
_ = SrcSpan -> EpaLocation
forall a. SrcSpan -> EpaLocation' a
EpaSpan SrcSpan
s1
EpaLocation
_ <> EpaSpan SrcSpan
s2 = SrcSpan -> EpaLocation
forall a. SrcSpan -> EpaLocation' a
EpaSpan SrcSpan
s2
EpaDelta DeltaPos
dp1 [LEpaComment]
cs1 <> EpaDelta DeltaPos
_dp2 [LEpaComment]
cs2 = DeltaPos -> [LEpaComment] -> EpaLocation
forall a. DeltaPos -> a -> EpaLocation' a
EpaDelta DeltaPos
dp1 ([LEpaComment]
cs1[LEpaComment] -> [LEpaComment] -> [LEpaComment]
forall a. Semigroup a => a -> a -> a
<>[LEpaComment]
cs2)
instance Semigroup EpAnnComments where
EpaComments [LEpaComment]
cs1 <> :: EpAnnComments -> EpAnnComments -> EpAnnComments
<> EpaComments [LEpaComment]
cs2 = [LEpaComment] -> EpAnnComments
EpaComments ([LEpaComment]
cs1 [LEpaComment] -> [LEpaComment] -> [LEpaComment]
forall a. [a] -> [a] -> [a]
++ [LEpaComment]
cs2)
EpaComments [LEpaComment]
cs1 <> EpaCommentsBalanced [LEpaComment]
cs2 [LEpaComment]
as2 = [LEpaComment] -> [LEpaComment] -> EpAnnComments
EpaCommentsBalanced ([LEpaComment]
cs1 [LEpaComment] -> [LEpaComment] -> [LEpaComment]
forall a. [a] -> [a] -> [a]
++ [LEpaComment]
cs2) [LEpaComment]
as2
EpaCommentsBalanced [LEpaComment]
cs1 [LEpaComment]
as1 <> EpaComments [LEpaComment]
cs2 = [LEpaComment] -> [LEpaComment] -> EpAnnComments
EpaCommentsBalanced ([LEpaComment]
cs1 [LEpaComment] -> [LEpaComment] -> [LEpaComment]
forall a. [a] -> [a] -> [a]
++ [LEpaComment]
cs2) [LEpaComment]
as1
EpaCommentsBalanced [LEpaComment]
cs1 [LEpaComment]
as1 <> EpaCommentsBalanced [LEpaComment]
cs2 [LEpaComment]
as2 = [LEpaComment] -> [LEpaComment] -> EpAnnComments
EpaCommentsBalanced ([LEpaComment]
cs1 [LEpaComment] -> [LEpaComment] -> [LEpaComment]
forall a. [a] -> [a] -> [a]
++ [LEpaComment]
cs2) ([LEpaComment]
as1[LEpaComment] -> [LEpaComment] -> [LEpaComment]
forall a. [a] -> [a] -> [a]
++[LEpaComment]
as2)
instance Semigroup AnnListItem where
(AnnListItem [TrailingAnn]
l1) <> :: AnnListItem -> AnnListItem -> AnnListItem
<> (AnnListItem [TrailingAnn]
l2) = [TrailingAnn] -> AnnListItem
AnnListItem ([TrailingAnn]
l1 [TrailingAnn] -> [TrailingAnn] -> [TrailingAnn]
forall a. Semigroup a => a -> a -> a
<> [TrailingAnn]
l2)
instance Semigroup (AnnSortKey tag) where
AnnSortKey tag
NoAnnSortKey <> :: AnnSortKey tag -> AnnSortKey tag -> AnnSortKey tag
<> AnnSortKey tag
x = AnnSortKey tag
x
AnnSortKey tag
x <> AnnSortKey tag
NoAnnSortKey = AnnSortKey tag
x
AnnSortKey [tag]
ls1 <> AnnSortKey [tag]
ls2 = [tag] -> AnnSortKey tag
forall tag. [tag] -> AnnSortKey tag
AnnSortKey ([tag]
ls1 [tag] -> [tag] -> [tag]
forall a. Semigroup a => a -> a -> a
<> [tag]
ls2)
instance Monoid (AnnSortKey tag) where
mempty :: AnnSortKey tag
mempty = AnnSortKey tag
forall tag. AnnSortKey tag
NoAnnSortKey
instance NoAnn EpaLocation where
noAnn :: EpaLocation
noAnn = DeltaPos -> [LEpaComment] -> EpaLocation
forall a. DeltaPos -> a -> EpaLocation' a
EpaDelta (Int -> DeltaPos
SameLine Int
0) []
instance NoAnn AnnKeywordId where
noAnn :: AnnKeywordId
noAnn = AnnKeywordId
Annlarrowtail
instance NoAnn AddEpAnn where
noAnn :: AddEpAnn
noAnn = AnnKeywordId -> EpaLocation -> AddEpAnn
AddEpAnn AnnKeywordId
forall a. NoAnn a => a
noAnn EpaLocation
forall a. NoAnn a => a
noAnn
instance NoAnn [a] where
noAnn :: [a]
noAnn = []
instance NoAnn (Maybe a) where
noAnn :: Maybe a
noAnn = Maybe a
forall a. Maybe a
Nothing
instance (NoAnn a, NoAnn b) => NoAnn (a, b) where
noAnn :: (a, b)
noAnn = (a
forall a. NoAnn a => a
noAnn, b
forall a. NoAnn a => a
noAnn)
instance NoAnn Bool where
noAnn :: Bool
noAnn = Bool
False
instance (NoAnn ann) => NoAnn (EpAnn ann) where
noAnn :: EpAnn ann
noAnn = EpaLocation -> ann -> EpAnnComments -> EpAnn ann
forall ann. EpaLocation -> ann -> EpAnnComments -> EpAnn ann
EpAnn EpaLocation
forall a. NoAnn a => EpaLocation' a
noSpanAnchor ann
forall a. NoAnn a => a
noAnn EpAnnComments
emptyComments
instance NoAnn NoEpAnns where
noAnn :: NoEpAnns
noAnn = NoEpAnns
NoEpAnns
instance NoAnn AnnListItem where
noAnn :: AnnListItem
noAnn = [TrailingAnn] -> AnnListItem
AnnListItem []
instance NoAnn AnnContext where
noAnn :: AnnContext
noAnn = Maybe (IsUnicodeSyntax, EpaLocation)
-> [EpaLocation] -> [EpaLocation] -> AnnContext
AnnContext Maybe (IsUnicodeSyntax, EpaLocation)
forall a. Maybe a
Nothing [] []
instance NoAnn AnnList where
noAnn :: AnnList
noAnn = Maybe EpaLocation
-> Maybe AddEpAnn
-> Maybe AddEpAnn
-> [AddEpAnn]
-> [TrailingAnn]
-> AnnList
AnnList Maybe EpaLocation
forall a. Maybe a
Nothing Maybe AddEpAnn
forall a. Maybe a
Nothing Maybe AddEpAnn
forall a. Maybe a
Nothing [] []
instance NoAnn NameAnn where
noAnn :: NameAnn
noAnn = [TrailingAnn] -> NameAnn
NameAnnTrailing []
instance NoAnn AnnPragma where
noAnn :: AnnPragma
noAnn = AddEpAnn -> AddEpAnn -> [AddEpAnn] -> AnnPragma
AnnPragma AddEpAnn
forall a. NoAnn a => a
noAnn AddEpAnn
forall a. NoAnn a => a
noAnn []
instance NoAnn AnnParen where
noAnn :: AnnParen
noAnn = ParenType -> EpaLocation -> EpaLocation -> AnnParen
AnnParen ParenType
AnnParens EpaLocation
forall a. NoAnn a => a
noAnn EpaLocation
forall a. NoAnn a => a
noAnn
instance NoAnn (EpToken s) where
noAnn :: EpToken s
noAnn = EpToken s
forall (s :: Symbol). EpToken s
NoEpTok
instance NoAnn (EpUniToken s t) where
noAnn :: EpUniToken s t
noAnn = EpUniToken s t
forall (s :: Symbol) (t :: Symbol). EpUniToken s t
NoEpUniTok
instance (Outputable a) => Outputable (EpAnn a) where
ppr :: EpAnn a -> SDoc
ppr (EpAnn EpaLocation
l a
a EpAnnComments
c) = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"EpAnn" SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> EpaLocation -> SDoc
forall a. Outputable a => a -> SDoc
ppr EpaLocation
l SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> a -> SDoc
forall a. Outputable a => a -> SDoc
ppr a
a SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> EpAnnComments -> SDoc
forall a. Outputable a => a -> SDoc
ppr EpAnnComments
c
instance Outputable NoEpAnns where
ppr :: NoEpAnns -> SDoc
ppr NoEpAnns
NoEpAnns = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"NoEpAnns"
instance Outputable (GenLocated NoCommentsLocation EpaComment) where
ppr :: LEpaComment -> SDoc
ppr (L EpaLocation' NoComments
l EpaComment
c) = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"L" SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> EpaLocation' NoComments -> SDoc
forall a. Outputable a => a -> SDoc
ppr EpaLocation' NoComments
l SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> EpaComment -> SDoc
forall a. Outputable a => a -> SDoc
ppr EpaComment
c
instance Outputable EpAnnComments where
ppr :: EpAnnComments -> SDoc
ppr (EpaComments [LEpaComment]
cs) = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"EpaComments" SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> [LEpaComment] -> SDoc
forall a. Outputable a => a -> SDoc
ppr [LEpaComment]
cs
ppr (EpaCommentsBalanced [LEpaComment]
cs [LEpaComment]
ts) = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"EpaCommentsBalanced" SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> [LEpaComment] -> SDoc
forall a. Outputable a => a -> SDoc
ppr [LEpaComment]
cs SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> [LEpaComment] -> SDoc
forall a. Outputable a => a -> SDoc
ppr [LEpaComment]
ts
instance (NamedThing (Located a)) => NamedThing (LocatedAn an a) where
getName :: LocatedAn an a -> Name
getName (L EpAnn an
l a
a) = Located a -> Name
forall a. NamedThing a => a -> Name
getName (SrcSpan -> a -> Located a
forall l e. l -> e -> GenLocated l e
L (EpAnn an -> SrcSpan
forall a. HasLoc a => a -> SrcSpan
locA EpAnn an
l) a
a)
instance Outputable AnnContext where
ppr :: AnnContext -> SDoc
ppr (AnnContext Maybe (IsUnicodeSyntax, EpaLocation)
a [EpaLocation]
o [EpaLocation]
c) = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"AnnContext" SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> Maybe (IsUnicodeSyntax, EpaLocation) -> SDoc
forall a. Outputable a => a -> SDoc
ppr Maybe (IsUnicodeSyntax, EpaLocation)
a SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> [EpaLocation] -> SDoc
forall a. Outputable a => a -> SDoc
ppr [EpaLocation]
o SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> [EpaLocation] -> SDoc
forall a. Outputable a => a -> SDoc
ppr [EpaLocation]
c
instance Outputable BindTag where
ppr :: BindTag -> SDoc
ppr BindTag
tag = String -> SDoc
forall doc. IsLine doc => String -> doc
text (String -> SDoc) -> String -> SDoc
forall a b. (a -> b) -> a -> b
$ BindTag -> String
forall a. Show a => a -> String
show BindTag
tag
instance Outputable DeclTag where
ppr :: DeclTag -> SDoc
ppr DeclTag
tag = String -> SDoc
forall doc. IsLine doc => String -> doc
text (String -> SDoc) -> String -> SDoc
forall a b. (a -> b) -> a -> b
$ DeclTag -> String
forall a. Show a => a -> String
show DeclTag
tag
instance Outputable tag => Outputable (AnnSortKey tag) where
ppr :: AnnSortKey tag -> SDoc
ppr AnnSortKey tag
NoAnnSortKey = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"NoAnnSortKey"
ppr (AnnSortKey [tag]
ls) = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"AnnSortKey" SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> [tag] -> SDoc
forall a. Outputable a => a -> SDoc
ppr [tag]
ls
instance Outputable IsUnicodeSyntax where
ppr :: IsUnicodeSyntax -> SDoc
ppr = String -> SDoc
forall doc. IsLine doc => String -> doc
text (String -> SDoc)
-> (IsUnicodeSyntax -> String) -> IsUnicodeSyntax -> SDoc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. IsUnicodeSyntax -> String
forall a. Show a => a -> String
show
instance (Outputable a, Outputable e)
=> Outputable (GenLocated (EpAnn a) e) where
ppr :: GenLocated (EpAnn a) e -> SDoc
ppr = GenLocated (EpAnn a) e -> SDoc
forall l e. (Outputable l, Outputable e) => GenLocated l e -> SDoc
pprLocated
instance (Outputable a, OutputableBndr e)
=> OutputableBndr (GenLocated (EpAnn a) e) where
pprInfixOcc :: GenLocated (EpAnn a) e -> SDoc
pprInfixOcc = e -> SDoc
forall a. OutputableBndr a => a -> SDoc
pprInfixOcc (e -> SDoc)
-> (GenLocated (EpAnn a) e -> e) -> GenLocated (EpAnn a) e -> SDoc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. GenLocated (EpAnn a) e -> e
forall l e. GenLocated l e -> e
unLoc
pprPrefixOcc :: GenLocated (EpAnn a) e -> SDoc
pprPrefixOcc = e -> SDoc
forall a. OutputableBndr a => a -> SDoc
pprPrefixOcc (e -> SDoc)
-> (GenLocated (EpAnn a) e -> e) -> GenLocated (EpAnn a) e -> SDoc
forall b c a. (b -> c) -> (a -> b) -> a -> c
. GenLocated (EpAnn a) e -> e
forall l e. GenLocated l e -> e
unLoc
instance (Outputable e)
=> Outputable (GenLocated EpaLocation e) where
ppr :: GenLocated EpaLocation e -> SDoc
ppr = GenLocated EpaLocation e -> SDoc
forall l e. (Outputable l, Outputable e) => GenLocated l e -> SDoc
pprLocated
instance Outputable ParenType where
ppr :: ParenType -> SDoc
ppr ParenType
t = String -> SDoc
forall doc. IsLine doc => String -> doc
text (ParenType -> String
forall a. Show a => a -> String
show ParenType
t)
instance Outputable AnnListItem where
ppr :: AnnListItem -> SDoc
ppr (AnnListItem [TrailingAnn]
ts) = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"AnnListItem" SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> [TrailingAnn] -> SDoc
forall a. Outputable a => a -> SDoc
ppr [TrailingAnn]
ts
instance Outputable NameAdornment where
ppr :: NameAdornment -> SDoc
ppr NameAdornment
NameParens = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"NameParens"
ppr NameAdornment
NameParensHash = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"NameParensHash"
ppr NameAdornment
NameBackquotes = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"NameBackquotes"
ppr NameAdornment
NameSquare = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"NameSquare"
instance Outputable NameAnn where
ppr :: NameAnn -> SDoc
ppr (NameAnn NameAdornment
a EpaLocation
o EpaLocation
n EpaLocation
c [TrailingAnn]
t)
= String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"NameAnn" SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> NameAdornment -> SDoc
forall a. Outputable a => a -> SDoc
ppr NameAdornment
a SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> EpaLocation -> SDoc
forall a. Outputable a => a -> SDoc
ppr EpaLocation
o SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> EpaLocation -> SDoc
forall a. Outputable a => a -> SDoc
ppr EpaLocation
n SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> EpaLocation -> SDoc
forall a. Outputable a => a -> SDoc
ppr EpaLocation
c SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> [TrailingAnn] -> SDoc
forall a. Outputable a => a -> SDoc
ppr [TrailingAnn]
t
ppr (NameAnnCommas NameAdornment
a EpaLocation
o [EpaLocation]
n EpaLocation
c [TrailingAnn]
t)
= String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"NameAnnCommas" SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> NameAdornment -> SDoc
forall a. Outputable a => a -> SDoc
ppr NameAdornment
a SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> EpaLocation -> SDoc
forall a. Outputable a => a -> SDoc
ppr EpaLocation
o SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> [EpaLocation] -> SDoc
forall a. Outputable a => a -> SDoc
ppr [EpaLocation]
n SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> EpaLocation -> SDoc
forall a. Outputable a => a -> SDoc
ppr EpaLocation
c SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> [TrailingAnn] -> SDoc
forall a. Outputable a => a -> SDoc
ppr [TrailingAnn]
t
ppr (NameAnnBars NameAdornment
a EpaLocation
o [EpaLocation]
n EpaLocation
b [TrailingAnn]
t)
= String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"NameAnnBars" SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> NameAdornment -> SDoc
forall a. Outputable a => a -> SDoc
ppr NameAdornment
a SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> EpaLocation -> SDoc
forall a. Outputable a => a -> SDoc
ppr EpaLocation
o SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> [EpaLocation] -> SDoc
forall a. Outputable a => a -> SDoc
ppr [EpaLocation]
n SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> EpaLocation -> SDoc
forall a. Outputable a => a -> SDoc
ppr EpaLocation
b SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> [TrailingAnn] -> SDoc
forall a. Outputable a => a -> SDoc
ppr [TrailingAnn]
t
ppr (NameAnnOnly NameAdornment
a EpaLocation
o EpaLocation
c [TrailingAnn]
t)
= String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"NameAnnOnly" SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> NameAdornment -> SDoc
forall a. Outputable a => a -> SDoc
ppr NameAdornment
a SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> EpaLocation -> SDoc
forall a. Outputable a => a -> SDoc
ppr EpaLocation
o SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> EpaLocation -> SDoc
forall a. Outputable a => a -> SDoc
ppr EpaLocation
c SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> [TrailingAnn] -> SDoc
forall a. Outputable a => a -> SDoc
ppr [TrailingAnn]
t
ppr (NameAnnRArrow Bool
u Maybe EpaLocation
o EpaLocation
n Maybe EpaLocation
c [TrailingAnn]
t)
= String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"NameAnnRArrow" SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> Bool -> SDoc
forall a. Outputable a => a -> SDoc
ppr Bool
u SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> Maybe EpaLocation -> SDoc
forall a. Outputable a => a -> SDoc
ppr Maybe EpaLocation
o SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> EpaLocation -> SDoc
forall a. Outputable a => a -> SDoc
ppr EpaLocation
n SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> Maybe EpaLocation -> SDoc
forall a. Outputable a => a -> SDoc
ppr Maybe EpaLocation
c SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> [TrailingAnn] -> SDoc
forall a. Outputable a => a -> SDoc
ppr [TrailingAnn]
t
ppr (NameAnnQuote EpaLocation
q SrcSpanAnnN
n [TrailingAnn]
t)
= String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"NameAnnQuote" SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> EpaLocation -> SDoc
forall a. Outputable a => a -> SDoc
ppr EpaLocation
q SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> SrcSpanAnnN -> SDoc
forall a. Outputable a => a -> SDoc
ppr SrcSpanAnnN
n SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> [TrailingAnn] -> SDoc
forall a. Outputable a => a -> SDoc
ppr [TrailingAnn]
t
ppr (NameAnnTrailing [TrailingAnn]
t)
= String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"NameAnnTrailing" SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> [TrailingAnn] -> SDoc
forall a. Outputable a => a -> SDoc
ppr [TrailingAnn]
t
instance Outputable AnnList where
ppr :: AnnList -> SDoc
ppr (AnnList Maybe EpaLocation
a Maybe AddEpAnn
o Maybe AddEpAnn
c [AddEpAnn]
r [TrailingAnn]
t)
= String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"AnnList" SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> Maybe EpaLocation -> SDoc
forall a. Outputable a => a -> SDoc
ppr Maybe EpaLocation
a SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> Maybe AddEpAnn -> SDoc
forall a. Outputable a => a -> SDoc
ppr Maybe AddEpAnn
o SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> Maybe AddEpAnn -> SDoc
forall a. Outputable a => a -> SDoc
ppr Maybe AddEpAnn
c SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> [AddEpAnn] -> SDoc
forall a. Outputable a => a -> SDoc
ppr [AddEpAnn]
r SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> [TrailingAnn] -> SDoc
forall a. Outputable a => a -> SDoc
ppr [TrailingAnn]
t
instance Outputable AnnPragma where
ppr :: AnnPragma -> SDoc
ppr (AnnPragma AddEpAnn
o AddEpAnn
c [AddEpAnn]
r) = String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"AnnPragma" SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> AddEpAnn -> SDoc
forall a. Outputable a => a -> SDoc
ppr AddEpAnn
o SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> AddEpAnn -> SDoc
forall a. Outputable a => a -> SDoc
ppr AddEpAnn
c SDoc -> SDoc -> SDoc
forall doc. IsLine doc => doc -> doc -> doc
<+> [AddEpAnn] -> SDoc
forall a. Outputable a => a -> SDoc
ppr [AddEpAnn]
r