{-# LANGUAGE DeriveDataTypeable, FlexibleInstances #-}

module Language.JavaScript.Parser.AST
    ( JSExpression (..)
    , JSAnnot (..)
    , JSBinOp (..)
    , JSUnaryOp (..)
    , JSSemi (..)
    , JSAssignOp (..)
    , JSTryCatch (..)
    , JSTryFinally (..)
    , JSStatement (..)
    , JSBlock (..)
    , JSSwitchParts (..)
    , JSAST (..)
    , JSObjectProperty (..)
    , JSPropertyName (..)
    , JSObjectPropertyList
    , JSAccessor (..)
    , JSMethodDefinition (..)
    , JSIdent (..)
    , JSVarInitializer (..)
    , JSArrayElement (..)
    , JSCommaList (..)
    , JSCommaTrailingList (..)
    , JSArrowParameterList (..)
    , JSTemplatePart (..)
    , JSClassHeritage (..)
    , JSClassElement (..)

    -- Modules
    , JSModuleItem (..)
    , JSImportDeclaration (..)
    , JSImportClause (..)
    , JSFromClause (..)
    , JSImportNameSpace (..)
    , JSImportsNamed (..)
    , JSImportSpecifier (..)
    , JSExportDeclaration (..)
    , JSExportClause (..)
    , JSExportSpecifier (..)

    , binOpEq
    , showStripped
    ) where

import Data.Data
import Data.List
import Language.JavaScript.Parser.SrcLocation (TokenPosn (..))
import Language.JavaScript.Parser.Token

-- ---------------------------------------------------------------------

data JSAnnot
    = JSAnnot !TokenPosn ![CommentAnnotation] -- ^Annotation: position and comment/whitespace information
    | JSAnnotSpace -- ^A single space character
    | JSNoAnnot -- ^No annotation
    deriving (Typeable JSAnnot
DataType
Constr
Typeable JSAnnot
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSAnnot -> c JSAnnot)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSAnnot)
-> (JSAnnot -> Constr)
-> (JSAnnot -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSAnnot))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSAnnot))
-> ((forall b. Data b => b -> b) -> JSAnnot -> JSAnnot)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSAnnot -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSAnnot -> r)
-> (forall u. (forall d. Data d => d -> u) -> JSAnnot -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> JSAnnot -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> JSAnnot -> m JSAnnot)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSAnnot -> m JSAnnot)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSAnnot -> m JSAnnot)
-> Data JSAnnot
JSAnnot -> DataType
JSAnnot -> Constr
(forall b. Data b => b -> b) -> JSAnnot -> JSAnnot
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSAnnot -> c JSAnnot
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSAnnot
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) -> JSAnnot -> u
forall u. (forall d. Data d => d -> u) -> JSAnnot -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSAnnot -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSAnnot -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSAnnot -> m JSAnnot
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSAnnot -> m JSAnnot
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSAnnot
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSAnnot -> c JSAnnot
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSAnnot)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSAnnot)
$cJSNoAnnot :: Constr
$cJSAnnotSpace :: Constr
$cJSAnnot :: Constr
$tJSAnnot :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> JSAnnot -> m JSAnnot
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSAnnot -> m JSAnnot
gmapMp :: (forall d. Data d => d -> m d) -> JSAnnot -> m JSAnnot
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSAnnot -> m JSAnnot
gmapM :: (forall d. Data d => d -> m d) -> JSAnnot -> m JSAnnot
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSAnnot -> m JSAnnot
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSAnnot -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> JSAnnot -> u
gmapQ :: (forall d. Data d => d -> u) -> JSAnnot -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSAnnot -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSAnnot -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSAnnot -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSAnnot -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSAnnot -> r
gmapT :: (forall b. Data b => b -> b) -> JSAnnot -> JSAnnot
$cgmapT :: (forall b. Data b => b -> b) -> JSAnnot -> JSAnnot
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSAnnot)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSAnnot)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSAnnot)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSAnnot)
dataTypeOf :: JSAnnot -> DataType
$cdataTypeOf :: JSAnnot -> DataType
toConstr :: JSAnnot -> Constr
$ctoConstr :: JSAnnot -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSAnnot
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSAnnot
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSAnnot -> c JSAnnot
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSAnnot -> c JSAnnot
$cp1Data :: Typeable JSAnnot
Data, JSAnnot -> JSAnnot -> Bool
(JSAnnot -> JSAnnot -> Bool)
-> (JSAnnot -> JSAnnot -> Bool) -> Eq JSAnnot
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSAnnot -> JSAnnot -> Bool
$c/= :: JSAnnot -> JSAnnot -> Bool
== :: JSAnnot -> JSAnnot -> Bool
$c== :: JSAnnot -> JSAnnot -> Bool
Eq, Int -> JSAnnot -> ShowS
[JSAnnot] -> ShowS
JSAnnot -> String
(Int -> JSAnnot -> ShowS)
-> (JSAnnot -> String) -> ([JSAnnot] -> ShowS) -> Show JSAnnot
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSAnnot] -> ShowS
$cshowList :: [JSAnnot] -> ShowS
show :: JSAnnot -> String
$cshow :: JSAnnot -> String
showsPrec :: Int -> JSAnnot -> ShowS
$cshowsPrec :: Int -> JSAnnot -> ShowS
Show, Typeable)


data JSAST
    = JSAstProgram ![JSStatement] !JSAnnot -- ^source elements, trailing whitespace
    | JSAstModule ![JSModuleItem] !JSAnnot
    | JSAstStatement !JSStatement !JSAnnot
    | JSAstExpression !JSExpression !JSAnnot
    | JSAstLiteral !JSExpression !JSAnnot
    deriving (Typeable JSAST
DataType
Constr
Typeable JSAST
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSAST -> c JSAST)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSAST)
-> (JSAST -> Constr)
-> (JSAST -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSAST))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSAST))
-> ((forall b. Data b => b -> b) -> JSAST -> JSAST)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> JSAST -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> JSAST -> r)
-> (forall u. (forall d. Data d => d -> u) -> JSAST -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> JSAST -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> JSAST -> m JSAST)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSAST -> m JSAST)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSAST -> m JSAST)
-> Data JSAST
JSAST -> DataType
JSAST -> Constr
(forall b. Data b => b -> b) -> JSAST -> JSAST
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSAST -> c JSAST
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSAST
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) -> JSAST -> u
forall u. (forall d. Data d => d -> u) -> JSAST -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> JSAST -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> JSAST -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSAST -> m JSAST
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSAST -> m JSAST
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSAST
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSAST -> c JSAST
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSAST)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSAST)
$cJSAstLiteral :: Constr
$cJSAstExpression :: Constr
$cJSAstStatement :: Constr
$cJSAstModule :: Constr
$cJSAstProgram :: Constr
$tJSAST :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> JSAST -> m JSAST
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSAST -> m JSAST
gmapMp :: (forall d. Data d => d -> m d) -> JSAST -> m JSAST
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSAST -> m JSAST
gmapM :: (forall d. Data d => d -> m d) -> JSAST -> m JSAST
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSAST -> m JSAST
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSAST -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> JSAST -> u
gmapQ :: (forall d. Data d => d -> u) -> JSAST -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSAST -> [u]
gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> JSAST -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> JSAST -> r
gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> JSAST -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> JSAST -> r
gmapT :: (forall b. Data b => b -> b) -> JSAST -> JSAST
$cgmapT :: (forall b. Data b => b -> b) -> JSAST -> JSAST
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSAST)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSAST)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSAST)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSAST)
dataTypeOf :: JSAST -> DataType
$cdataTypeOf :: JSAST -> DataType
toConstr :: JSAST -> Constr
$ctoConstr :: JSAST -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSAST
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSAST
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSAST -> c JSAST
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSAST -> c JSAST
$cp1Data :: Typeable JSAST
Data, JSAST -> JSAST -> Bool
(JSAST -> JSAST -> Bool) -> (JSAST -> JSAST -> Bool) -> Eq JSAST
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSAST -> JSAST -> Bool
$c/= :: JSAST -> JSAST -> Bool
== :: JSAST -> JSAST -> Bool
$c== :: JSAST -> JSAST -> Bool
Eq, Int -> JSAST -> ShowS
[JSAST] -> ShowS
JSAST -> String
(Int -> JSAST -> ShowS)
-> (JSAST -> String) -> ([JSAST] -> ShowS) -> Show JSAST
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSAST] -> ShowS
$cshowList :: [JSAST] -> ShowS
show :: JSAST -> String
$cshow :: JSAST -> String
showsPrec :: Int -> JSAST -> ShowS
$cshowsPrec :: Int -> JSAST -> ShowS
Show, Typeable)

-- Shift AST
-- https://github.com/shapesecurity/shift-spec/blob/83498b92c436180cc0e2115b225a68c08f43c53e/spec.idl#L229-L234
data JSModuleItem
    = JSModuleImportDeclaration !JSAnnot !JSImportDeclaration -- ^import,decl
    | JSModuleExportDeclaration !JSAnnot !JSExportDeclaration -- ^export,decl
    | JSModuleStatementListItem !JSStatement
    deriving (Typeable JSModuleItem
DataType
Constr
Typeable JSModuleItem
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSModuleItem -> c JSModuleItem)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSModuleItem)
-> (JSModuleItem -> Constr)
-> (JSModuleItem -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSModuleItem))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSModuleItem))
-> ((forall b. Data b => b -> b) -> JSModuleItem -> JSModuleItem)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSModuleItem -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSModuleItem -> r)
-> (forall u. (forall d. Data d => d -> u) -> JSModuleItem -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSModuleItem -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> JSModuleItem -> m JSModuleItem)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSModuleItem -> m JSModuleItem)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSModuleItem -> m JSModuleItem)
-> Data JSModuleItem
JSModuleItem -> DataType
JSModuleItem -> Constr
(forall b. Data b => b -> b) -> JSModuleItem -> JSModuleItem
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSModuleItem -> c JSModuleItem
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSModuleItem
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) -> JSModuleItem -> u
forall u. (forall d. Data d => d -> u) -> JSModuleItem -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSModuleItem -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSModuleItem -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSModuleItem -> m JSModuleItem
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSModuleItem -> m JSModuleItem
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSModuleItem
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSModuleItem -> c JSModuleItem
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSModuleItem)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSModuleItem)
$cJSModuleStatementListItem :: Constr
$cJSModuleExportDeclaration :: Constr
$cJSModuleImportDeclaration :: Constr
$tJSModuleItem :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> JSModuleItem -> m JSModuleItem
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSModuleItem -> m JSModuleItem
gmapMp :: (forall d. Data d => d -> m d) -> JSModuleItem -> m JSModuleItem
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSModuleItem -> m JSModuleItem
gmapM :: (forall d. Data d => d -> m d) -> JSModuleItem -> m JSModuleItem
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSModuleItem -> m JSModuleItem
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSModuleItem -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> JSModuleItem -> u
gmapQ :: (forall d. Data d => d -> u) -> JSModuleItem -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSModuleItem -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSModuleItem -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSModuleItem -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSModuleItem -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSModuleItem -> r
gmapT :: (forall b. Data b => b -> b) -> JSModuleItem -> JSModuleItem
$cgmapT :: (forall b. Data b => b -> b) -> JSModuleItem -> JSModuleItem
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSModuleItem)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSModuleItem)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSModuleItem)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSModuleItem)
dataTypeOf :: JSModuleItem -> DataType
$cdataTypeOf :: JSModuleItem -> DataType
toConstr :: JSModuleItem -> Constr
$ctoConstr :: JSModuleItem -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSModuleItem
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSModuleItem
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSModuleItem -> c JSModuleItem
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSModuleItem -> c JSModuleItem
$cp1Data :: Typeable JSModuleItem
Data, JSModuleItem -> JSModuleItem -> Bool
(JSModuleItem -> JSModuleItem -> Bool)
-> (JSModuleItem -> JSModuleItem -> Bool) -> Eq JSModuleItem
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSModuleItem -> JSModuleItem -> Bool
$c/= :: JSModuleItem -> JSModuleItem -> Bool
== :: JSModuleItem -> JSModuleItem -> Bool
$c== :: JSModuleItem -> JSModuleItem -> Bool
Eq, Int -> JSModuleItem -> ShowS
[JSModuleItem] -> ShowS
JSModuleItem -> String
(Int -> JSModuleItem -> ShowS)
-> (JSModuleItem -> String)
-> ([JSModuleItem] -> ShowS)
-> Show JSModuleItem
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSModuleItem] -> ShowS
$cshowList :: [JSModuleItem] -> ShowS
show :: JSModuleItem -> String
$cshow :: JSModuleItem -> String
showsPrec :: Int -> JSModuleItem -> ShowS
$cshowsPrec :: Int -> JSModuleItem -> ShowS
Show, Typeable)

data JSImportDeclaration
    = JSImportDeclaration !JSImportClause !JSFromClause !JSSemi -- ^imports, module, semi
    | JSImportDeclarationBare !JSAnnot !String !JSSemi -- ^module, module, semi
    deriving (Typeable JSImportDeclaration
DataType
Constr
Typeable JSImportDeclaration
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g)
    -> JSImportDeclaration
    -> c JSImportDeclaration)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSImportDeclaration)
-> (JSImportDeclaration -> Constr)
-> (JSImportDeclaration -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSImportDeclaration))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSImportDeclaration))
-> ((forall b. Data b => b -> b)
    -> JSImportDeclaration -> JSImportDeclaration)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSImportDeclaration -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSImportDeclaration -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> JSImportDeclaration -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSImportDeclaration -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> JSImportDeclaration -> m JSImportDeclaration)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSImportDeclaration -> m JSImportDeclaration)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSImportDeclaration -> m JSImportDeclaration)
-> Data JSImportDeclaration
JSImportDeclaration -> DataType
JSImportDeclaration -> Constr
(forall b. Data b => b -> b)
-> JSImportDeclaration -> JSImportDeclaration
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> JSImportDeclaration
-> c JSImportDeclaration
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSImportDeclaration
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) -> JSImportDeclaration -> u
forall u.
(forall d. Data d => d -> u) -> JSImportDeclaration -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportDeclaration -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportDeclaration -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSImportDeclaration -> m JSImportDeclaration
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSImportDeclaration -> m JSImportDeclaration
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSImportDeclaration
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> JSImportDeclaration
-> c JSImportDeclaration
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSImportDeclaration)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSImportDeclaration)
$cJSImportDeclarationBare :: Constr
$cJSImportDeclaration :: Constr
$tJSImportDeclaration :: DataType
gmapMo :: (forall d. Data d => d -> m d)
-> JSImportDeclaration -> m JSImportDeclaration
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSImportDeclaration -> m JSImportDeclaration
gmapMp :: (forall d. Data d => d -> m d)
-> JSImportDeclaration -> m JSImportDeclaration
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSImportDeclaration -> m JSImportDeclaration
gmapM :: (forall d. Data d => d -> m d)
-> JSImportDeclaration -> m JSImportDeclaration
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSImportDeclaration -> m JSImportDeclaration
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSImportDeclaration -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> JSImportDeclaration -> u
gmapQ :: (forall d. Data d => d -> u) -> JSImportDeclaration -> [u]
$cgmapQ :: forall u.
(forall d. Data d => d -> u) -> JSImportDeclaration -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportDeclaration -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportDeclaration -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportDeclaration -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportDeclaration -> r
gmapT :: (forall b. Data b => b -> b)
-> JSImportDeclaration -> JSImportDeclaration
$cgmapT :: (forall b. Data b => b -> b)
-> JSImportDeclaration -> JSImportDeclaration
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSImportDeclaration)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSImportDeclaration)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSImportDeclaration)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSImportDeclaration)
dataTypeOf :: JSImportDeclaration -> DataType
$cdataTypeOf :: JSImportDeclaration -> DataType
toConstr :: JSImportDeclaration -> Constr
$ctoConstr :: JSImportDeclaration -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSImportDeclaration
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSImportDeclaration
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> JSImportDeclaration
-> c JSImportDeclaration
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> JSImportDeclaration
-> c JSImportDeclaration
$cp1Data :: Typeable JSImportDeclaration
Data, JSImportDeclaration -> JSImportDeclaration -> Bool
(JSImportDeclaration -> JSImportDeclaration -> Bool)
-> (JSImportDeclaration -> JSImportDeclaration -> Bool)
-> Eq JSImportDeclaration
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSImportDeclaration -> JSImportDeclaration -> Bool
$c/= :: JSImportDeclaration -> JSImportDeclaration -> Bool
== :: JSImportDeclaration -> JSImportDeclaration -> Bool
$c== :: JSImportDeclaration -> JSImportDeclaration -> Bool
Eq, Int -> JSImportDeclaration -> ShowS
[JSImportDeclaration] -> ShowS
JSImportDeclaration -> String
(Int -> JSImportDeclaration -> ShowS)
-> (JSImportDeclaration -> String)
-> ([JSImportDeclaration] -> ShowS)
-> Show JSImportDeclaration
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSImportDeclaration] -> ShowS
$cshowList :: [JSImportDeclaration] -> ShowS
show :: JSImportDeclaration -> String
$cshow :: JSImportDeclaration -> String
showsPrec :: Int -> JSImportDeclaration -> ShowS
$cshowsPrec :: Int -> JSImportDeclaration -> ShowS
Show, Typeable)

data JSImportClause
    = JSImportClauseDefault !JSIdent -- ^default
    | JSImportClauseNameSpace !JSImportNameSpace -- ^namespace
    | JSImportClauseNamed !JSImportsNamed -- ^named imports
    | JSImportClauseDefaultNameSpace !JSIdent !JSAnnot !JSImportNameSpace -- ^default, comma, namespace
    | JSImportClauseDefaultNamed !JSIdent !JSAnnot !JSImportsNamed -- ^default, comma, named imports
    deriving (Typeable JSImportClause
DataType
Constr
Typeable JSImportClause
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSImportClause -> c JSImportClause)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSImportClause)
-> (JSImportClause -> Constr)
-> (JSImportClause -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSImportClause))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSImportClause))
-> ((forall b. Data b => b -> b)
    -> JSImportClause -> JSImportClause)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSImportClause -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSImportClause -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> JSImportClause -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSImportClause -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> JSImportClause -> m JSImportClause)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSImportClause -> m JSImportClause)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSImportClause -> m JSImportClause)
-> Data JSImportClause
JSImportClause -> DataType
JSImportClause -> Constr
(forall b. Data b => b -> b) -> JSImportClause -> JSImportClause
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSImportClause -> c JSImportClause
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSImportClause
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) -> JSImportClause -> u
forall u. (forall d. Data d => d -> u) -> JSImportClause -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportClause -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportClause -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSImportClause -> m JSImportClause
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSImportClause -> m JSImportClause
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSImportClause
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSImportClause -> c JSImportClause
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSImportClause)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSImportClause)
$cJSImportClauseDefaultNamed :: Constr
$cJSImportClauseDefaultNameSpace :: Constr
$cJSImportClauseNamed :: Constr
$cJSImportClauseNameSpace :: Constr
$cJSImportClauseDefault :: Constr
$tJSImportClause :: DataType
gmapMo :: (forall d. Data d => d -> m d)
-> JSImportClause -> m JSImportClause
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSImportClause -> m JSImportClause
gmapMp :: (forall d. Data d => d -> m d)
-> JSImportClause -> m JSImportClause
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSImportClause -> m JSImportClause
gmapM :: (forall d. Data d => d -> m d)
-> JSImportClause -> m JSImportClause
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSImportClause -> m JSImportClause
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSImportClause -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> JSImportClause -> u
gmapQ :: (forall d. Data d => d -> u) -> JSImportClause -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSImportClause -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportClause -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportClause -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportClause -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportClause -> r
gmapT :: (forall b. Data b => b -> b) -> JSImportClause -> JSImportClause
$cgmapT :: (forall b. Data b => b -> b) -> JSImportClause -> JSImportClause
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSImportClause)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSImportClause)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSImportClause)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSImportClause)
dataTypeOf :: JSImportClause -> DataType
$cdataTypeOf :: JSImportClause -> DataType
toConstr :: JSImportClause -> Constr
$ctoConstr :: JSImportClause -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSImportClause
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSImportClause
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSImportClause -> c JSImportClause
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSImportClause -> c JSImportClause
$cp1Data :: Typeable JSImportClause
Data, JSImportClause -> JSImportClause -> Bool
(JSImportClause -> JSImportClause -> Bool)
-> (JSImportClause -> JSImportClause -> Bool) -> Eq JSImportClause
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSImportClause -> JSImportClause -> Bool
$c/= :: JSImportClause -> JSImportClause -> Bool
== :: JSImportClause -> JSImportClause -> Bool
$c== :: JSImportClause -> JSImportClause -> Bool
Eq, Int -> JSImportClause -> ShowS
[JSImportClause] -> ShowS
JSImportClause -> String
(Int -> JSImportClause -> ShowS)
-> (JSImportClause -> String)
-> ([JSImportClause] -> ShowS)
-> Show JSImportClause
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSImportClause] -> ShowS
$cshowList :: [JSImportClause] -> ShowS
show :: JSImportClause -> String
$cshow :: JSImportClause -> String
showsPrec :: Int -> JSImportClause -> ShowS
$cshowsPrec :: Int -> JSImportClause -> ShowS
Show, Typeable)

data JSFromClause
    = JSFromClause !JSAnnot !JSAnnot !String -- ^ from, string literal, string literal contents
    deriving (Typeable JSFromClause
DataType
Constr
Typeable JSFromClause
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSFromClause -> c JSFromClause)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSFromClause)
-> (JSFromClause -> Constr)
-> (JSFromClause -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSFromClause))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSFromClause))
-> ((forall b. Data b => b -> b) -> JSFromClause -> JSFromClause)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSFromClause -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSFromClause -> r)
-> (forall u. (forall d. Data d => d -> u) -> JSFromClause -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSFromClause -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> JSFromClause -> m JSFromClause)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSFromClause -> m JSFromClause)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSFromClause -> m JSFromClause)
-> Data JSFromClause
JSFromClause -> DataType
JSFromClause -> Constr
(forall b. Data b => b -> b) -> JSFromClause -> JSFromClause
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSFromClause -> c JSFromClause
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSFromClause
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) -> JSFromClause -> u
forall u. (forall d. Data d => d -> u) -> JSFromClause -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSFromClause -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSFromClause -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSFromClause -> m JSFromClause
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSFromClause -> m JSFromClause
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSFromClause
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSFromClause -> c JSFromClause
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSFromClause)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSFromClause)
$cJSFromClause :: Constr
$tJSFromClause :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> JSFromClause -> m JSFromClause
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSFromClause -> m JSFromClause
gmapMp :: (forall d. Data d => d -> m d) -> JSFromClause -> m JSFromClause
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSFromClause -> m JSFromClause
gmapM :: (forall d. Data d => d -> m d) -> JSFromClause -> m JSFromClause
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSFromClause -> m JSFromClause
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSFromClause -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> JSFromClause -> u
gmapQ :: (forall d. Data d => d -> u) -> JSFromClause -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSFromClause -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSFromClause -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSFromClause -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSFromClause -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSFromClause -> r
gmapT :: (forall b. Data b => b -> b) -> JSFromClause -> JSFromClause
$cgmapT :: (forall b. Data b => b -> b) -> JSFromClause -> JSFromClause
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSFromClause)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSFromClause)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSFromClause)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSFromClause)
dataTypeOf :: JSFromClause -> DataType
$cdataTypeOf :: JSFromClause -> DataType
toConstr :: JSFromClause -> Constr
$ctoConstr :: JSFromClause -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSFromClause
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSFromClause
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSFromClause -> c JSFromClause
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSFromClause -> c JSFromClause
$cp1Data :: Typeable JSFromClause
Data, JSFromClause -> JSFromClause -> Bool
(JSFromClause -> JSFromClause -> Bool)
-> (JSFromClause -> JSFromClause -> Bool) -> Eq JSFromClause
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSFromClause -> JSFromClause -> Bool
$c/= :: JSFromClause -> JSFromClause -> Bool
== :: JSFromClause -> JSFromClause -> Bool
$c== :: JSFromClause -> JSFromClause -> Bool
Eq, Int -> JSFromClause -> ShowS
[JSFromClause] -> ShowS
JSFromClause -> String
(Int -> JSFromClause -> ShowS)
-> (JSFromClause -> String)
-> ([JSFromClause] -> ShowS)
-> Show JSFromClause
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSFromClause] -> ShowS
$cshowList :: [JSFromClause] -> ShowS
show :: JSFromClause -> String
$cshow :: JSFromClause -> String
showsPrec :: Int -> JSFromClause -> ShowS
$cshowsPrec :: Int -> JSFromClause -> ShowS
Show, Typeable)

-- | Import namespace, e.g. '* as whatever'
data JSImportNameSpace
    = JSImportNameSpace !JSBinOp !JSAnnot !JSIdent -- ^ *, as, ident
    deriving (Typeable JSImportNameSpace
DataType
Constr
Typeable JSImportNameSpace
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g)
    -> JSImportNameSpace
    -> c JSImportNameSpace)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSImportNameSpace)
-> (JSImportNameSpace -> Constr)
-> (JSImportNameSpace -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSImportNameSpace))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSImportNameSpace))
-> ((forall b. Data b => b -> b)
    -> JSImportNameSpace -> JSImportNameSpace)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSImportNameSpace -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSImportNameSpace -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> JSImportNameSpace -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSImportNameSpace -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> JSImportNameSpace -> m JSImportNameSpace)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSImportNameSpace -> m JSImportNameSpace)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSImportNameSpace -> m JSImportNameSpace)
-> Data JSImportNameSpace
JSImportNameSpace -> DataType
JSImportNameSpace -> Constr
(forall b. Data b => b -> b)
-> JSImportNameSpace -> JSImportNameSpace
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSImportNameSpace -> c JSImportNameSpace
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSImportNameSpace
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) -> JSImportNameSpace -> u
forall u. (forall d. Data d => d -> u) -> JSImportNameSpace -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportNameSpace -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportNameSpace -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSImportNameSpace -> m JSImportNameSpace
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSImportNameSpace -> m JSImportNameSpace
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSImportNameSpace
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSImportNameSpace -> c JSImportNameSpace
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSImportNameSpace)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSImportNameSpace)
$cJSImportNameSpace :: Constr
$tJSImportNameSpace :: DataType
gmapMo :: (forall d. Data d => d -> m d)
-> JSImportNameSpace -> m JSImportNameSpace
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSImportNameSpace -> m JSImportNameSpace
gmapMp :: (forall d. Data d => d -> m d)
-> JSImportNameSpace -> m JSImportNameSpace
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSImportNameSpace -> m JSImportNameSpace
gmapM :: (forall d. Data d => d -> m d)
-> JSImportNameSpace -> m JSImportNameSpace
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSImportNameSpace -> m JSImportNameSpace
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSImportNameSpace -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> JSImportNameSpace -> u
gmapQ :: (forall d. Data d => d -> u) -> JSImportNameSpace -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSImportNameSpace -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportNameSpace -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportNameSpace -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportNameSpace -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportNameSpace -> r
gmapT :: (forall b. Data b => b -> b)
-> JSImportNameSpace -> JSImportNameSpace
$cgmapT :: (forall b. Data b => b -> b)
-> JSImportNameSpace -> JSImportNameSpace
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSImportNameSpace)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSImportNameSpace)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSImportNameSpace)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSImportNameSpace)
dataTypeOf :: JSImportNameSpace -> DataType
$cdataTypeOf :: JSImportNameSpace -> DataType
toConstr :: JSImportNameSpace -> Constr
$ctoConstr :: JSImportNameSpace -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSImportNameSpace
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSImportNameSpace
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSImportNameSpace -> c JSImportNameSpace
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSImportNameSpace -> c JSImportNameSpace
$cp1Data :: Typeable JSImportNameSpace
Data, JSImportNameSpace -> JSImportNameSpace -> Bool
(JSImportNameSpace -> JSImportNameSpace -> Bool)
-> (JSImportNameSpace -> JSImportNameSpace -> Bool)
-> Eq JSImportNameSpace
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSImportNameSpace -> JSImportNameSpace -> Bool
$c/= :: JSImportNameSpace -> JSImportNameSpace -> Bool
== :: JSImportNameSpace -> JSImportNameSpace -> Bool
$c== :: JSImportNameSpace -> JSImportNameSpace -> Bool
Eq, Int -> JSImportNameSpace -> ShowS
[JSImportNameSpace] -> ShowS
JSImportNameSpace -> String
(Int -> JSImportNameSpace -> ShowS)
-> (JSImportNameSpace -> String)
-> ([JSImportNameSpace] -> ShowS)
-> Show JSImportNameSpace
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSImportNameSpace] -> ShowS
$cshowList :: [JSImportNameSpace] -> ShowS
show :: JSImportNameSpace -> String
$cshow :: JSImportNameSpace -> String
showsPrec :: Int -> JSImportNameSpace -> ShowS
$cshowsPrec :: Int -> JSImportNameSpace -> ShowS
Show, Typeable)

-- | Named imports, e.g. '{ foo, bar, baz as quux }'
data JSImportsNamed
    = JSImportsNamed !JSAnnot !(JSCommaList JSImportSpecifier) !JSAnnot -- ^lb, specifiers, rb
    deriving (Typeable JSImportsNamed
DataType
Constr
Typeable JSImportsNamed
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSImportsNamed -> c JSImportsNamed)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSImportsNamed)
-> (JSImportsNamed -> Constr)
-> (JSImportsNamed -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSImportsNamed))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSImportsNamed))
-> ((forall b. Data b => b -> b)
    -> JSImportsNamed -> JSImportsNamed)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSImportsNamed -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSImportsNamed -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> JSImportsNamed -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSImportsNamed -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> JSImportsNamed -> m JSImportsNamed)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSImportsNamed -> m JSImportsNamed)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSImportsNamed -> m JSImportsNamed)
-> Data JSImportsNamed
JSImportsNamed -> DataType
JSImportsNamed -> Constr
(forall b. Data b => b -> b) -> JSImportsNamed -> JSImportsNamed
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSImportsNamed -> c JSImportsNamed
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSImportsNamed
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) -> JSImportsNamed -> u
forall u. (forall d. Data d => d -> u) -> JSImportsNamed -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportsNamed -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportsNamed -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSImportsNamed -> m JSImportsNamed
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSImportsNamed -> m JSImportsNamed
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSImportsNamed
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSImportsNamed -> c JSImportsNamed
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSImportsNamed)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSImportsNamed)
$cJSImportsNamed :: Constr
$tJSImportsNamed :: DataType
gmapMo :: (forall d. Data d => d -> m d)
-> JSImportsNamed -> m JSImportsNamed
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSImportsNamed -> m JSImportsNamed
gmapMp :: (forall d. Data d => d -> m d)
-> JSImportsNamed -> m JSImportsNamed
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSImportsNamed -> m JSImportsNamed
gmapM :: (forall d. Data d => d -> m d)
-> JSImportsNamed -> m JSImportsNamed
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSImportsNamed -> m JSImportsNamed
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSImportsNamed -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> JSImportsNamed -> u
gmapQ :: (forall d. Data d => d -> u) -> JSImportsNamed -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSImportsNamed -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportsNamed -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportsNamed -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportsNamed -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportsNamed -> r
gmapT :: (forall b. Data b => b -> b) -> JSImportsNamed -> JSImportsNamed
$cgmapT :: (forall b. Data b => b -> b) -> JSImportsNamed -> JSImportsNamed
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSImportsNamed)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSImportsNamed)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSImportsNamed)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSImportsNamed)
dataTypeOf :: JSImportsNamed -> DataType
$cdataTypeOf :: JSImportsNamed -> DataType
toConstr :: JSImportsNamed -> Constr
$ctoConstr :: JSImportsNamed -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSImportsNamed
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSImportsNamed
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSImportsNamed -> c JSImportsNamed
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSImportsNamed -> c JSImportsNamed
$cp1Data :: Typeable JSImportsNamed
Data, JSImportsNamed -> JSImportsNamed -> Bool
(JSImportsNamed -> JSImportsNamed -> Bool)
-> (JSImportsNamed -> JSImportsNamed -> Bool) -> Eq JSImportsNamed
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSImportsNamed -> JSImportsNamed -> Bool
$c/= :: JSImportsNamed -> JSImportsNamed -> Bool
== :: JSImportsNamed -> JSImportsNamed -> Bool
$c== :: JSImportsNamed -> JSImportsNamed -> Bool
Eq, Int -> JSImportsNamed -> ShowS
[JSImportsNamed] -> ShowS
JSImportsNamed -> String
(Int -> JSImportsNamed -> ShowS)
-> (JSImportsNamed -> String)
-> ([JSImportsNamed] -> ShowS)
-> Show JSImportsNamed
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSImportsNamed] -> ShowS
$cshowList :: [JSImportsNamed] -> ShowS
show :: JSImportsNamed -> String
$cshow :: JSImportsNamed -> String
showsPrec :: Int -> JSImportsNamed -> ShowS
$cshowsPrec :: Int -> JSImportsNamed -> ShowS
Show, Typeable)

-- |
-- Note that this data type is separate from ExportSpecifier because the
-- grammar is slightly different (e.g. in handling of reserved words).
data JSImportSpecifier
    = JSImportSpecifier !JSIdent -- ^ident
    | JSImportSpecifierAs !JSIdent !JSAnnot !JSIdent -- ^ident, as, ident
    deriving (Typeable JSImportSpecifier
DataType
Constr
Typeable JSImportSpecifier
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g)
    -> JSImportSpecifier
    -> c JSImportSpecifier)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSImportSpecifier)
-> (JSImportSpecifier -> Constr)
-> (JSImportSpecifier -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSImportSpecifier))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSImportSpecifier))
-> ((forall b. Data b => b -> b)
    -> JSImportSpecifier -> JSImportSpecifier)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSImportSpecifier -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSImportSpecifier -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> JSImportSpecifier -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSImportSpecifier -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> JSImportSpecifier -> m JSImportSpecifier)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSImportSpecifier -> m JSImportSpecifier)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSImportSpecifier -> m JSImportSpecifier)
-> Data JSImportSpecifier
JSImportSpecifier -> DataType
JSImportSpecifier -> Constr
(forall b. Data b => b -> b)
-> JSImportSpecifier -> JSImportSpecifier
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSImportSpecifier -> c JSImportSpecifier
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSImportSpecifier
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) -> JSImportSpecifier -> u
forall u. (forall d. Data d => d -> u) -> JSImportSpecifier -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportSpecifier -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportSpecifier -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSImportSpecifier -> m JSImportSpecifier
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSImportSpecifier -> m JSImportSpecifier
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSImportSpecifier
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSImportSpecifier -> c JSImportSpecifier
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSImportSpecifier)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSImportSpecifier)
$cJSImportSpecifierAs :: Constr
$cJSImportSpecifier :: Constr
$tJSImportSpecifier :: DataType
gmapMo :: (forall d. Data d => d -> m d)
-> JSImportSpecifier -> m JSImportSpecifier
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSImportSpecifier -> m JSImportSpecifier
gmapMp :: (forall d. Data d => d -> m d)
-> JSImportSpecifier -> m JSImportSpecifier
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSImportSpecifier -> m JSImportSpecifier
gmapM :: (forall d. Data d => d -> m d)
-> JSImportSpecifier -> m JSImportSpecifier
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSImportSpecifier -> m JSImportSpecifier
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSImportSpecifier -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> JSImportSpecifier -> u
gmapQ :: (forall d. Data d => d -> u) -> JSImportSpecifier -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSImportSpecifier -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportSpecifier -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportSpecifier -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportSpecifier -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSImportSpecifier -> r
gmapT :: (forall b. Data b => b -> b)
-> JSImportSpecifier -> JSImportSpecifier
$cgmapT :: (forall b. Data b => b -> b)
-> JSImportSpecifier -> JSImportSpecifier
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSImportSpecifier)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSImportSpecifier)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSImportSpecifier)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSImportSpecifier)
dataTypeOf :: JSImportSpecifier -> DataType
$cdataTypeOf :: JSImportSpecifier -> DataType
toConstr :: JSImportSpecifier -> Constr
$ctoConstr :: JSImportSpecifier -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSImportSpecifier
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSImportSpecifier
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSImportSpecifier -> c JSImportSpecifier
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSImportSpecifier -> c JSImportSpecifier
$cp1Data :: Typeable JSImportSpecifier
Data, JSImportSpecifier -> JSImportSpecifier -> Bool
(JSImportSpecifier -> JSImportSpecifier -> Bool)
-> (JSImportSpecifier -> JSImportSpecifier -> Bool)
-> Eq JSImportSpecifier
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSImportSpecifier -> JSImportSpecifier -> Bool
$c/= :: JSImportSpecifier -> JSImportSpecifier -> Bool
== :: JSImportSpecifier -> JSImportSpecifier -> Bool
$c== :: JSImportSpecifier -> JSImportSpecifier -> Bool
Eq, Int -> JSImportSpecifier -> ShowS
[JSImportSpecifier] -> ShowS
JSImportSpecifier -> String
(Int -> JSImportSpecifier -> ShowS)
-> (JSImportSpecifier -> String)
-> ([JSImportSpecifier] -> ShowS)
-> Show JSImportSpecifier
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSImportSpecifier] -> ShowS
$cshowList :: [JSImportSpecifier] -> ShowS
show :: JSImportSpecifier -> String
$cshow :: JSImportSpecifier -> String
showsPrec :: Int -> JSImportSpecifier -> ShowS
$cshowsPrec :: Int -> JSImportSpecifier -> ShowS
Show, Typeable)

data JSExportDeclaration
    -- = JSExportAllFrom
    = JSExportFrom JSExportClause JSFromClause !JSSemi -- ^exports, module, semi
    | JSExportLocals JSExportClause !JSSemi -- ^exports, autosemi
    | JSExport !JSStatement !JSSemi -- ^body, autosemi
    -- | JSExportDefault
    deriving (Typeable JSExportDeclaration
DataType
Constr
Typeable JSExportDeclaration
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g)
    -> JSExportDeclaration
    -> c JSExportDeclaration)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSExportDeclaration)
-> (JSExportDeclaration -> Constr)
-> (JSExportDeclaration -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSExportDeclaration))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSExportDeclaration))
-> ((forall b. Data b => b -> b)
    -> JSExportDeclaration -> JSExportDeclaration)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSExportDeclaration -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSExportDeclaration -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> JSExportDeclaration -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSExportDeclaration -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> JSExportDeclaration -> m JSExportDeclaration)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSExportDeclaration -> m JSExportDeclaration)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSExportDeclaration -> m JSExportDeclaration)
-> Data JSExportDeclaration
JSExportDeclaration -> DataType
JSExportDeclaration -> Constr
(forall b. Data b => b -> b)
-> JSExportDeclaration -> JSExportDeclaration
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> JSExportDeclaration
-> c JSExportDeclaration
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSExportDeclaration
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) -> JSExportDeclaration -> u
forall u.
(forall d. Data d => d -> u) -> JSExportDeclaration -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSExportDeclaration -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSExportDeclaration -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSExportDeclaration -> m JSExportDeclaration
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSExportDeclaration -> m JSExportDeclaration
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSExportDeclaration
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> JSExportDeclaration
-> c JSExportDeclaration
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSExportDeclaration)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSExportDeclaration)
$cJSExport :: Constr
$cJSExportLocals :: Constr
$cJSExportFrom :: Constr
$tJSExportDeclaration :: DataType
gmapMo :: (forall d. Data d => d -> m d)
-> JSExportDeclaration -> m JSExportDeclaration
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSExportDeclaration -> m JSExportDeclaration
gmapMp :: (forall d. Data d => d -> m d)
-> JSExportDeclaration -> m JSExportDeclaration
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSExportDeclaration -> m JSExportDeclaration
gmapM :: (forall d. Data d => d -> m d)
-> JSExportDeclaration -> m JSExportDeclaration
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSExportDeclaration -> m JSExportDeclaration
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSExportDeclaration -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> JSExportDeclaration -> u
gmapQ :: (forall d. Data d => d -> u) -> JSExportDeclaration -> [u]
$cgmapQ :: forall u.
(forall d. Data d => d -> u) -> JSExportDeclaration -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSExportDeclaration -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSExportDeclaration -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSExportDeclaration -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSExportDeclaration -> r
gmapT :: (forall b. Data b => b -> b)
-> JSExportDeclaration -> JSExportDeclaration
$cgmapT :: (forall b. Data b => b -> b)
-> JSExportDeclaration -> JSExportDeclaration
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSExportDeclaration)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSExportDeclaration)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSExportDeclaration)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSExportDeclaration)
dataTypeOf :: JSExportDeclaration -> DataType
$cdataTypeOf :: JSExportDeclaration -> DataType
toConstr :: JSExportDeclaration -> Constr
$ctoConstr :: JSExportDeclaration -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSExportDeclaration
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSExportDeclaration
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> JSExportDeclaration
-> c JSExportDeclaration
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> JSExportDeclaration
-> c JSExportDeclaration
$cp1Data :: Typeable JSExportDeclaration
Data, JSExportDeclaration -> JSExportDeclaration -> Bool
(JSExportDeclaration -> JSExportDeclaration -> Bool)
-> (JSExportDeclaration -> JSExportDeclaration -> Bool)
-> Eq JSExportDeclaration
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSExportDeclaration -> JSExportDeclaration -> Bool
$c/= :: JSExportDeclaration -> JSExportDeclaration -> Bool
== :: JSExportDeclaration -> JSExportDeclaration -> Bool
$c== :: JSExportDeclaration -> JSExportDeclaration -> Bool
Eq, Int -> JSExportDeclaration -> ShowS
[JSExportDeclaration] -> ShowS
JSExportDeclaration -> String
(Int -> JSExportDeclaration -> ShowS)
-> (JSExportDeclaration -> String)
-> ([JSExportDeclaration] -> ShowS)
-> Show JSExportDeclaration
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSExportDeclaration] -> ShowS
$cshowList :: [JSExportDeclaration] -> ShowS
show :: JSExportDeclaration -> String
$cshow :: JSExportDeclaration -> String
showsPrec :: Int -> JSExportDeclaration -> ShowS
$cshowsPrec :: Int -> JSExportDeclaration -> ShowS
Show, Typeable)

data JSExportClause
    = JSExportClause !JSAnnot !(JSCommaList JSExportSpecifier) !JSAnnot -- ^lb, specifiers, rb
    deriving (Typeable JSExportClause
DataType
Constr
Typeable JSExportClause
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSExportClause -> c JSExportClause)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSExportClause)
-> (JSExportClause -> Constr)
-> (JSExportClause -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSExportClause))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSExportClause))
-> ((forall b. Data b => b -> b)
    -> JSExportClause -> JSExportClause)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSExportClause -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSExportClause -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> JSExportClause -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSExportClause -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> JSExportClause -> m JSExportClause)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSExportClause -> m JSExportClause)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSExportClause -> m JSExportClause)
-> Data JSExportClause
JSExportClause -> DataType
JSExportClause -> Constr
(forall b. Data b => b -> b) -> JSExportClause -> JSExportClause
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSExportClause -> c JSExportClause
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSExportClause
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) -> JSExportClause -> u
forall u. (forall d. Data d => d -> u) -> JSExportClause -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSExportClause -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSExportClause -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSExportClause -> m JSExportClause
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSExportClause -> m JSExportClause
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSExportClause
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSExportClause -> c JSExportClause
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSExportClause)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSExportClause)
$cJSExportClause :: Constr
$tJSExportClause :: DataType
gmapMo :: (forall d. Data d => d -> m d)
-> JSExportClause -> m JSExportClause
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSExportClause -> m JSExportClause
gmapMp :: (forall d. Data d => d -> m d)
-> JSExportClause -> m JSExportClause
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSExportClause -> m JSExportClause
gmapM :: (forall d. Data d => d -> m d)
-> JSExportClause -> m JSExportClause
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSExportClause -> m JSExportClause
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSExportClause -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> JSExportClause -> u
gmapQ :: (forall d. Data d => d -> u) -> JSExportClause -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSExportClause -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSExportClause -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSExportClause -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSExportClause -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSExportClause -> r
gmapT :: (forall b. Data b => b -> b) -> JSExportClause -> JSExportClause
$cgmapT :: (forall b. Data b => b -> b) -> JSExportClause -> JSExportClause
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSExportClause)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSExportClause)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSExportClause)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSExportClause)
dataTypeOf :: JSExportClause -> DataType
$cdataTypeOf :: JSExportClause -> DataType
toConstr :: JSExportClause -> Constr
$ctoConstr :: JSExportClause -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSExportClause
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSExportClause
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSExportClause -> c JSExportClause
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSExportClause -> c JSExportClause
$cp1Data :: Typeable JSExportClause
Data, JSExportClause -> JSExportClause -> Bool
(JSExportClause -> JSExportClause -> Bool)
-> (JSExportClause -> JSExportClause -> Bool) -> Eq JSExportClause
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSExportClause -> JSExportClause -> Bool
$c/= :: JSExportClause -> JSExportClause -> Bool
== :: JSExportClause -> JSExportClause -> Bool
$c== :: JSExportClause -> JSExportClause -> Bool
Eq, Int -> JSExportClause -> ShowS
[JSExportClause] -> ShowS
JSExportClause -> String
(Int -> JSExportClause -> ShowS)
-> (JSExportClause -> String)
-> ([JSExportClause] -> ShowS)
-> Show JSExportClause
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSExportClause] -> ShowS
$cshowList :: [JSExportClause] -> ShowS
show :: JSExportClause -> String
$cshow :: JSExportClause -> String
showsPrec :: Int -> JSExportClause -> ShowS
$cshowsPrec :: Int -> JSExportClause -> ShowS
Show, Typeable)

data JSExportSpecifier
    = JSExportSpecifier !JSIdent -- ^ident
    | JSExportSpecifierAs !JSIdent !JSAnnot !JSIdent -- ^ident1, as, ident2
    deriving (Typeable JSExportSpecifier
DataType
Constr
Typeable JSExportSpecifier
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g)
    -> JSExportSpecifier
    -> c JSExportSpecifier)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSExportSpecifier)
-> (JSExportSpecifier -> Constr)
-> (JSExportSpecifier -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSExportSpecifier))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSExportSpecifier))
-> ((forall b. Data b => b -> b)
    -> JSExportSpecifier -> JSExportSpecifier)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSExportSpecifier -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSExportSpecifier -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> JSExportSpecifier -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSExportSpecifier -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> JSExportSpecifier -> m JSExportSpecifier)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSExportSpecifier -> m JSExportSpecifier)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSExportSpecifier -> m JSExportSpecifier)
-> Data JSExportSpecifier
JSExportSpecifier -> DataType
JSExportSpecifier -> Constr
(forall b. Data b => b -> b)
-> JSExportSpecifier -> JSExportSpecifier
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSExportSpecifier -> c JSExportSpecifier
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSExportSpecifier
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) -> JSExportSpecifier -> u
forall u. (forall d. Data d => d -> u) -> JSExportSpecifier -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSExportSpecifier -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSExportSpecifier -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSExportSpecifier -> m JSExportSpecifier
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSExportSpecifier -> m JSExportSpecifier
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSExportSpecifier
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSExportSpecifier -> c JSExportSpecifier
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSExportSpecifier)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSExportSpecifier)
$cJSExportSpecifierAs :: Constr
$cJSExportSpecifier :: Constr
$tJSExportSpecifier :: DataType
gmapMo :: (forall d. Data d => d -> m d)
-> JSExportSpecifier -> m JSExportSpecifier
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSExportSpecifier -> m JSExportSpecifier
gmapMp :: (forall d. Data d => d -> m d)
-> JSExportSpecifier -> m JSExportSpecifier
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSExportSpecifier -> m JSExportSpecifier
gmapM :: (forall d. Data d => d -> m d)
-> JSExportSpecifier -> m JSExportSpecifier
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSExportSpecifier -> m JSExportSpecifier
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSExportSpecifier -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> JSExportSpecifier -> u
gmapQ :: (forall d. Data d => d -> u) -> JSExportSpecifier -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSExportSpecifier -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSExportSpecifier -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSExportSpecifier -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSExportSpecifier -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSExportSpecifier -> r
gmapT :: (forall b. Data b => b -> b)
-> JSExportSpecifier -> JSExportSpecifier
$cgmapT :: (forall b. Data b => b -> b)
-> JSExportSpecifier -> JSExportSpecifier
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSExportSpecifier)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSExportSpecifier)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSExportSpecifier)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSExportSpecifier)
dataTypeOf :: JSExportSpecifier -> DataType
$cdataTypeOf :: JSExportSpecifier -> DataType
toConstr :: JSExportSpecifier -> Constr
$ctoConstr :: JSExportSpecifier -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSExportSpecifier
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSExportSpecifier
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSExportSpecifier -> c JSExportSpecifier
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSExportSpecifier -> c JSExportSpecifier
$cp1Data :: Typeable JSExportSpecifier
Data, JSExportSpecifier -> JSExportSpecifier -> Bool
(JSExportSpecifier -> JSExportSpecifier -> Bool)
-> (JSExportSpecifier -> JSExportSpecifier -> Bool)
-> Eq JSExportSpecifier
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSExportSpecifier -> JSExportSpecifier -> Bool
$c/= :: JSExportSpecifier -> JSExportSpecifier -> Bool
== :: JSExportSpecifier -> JSExportSpecifier -> Bool
$c== :: JSExportSpecifier -> JSExportSpecifier -> Bool
Eq, Int -> JSExportSpecifier -> ShowS
[JSExportSpecifier] -> ShowS
JSExportSpecifier -> String
(Int -> JSExportSpecifier -> ShowS)
-> (JSExportSpecifier -> String)
-> ([JSExportSpecifier] -> ShowS)
-> Show JSExportSpecifier
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSExportSpecifier] -> ShowS
$cshowList :: [JSExportSpecifier] -> ShowS
show :: JSExportSpecifier -> String
$cshow :: JSExportSpecifier -> String
showsPrec :: Int -> JSExportSpecifier -> ShowS
$cshowsPrec :: Int -> JSExportSpecifier -> ShowS
Show, Typeable)

data JSStatement
    = JSStatementBlock !JSAnnot ![JSStatement] !JSAnnot !JSSemi     -- ^lbrace, stmts, rbrace, autosemi
    | JSBreak !JSAnnot !JSIdent !JSSemi        -- ^break,optional identifier, autosemi
    | JSLet   !JSAnnot !(JSCommaList JSExpression) !JSSemi -- ^const, decl, autosemi
    | JSClass !JSAnnot !JSIdent !JSClassHeritage !JSAnnot ![JSClassElement] !JSAnnot !JSSemi -- ^class, name, optional extends clause, lb, body, rb, autosemi
    | JSConstant !JSAnnot !(JSCommaList JSExpression) !JSSemi -- ^const, decl, autosemi
    | JSContinue !JSAnnot !JSIdent !JSSemi     -- ^continue, optional identifier,autosemi
    | JSDoWhile !JSAnnot !JSStatement !JSAnnot !JSAnnot !JSExpression !JSAnnot !JSSemi -- ^do,stmt,while,lb,expr,rb,autosemi
    | JSFor !JSAnnot !JSAnnot !(JSCommaList JSExpression) !JSAnnot !(JSCommaList JSExpression) !JSAnnot !(JSCommaList JSExpression) !JSAnnot !JSStatement -- ^for,lb,expr,semi,expr,semi,expr,rb.stmt
    | JSForIn !JSAnnot !JSAnnot !JSExpression !JSBinOp !JSExpression !JSAnnot !JSStatement -- ^for,lb,expr,in,expr,rb,stmt
    | JSForVar !JSAnnot !JSAnnot !JSAnnot !(JSCommaList JSExpression) !JSAnnot !(JSCommaList JSExpression) !JSAnnot !(JSCommaList JSExpression) !JSAnnot !JSStatement -- ^for,lb,var,vardecl,semi,expr,semi,expr,rb,stmt
    | JSForVarIn !JSAnnot !JSAnnot !JSAnnot !JSExpression !JSBinOp !JSExpression !JSAnnot !JSStatement -- ^for,lb,var,vardecl,in,expr,rb,stmt
    | JSForLet !JSAnnot !JSAnnot !JSAnnot !(JSCommaList JSExpression) !JSAnnot !(JSCommaList JSExpression) !JSAnnot !(JSCommaList JSExpression) !JSAnnot !JSStatement -- ^for,lb,var,vardecl,semi,expr,semi,expr,rb,stmt
    | JSForLetIn !JSAnnot !JSAnnot !JSAnnot !JSExpression !JSBinOp !JSExpression !JSAnnot !JSStatement -- ^for,lb,var,vardecl,in,expr,rb,stmt
    | JSForLetOf !JSAnnot !JSAnnot !JSAnnot !JSExpression !JSBinOp !JSExpression !JSAnnot !JSStatement -- ^for,lb,var,vardecl,in,expr,rb,stmt
    | JSForConst !JSAnnot !JSAnnot !JSAnnot !(JSCommaList JSExpression) !JSAnnot !(JSCommaList JSExpression) !JSAnnot !(JSCommaList JSExpression) !JSAnnot !JSStatement -- ^for,lb,var,vardecl,semi,expr,semi,expr,rb,stmt
    | JSForConstIn !JSAnnot !JSAnnot !JSAnnot !JSExpression !JSBinOp !JSExpression !JSAnnot !JSStatement -- ^for,lb,var,vardecl,in,expr,rb,stmt
    | JSForConstOf !JSAnnot !JSAnnot !JSAnnot !JSExpression !JSBinOp !JSExpression !JSAnnot !JSStatement -- ^for,lb,var,vardecl,in,expr,rb,stmt
    | JSForOf !JSAnnot !JSAnnot !JSExpression !JSBinOp !JSExpression !JSAnnot !JSStatement -- ^for,lb,expr,in,expr,rb,stmt
    | JSForVarOf !JSAnnot !JSAnnot !JSAnnot !JSExpression !JSBinOp !JSExpression !JSAnnot !JSStatement -- ^for,lb,var,vardecl,in,expr,rb,stmt
    | JSAsyncFunction !JSAnnot !JSAnnot !JSIdent !JSAnnot !(JSCommaList JSExpression) !JSAnnot !JSBlock !JSSemi  -- ^fn,name, lb,parameter list,rb,block,autosemi
    | JSFunction !JSAnnot !JSIdent !JSAnnot !(JSCommaList JSExpression) !JSAnnot !JSBlock !JSSemi  -- ^fn,name, lb,parameter list,rb,block,autosemi
    | JSGenerator !JSAnnot !JSAnnot !JSIdent !JSAnnot !(JSCommaList JSExpression) !JSAnnot !JSBlock !JSSemi  -- ^fn,*,name, lb,parameter list,rb,block,autosemi
    | JSIf !JSAnnot !JSAnnot !JSExpression !JSAnnot !JSStatement -- ^if,(,expr,),stmt
    | JSIfElse !JSAnnot !JSAnnot !JSExpression !JSAnnot !JSStatement !JSAnnot !JSStatement -- ^if,(,expr,),stmt,else,rest
    | JSLabelled !JSIdent !JSAnnot !JSStatement -- ^identifier,colon,stmt
    | JSEmptyStatement !JSAnnot
    | JSExpressionStatement !JSExpression !JSSemi
    | JSAssignStatement !JSExpression !JSAssignOp !JSExpression !JSSemi -- ^lhs, assignop, rhs, autosemi
    | JSMethodCall !JSExpression !JSAnnot !(JSCommaList JSExpression) !JSAnnot !JSSemi
    | JSReturn !JSAnnot !(Maybe JSExpression) !JSSemi -- ^optional expression,autosemi
    | JSSwitch !JSAnnot !JSAnnot !JSExpression !JSAnnot !JSAnnot ![JSSwitchParts] !JSAnnot !JSSemi -- ^switch,lb,expr,rb,caseblock,autosemi
    | JSThrow !JSAnnot !JSExpression !JSSemi -- ^throw val autosemi
    | JSTry !JSAnnot !JSBlock ![JSTryCatch] !JSTryFinally -- ^try,block,catches,finally
    | JSVariable !JSAnnot !(JSCommaList JSExpression) !JSSemi -- ^var, decl, autosemi
    | JSWhile !JSAnnot !JSAnnot !JSExpression !JSAnnot !JSStatement -- ^while,lb,expr,rb,stmt
    | JSWith !JSAnnot !JSAnnot !JSExpression !JSAnnot !JSStatement !JSSemi -- ^with,lb,expr,rb,stmt list
    deriving (Typeable JSStatement
DataType
Constr
Typeable JSStatement
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSStatement -> c JSStatement)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSStatement)
-> (JSStatement -> Constr)
-> (JSStatement -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSStatement))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSStatement))
-> ((forall b. Data b => b -> b) -> JSStatement -> JSStatement)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSStatement -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSStatement -> r)
-> (forall u. (forall d. Data d => d -> u) -> JSStatement -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSStatement -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> JSStatement -> m JSStatement)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSStatement -> m JSStatement)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSStatement -> m JSStatement)
-> Data JSStatement
JSStatement -> DataType
JSStatement -> Constr
(forall b. Data b => b -> b) -> JSStatement -> JSStatement
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSStatement -> c JSStatement
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSStatement
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) -> JSStatement -> u
forall u. (forall d. Data d => d -> u) -> JSStatement -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSStatement -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSStatement -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSStatement -> m JSStatement
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSStatement -> m JSStatement
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSStatement
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSStatement -> c JSStatement
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSStatement)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSStatement)
$cJSWith :: Constr
$cJSWhile :: Constr
$cJSVariable :: Constr
$cJSTry :: Constr
$cJSThrow :: Constr
$cJSSwitch :: Constr
$cJSReturn :: Constr
$cJSMethodCall :: Constr
$cJSAssignStatement :: Constr
$cJSExpressionStatement :: Constr
$cJSEmptyStatement :: Constr
$cJSLabelled :: Constr
$cJSIfElse :: Constr
$cJSIf :: Constr
$cJSGenerator :: Constr
$cJSFunction :: Constr
$cJSAsyncFunction :: Constr
$cJSForVarOf :: Constr
$cJSForOf :: Constr
$cJSForConstOf :: Constr
$cJSForConstIn :: Constr
$cJSForConst :: Constr
$cJSForLetOf :: Constr
$cJSForLetIn :: Constr
$cJSForLet :: Constr
$cJSForVarIn :: Constr
$cJSForVar :: Constr
$cJSForIn :: Constr
$cJSFor :: Constr
$cJSDoWhile :: Constr
$cJSContinue :: Constr
$cJSConstant :: Constr
$cJSClass :: Constr
$cJSLet :: Constr
$cJSBreak :: Constr
$cJSStatementBlock :: Constr
$tJSStatement :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> JSStatement -> m JSStatement
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSStatement -> m JSStatement
gmapMp :: (forall d. Data d => d -> m d) -> JSStatement -> m JSStatement
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSStatement -> m JSStatement
gmapM :: (forall d. Data d => d -> m d) -> JSStatement -> m JSStatement
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSStatement -> m JSStatement
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSStatement -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> JSStatement -> u
gmapQ :: (forall d. Data d => d -> u) -> JSStatement -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSStatement -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSStatement -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSStatement -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSStatement -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSStatement -> r
gmapT :: (forall b. Data b => b -> b) -> JSStatement -> JSStatement
$cgmapT :: (forall b. Data b => b -> b) -> JSStatement -> JSStatement
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSStatement)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSStatement)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSStatement)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSStatement)
dataTypeOf :: JSStatement -> DataType
$cdataTypeOf :: JSStatement -> DataType
toConstr :: JSStatement -> Constr
$ctoConstr :: JSStatement -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSStatement
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSStatement
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSStatement -> c JSStatement
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSStatement -> c JSStatement
$cp1Data :: Typeable JSStatement
Data, JSStatement -> JSStatement -> Bool
(JSStatement -> JSStatement -> Bool)
-> (JSStatement -> JSStatement -> Bool) -> Eq JSStatement
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSStatement -> JSStatement -> Bool
$c/= :: JSStatement -> JSStatement -> Bool
== :: JSStatement -> JSStatement -> Bool
$c== :: JSStatement -> JSStatement -> Bool
Eq, Int -> JSStatement -> ShowS
[JSStatement] -> ShowS
JSStatement -> String
(Int -> JSStatement -> ShowS)
-> (JSStatement -> String)
-> ([JSStatement] -> ShowS)
-> Show JSStatement
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSStatement] -> ShowS
$cshowList :: [JSStatement] -> ShowS
show :: JSStatement -> String
$cshow :: JSStatement -> String
showsPrec :: Int -> JSStatement -> ShowS
$cshowsPrec :: Int -> JSStatement -> ShowS
Show, Typeable)

data JSExpression
    -- | Terminals
    = JSIdentifier !JSAnnot !String
    | JSDecimal !JSAnnot !String
    | JSLiteral !JSAnnot !String
    | JSHexInteger !JSAnnot !String
    | JSOctal !JSAnnot !String
    | JSStringLiteral !JSAnnot !String
    | JSRegEx !JSAnnot !String

    -- | Non Terminals
    | JSArrayLiteral !JSAnnot ![JSArrayElement] !JSAnnot -- ^lb, contents, rb
    | JSAssignExpression !JSExpression !JSAssignOp !JSExpression -- ^lhs, assignop, rhs
    | JSAwaitExpression !JSAnnot !JSExpression -- ^await, expr
    | JSCallExpression !JSExpression !JSAnnot !(JSCommaList JSExpression) !JSAnnot  -- ^expr, bl, args, rb
    | JSCallExpressionDot !JSExpression !JSAnnot !JSExpression  -- ^expr, dot, expr
    | JSCallExpressionSquare !JSExpression !JSAnnot !JSExpression !JSAnnot  -- ^expr, [, expr, ]
    | JSClassExpression !JSAnnot !JSIdent !JSClassHeritage !JSAnnot ![JSClassElement] !JSAnnot -- ^class, optional identifier, optional extends clause, lb, body, rb
    | JSCommaExpression !JSExpression !JSAnnot !JSExpression          -- ^expression components
    | JSExpressionBinary !JSExpression !JSBinOp !JSExpression -- ^lhs, op, rhs
    | JSExpressionParen !JSAnnot !JSExpression !JSAnnot -- ^lb,expression,rb
    | JSExpressionPostfix !JSExpression !JSUnaryOp -- ^expression, operator
    | JSExpressionTernary !JSExpression !JSAnnot !JSExpression !JSAnnot !JSExpression -- ^cond, ?, trueval, :, falseval
    | JSArrowExpression !JSArrowParameterList !JSAnnot !JSStatement -- ^parameter list,arrow,block`
    | JSFunctionExpression !JSAnnot !JSIdent !JSAnnot !(JSCommaList JSExpression) !JSAnnot !JSBlock -- ^fn,name,lb, parameter list,rb,block`
    | JSGeneratorExpression !JSAnnot !JSAnnot !JSIdent !JSAnnot !(JSCommaList JSExpression) !JSAnnot !JSBlock -- ^fn,*,name,lb, parameter list,rb,block`
    | JSMemberDot !JSExpression !JSAnnot !JSExpression -- ^firstpart, dot, name
    | JSMemberExpression !JSExpression !JSAnnot !(JSCommaList JSExpression) !JSAnnot -- expr, lb, args, rb
    | JSMemberNew !JSAnnot !JSExpression !JSAnnot !(JSCommaList JSExpression) !JSAnnot -- ^new, name, lb, args, rb
    | JSMemberSquare !JSExpression !JSAnnot !JSExpression !JSAnnot -- ^firstpart, lb, expr, rb
    | JSNewExpression !JSAnnot !JSExpression -- ^new, expr
    | JSObjectLiteral !JSAnnot !JSObjectPropertyList !JSAnnot -- ^lbrace contents rbrace
    | JSSpreadExpression !JSAnnot !JSExpression
    | JSTemplateLiteral !(Maybe JSExpression) !JSAnnot !String ![JSTemplatePart] -- ^optional tag, lquot, head, parts
    | JSUnaryExpression !JSUnaryOp !JSExpression
    | JSVarInitExpression !JSExpression !JSVarInitializer -- ^identifier, initializer
    | JSYieldExpression !JSAnnot !(Maybe JSExpression) -- ^yield, optional expr
    | JSYieldFromExpression !JSAnnot !JSAnnot !JSExpression -- ^yield, *, expr
    deriving (Typeable JSExpression
DataType
Constr
Typeable JSExpression
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSExpression -> c JSExpression)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSExpression)
-> (JSExpression -> Constr)
-> (JSExpression -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSExpression))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSExpression))
-> ((forall b. Data b => b -> b) -> JSExpression -> JSExpression)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSExpression -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSExpression -> r)
-> (forall u. (forall d. Data d => d -> u) -> JSExpression -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSExpression -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> JSExpression -> m JSExpression)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSExpression -> m JSExpression)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSExpression -> m JSExpression)
-> Data JSExpression
JSExpression -> DataType
JSExpression -> Constr
(forall b. Data b => b -> b) -> JSExpression -> JSExpression
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSExpression -> c JSExpression
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSExpression
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) -> JSExpression -> u
forall u. (forall d. Data d => d -> u) -> JSExpression -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSExpression -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSExpression -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSExpression -> m JSExpression
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSExpression -> m JSExpression
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSExpression
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSExpression -> c JSExpression
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSExpression)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSExpression)
$cJSYieldFromExpression :: Constr
$cJSYieldExpression :: Constr
$cJSVarInitExpression :: Constr
$cJSUnaryExpression :: Constr
$cJSTemplateLiteral :: Constr
$cJSSpreadExpression :: Constr
$cJSObjectLiteral :: Constr
$cJSNewExpression :: Constr
$cJSMemberSquare :: Constr
$cJSMemberNew :: Constr
$cJSMemberExpression :: Constr
$cJSMemberDot :: Constr
$cJSGeneratorExpression :: Constr
$cJSFunctionExpression :: Constr
$cJSArrowExpression :: Constr
$cJSExpressionTernary :: Constr
$cJSExpressionPostfix :: Constr
$cJSExpressionParen :: Constr
$cJSExpressionBinary :: Constr
$cJSCommaExpression :: Constr
$cJSClassExpression :: Constr
$cJSCallExpressionSquare :: Constr
$cJSCallExpressionDot :: Constr
$cJSCallExpression :: Constr
$cJSAwaitExpression :: Constr
$cJSAssignExpression :: Constr
$cJSArrayLiteral :: Constr
$cJSRegEx :: Constr
$cJSStringLiteral :: Constr
$cJSOctal :: Constr
$cJSHexInteger :: Constr
$cJSLiteral :: Constr
$cJSDecimal :: Constr
$cJSIdentifier :: Constr
$tJSExpression :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> JSExpression -> m JSExpression
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSExpression -> m JSExpression
gmapMp :: (forall d. Data d => d -> m d) -> JSExpression -> m JSExpression
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSExpression -> m JSExpression
gmapM :: (forall d. Data d => d -> m d) -> JSExpression -> m JSExpression
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSExpression -> m JSExpression
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSExpression -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> JSExpression -> u
gmapQ :: (forall d. Data d => d -> u) -> JSExpression -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSExpression -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSExpression -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSExpression -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSExpression -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSExpression -> r
gmapT :: (forall b. Data b => b -> b) -> JSExpression -> JSExpression
$cgmapT :: (forall b. Data b => b -> b) -> JSExpression -> JSExpression
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSExpression)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSExpression)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSExpression)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSExpression)
dataTypeOf :: JSExpression -> DataType
$cdataTypeOf :: JSExpression -> DataType
toConstr :: JSExpression -> Constr
$ctoConstr :: JSExpression -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSExpression
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSExpression
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSExpression -> c JSExpression
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSExpression -> c JSExpression
$cp1Data :: Typeable JSExpression
Data, JSExpression -> JSExpression -> Bool
(JSExpression -> JSExpression -> Bool)
-> (JSExpression -> JSExpression -> Bool) -> Eq JSExpression
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSExpression -> JSExpression -> Bool
$c/= :: JSExpression -> JSExpression -> Bool
== :: JSExpression -> JSExpression -> Bool
$c== :: JSExpression -> JSExpression -> Bool
Eq, Int -> JSExpression -> ShowS
[JSExpression] -> ShowS
JSExpression -> String
(Int -> JSExpression -> ShowS)
-> (JSExpression -> String)
-> ([JSExpression] -> ShowS)
-> Show JSExpression
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSExpression] -> ShowS
$cshowList :: [JSExpression] -> ShowS
show :: JSExpression -> String
$cshow :: JSExpression -> String
showsPrec :: Int -> JSExpression -> ShowS
$cshowsPrec :: Int -> JSExpression -> ShowS
Show, Typeable)

data JSArrowParameterList
    = JSUnparenthesizedArrowParameter !JSIdent
    | JSParenthesizedArrowParameterList !JSAnnot !(JSCommaList JSExpression) !JSAnnot
    deriving (Typeable JSArrowParameterList
DataType
Constr
Typeable JSArrowParameterList
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g)
    -> JSArrowParameterList
    -> c JSArrowParameterList)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSArrowParameterList)
-> (JSArrowParameterList -> Constr)
-> (JSArrowParameterList -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSArrowParameterList))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSArrowParameterList))
-> ((forall b. Data b => b -> b)
    -> JSArrowParameterList -> JSArrowParameterList)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSArrowParameterList -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSArrowParameterList -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> JSArrowParameterList -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSArrowParameterList -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> JSArrowParameterList -> m JSArrowParameterList)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSArrowParameterList -> m JSArrowParameterList)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSArrowParameterList -> m JSArrowParameterList)
-> Data JSArrowParameterList
JSArrowParameterList -> DataType
JSArrowParameterList -> Constr
(forall b. Data b => b -> b)
-> JSArrowParameterList -> JSArrowParameterList
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> JSArrowParameterList
-> c JSArrowParameterList
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSArrowParameterList
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) -> JSArrowParameterList -> u
forall u.
(forall d. Data d => d -> u) -> JSArrowParameterList -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSArrowParameterList -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSArrowParameterList -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSArrowParameterList -> m JSArrowParameterList
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSArrowParameterList -> m JSArrowParameterList
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSArrowParameterList
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> JSArrowParameterList
-> c JSArrowParameterList
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSArrowParameterList)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSArrowParameterList)
$cJSParenthesizedArrowParameterList :: Constr
$cJSUnparenthesizedArrowParameter :: Constr
$tJSArrowParameterList :: DataType
gmapMo :: (forall d. Data d => d -> m d)
-> JSArrowParameterList -> m JSArrowParameterList
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSArrowParameterList -> m JSArrowParameterList
gmapMp :: (forall d. Data d => d -> m d)
-> JSArrowParameterList -> m JSArrowParameterList
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSArrowParameterList -> m JSArrowParameterList
gmapM :: (forall d. Data d => d -> m d)
-> JSArrowParameterList -> m JSArrowParameterList
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSArrowParameterList -> m JSArrowParameterList
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSArrowParameterList -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> JSArrowParameterList -> u
gmapQ :: (forall d. Data d => d -> u) -> JSArrowParameterList -> [u]
$cgmapQ :: forall u.
(forall d. Data d => d -> u) -> JSArrowParameterList -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSArrowParameterList -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSArrowParameterList -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSArrowParameterList -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSArrowParameterList -> r
gmapT :: (forall b. Data b => b -> b)
-> JSArrowParameterList -> JSArrowParameterList
$cgmapT :: (forall b. Data b => b -> b)
-> JSArrowParameterList -> JSArrowParameterList
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSArrowParameterList)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSArrowParameterList)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSArrowParameterList)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSArrowParameterList)
dataTypeOf :: JSArrowParameterList -> DataType
$cdataTypeOf :: JSArrowParameterList -> DataType
toConstr :: JSArrowParameterList -> Constr
$ctoConstr :: JSArrowParameterList -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSArrowParameterList
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSArrowParameterList
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> JSArrowParameterList
-> c JSArrowParameterList
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> JSArrowParameterList
-> c JSArrowParameterList
$cp1Data :: Typeable JSArrowParameterList
Data, JSArrowParameterList -> JSArrowParameterList -> Bool
(JSArrowParameterList -> JSArrowParameterList -> Bool)
-> (JSArrowParameterList -> JSArrowParameterList -> Bool)
-> Eq JSArrowParameterList
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSArrowParameterList -> JSArrowParameterList -> Bool
$c/= :: JSArrowParameterList -> JSArrowParameterList -> Bool
== :: JSArrowParameterList -> JSArrowParameterList -> Bool
$c== :: JSArrowParameterList -> JSArrowParameterList -> Bool
Eq, Int -> JSArrowParameterList -> ShowS
[JSArrowParameterList] -> ShowS
JSArrowParameterList -> String
(Int -> JSArrowParameterList -> ShowS)
-> (JSArrowParameterList -> String)
-> ([JSArrowParameterList] -> ShowS)
-> Show JSArrowParameterList
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSArrowParameterList] -> ShowS
$cshowList :: [JSArrowParameterList] -> ShowS
show :: JSArrowParameterList -> String
$cshow :: JSArrowParameterList -> String
showsPrec :: Int -> JSArrowParameterList -> ShowS
$cshowsPrec :: Int -> JSArrowParameterList -> ShowS
Show, Typeable)

data JSBinOp
    = JSBinOpAnd !JSAnnot
    | JSBinOpBitAnd !JSAnnot
    | JSBinOpBitOr !JSAnnot
    | JSBinOpBitXor !JSAnnot
    | JSBinOpDivide !JSAnnot
    | JSBinOpEq !JSAnnot
    | JSBinOpGe !JSAnnot
    | JSBinOpGt !JSAnnot
    | JSBinOpIn !JSAnnot
    | JSBinOpInstanceOf !JSAnnot
    | JSBinOpLe !JSAnnot
    | JSBinOpLsh !JSAnnot
    | JSBinOpLt !JSAnnot
    | JSBinOpMinus !JSAnnot
    | JSBinOpMod !JSAnnot
    | JSBinOpNeq !JSAnnot
    | JSBinOpOf !JSAnnot
    | JSBinOpOr !JSAnnot
    | JSBinOpPlus !JSAnnot
    | JSBinOpRsh !JSAnnot
    | JSBinOpStrictEq !JSAnnot
    | JSBinOpStrictNeq !JSAnnot
    | JSBinOpTimes !JSAnnot
    | JSBinOpUrsh !JSAnnot
    deriving (Typeable JSBinOp
DataType
Constr
Typeable JSBinOp
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSBinOp -> c JSBinOp)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSBinOp)
-> (JSBinOp -> Constr)
-> (JSBinOp -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSBinOp))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSBinOp))
-> ((forall b. Data b => b -> b) -> JSBinOp -> JSBinOp)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSBinOp -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSBinOp -> r)
-> (forall u. (forall d. Data d => d -> u) -> JSBinOp -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> JSBinOp -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> JSBinOp -> m JSBinOp)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSBinOp -> m JSBinOp)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSBinOp -> m JSBinOp)
-> Data JSBinOp
JSBinOp -> DataType
JSBinOp -> Constr
(forall b. Data b => b -> b) -> JSBinOp -> JSBinOp
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSBinOp -> c JSBinOp
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSBinOp
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) -> JSBinOp -> u
forall u. (forall d. Data d => d -> u) -> JSBinOp -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSBinOp -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSBinOp -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSBinOp -> m JSBinOp
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSBinOp -> m JSBinOp
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSBinOp
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSBinOp -> c JSBinOp
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSBinOp)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSBinOp)
$cJSBinOpUrsh :: Constr
$cJSBinOpTimes :: Constr
$cJSBinOpStrictNeq :: Constr
$cJSBinOpStrictEq :: Constr
$cJSBinOpRsh :: Constr
$cJSBinOpPlus :: Constr
$cJSBinOpOr :: Constr
$cJSBinOpOf :: Constr
$cJSBinOpNeq :: Constr
$cJSBinOpMod :: Constr
$cJSBinOpMinus :: Constr
$cJSBinOpLt :: Constr
$cJSBinOpLsh :: Constr
$cJSBinOpLe :: Constr
$cJSBinOpInstanceOf :: Constr
$cJSBinOpIn :: Constr
$cJSBinOpGt :: Constr
$cJSBinOpGe :: Constr
$cJSBinOpEq :: Constr
$cJSBinOpDivide :: Constr
$cJSBinOpBitXor :: Constr
$cJSBinOpBitOr :: Constr
$cJSBinOpBitAnd :: Constr
$cJSBinOpAnd :: Constr
$tJSBinOp :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> JSBinOp -> m JSBinOp
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSBinOp -> m JSBinOp
gmapMp :: (forall d. Data d => d -> m d) -> JSBinOp -> m JSBinOp
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSBinOp -> m JSBinOp
gmapM :: (forall d. Data d => d -> m d) -> JSBinOp -> m JSBinOp
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSBinOp -> m JSBinOp
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSBinOp -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> JSBinOp -> u
gmapQ :: (forall d. Data d => d -> u) -> JSBinOp -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSBinOp -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSBinOp -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSBinOp -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSBinOp -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSBinOp -> r
gmapT :: (forall b. Data b => b -> b) -> JSBinOp -> JSBinOp
$cgmapT :: (forall b. Data b => b -> b) -> JSBinOp -> JSBinOp
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSBinOp)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSBinOp)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSBinOp)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSBinOp)
dataTypeOf :: JSBinOp -> DataType
$cdataTypeOf :: JSBinOp -> DataType
toConstr :: JSBinOp -> Constr
$ctoConstr :: JSBinOp -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSBinOp
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSBinOp
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSBinOp -> c JSBinOp
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSBinOp -> c JSBinOp
$cp1Data :: Typeable JSBinOp
Data, JSBinOp -> JSBinOp -> Bool
(JSBinOp -> JSBinOp -> Bool)
-> (JSBinOp -> JSBinOp -> Bool) -> Eq JSBinOp
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSBinOp -> JSBinOp -> Bool
$c/= :: JSBinOp -> JSBinOp -> Bool
== :: JSBinOp -> JSBinOp -> Bool
$c== :: JSBinOp -> JSBinOp -> Bool
Eq, Int -> JSBinOp -> ShowS
[JSBinOp] -> ShowS
JSBinOp -> String
(Int -> JSBinOp -> ShowS)
-> (JSBinOp -> String) -> ([JSBinOp] -> ShowS) -> Show JSBinOp
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSBinOp] -> ShowS
$cshowList :: [JSBinOp] -> ShowS
show :: JSBinOp -> String
$cshow :: JSBinOp -> String
showsPrec :: Int -> JSBinOp -> ShowS
$cshowsPrec :: Int -> JSBinOp -> ShowS
Show, Typeable)

data JSUnaryOp
    = JSUnaryOpDecr !JSAnnot
    | JSUnaryOpDelete !JSAnnot
    | JSUnaryOpIncr !JSAnnot
    | JSUnaryOpMinus !JSAnnot
    | JSUnaryOpNot !JSAnnot
    | JSUnaryOpPlus !JSAnnot
    | JSUnaryOpTilde !JSAnnot
    | JSUnaryOpTypeof !JSAnnot
    | JSUnaryOpVoid !JSAnnot
    deriving (Typeable JSUnaryOp
DataType
Constr
Typeable JSUnaryOp
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSUnaryOp -> c JSUnaryOp)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSUnaryOp)
-> (JSUnaryOp -> Constr)
-> (JSUnaryOp -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSUnaryOp))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSUnaryOp))
-> ((forall b. Data b => b -> b) -> JSUnaryOp -> JSUnaryOp)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSUnaryOp -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSUnaryOp -> r)
-> (forall u. (forall d. Data d => d -> u) -> JSUnaryOp -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSUnaryOp -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> JSUnaryOp -> m JSUnaryOp)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSUnaryOp -> m JSUnaryOp)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSUnaryOp -> m JSUnaryOp)
-> Data JSUnaryOp
JSUnaryOp -> DataType
JSUnaryOp -> Constr
(forall b. Data b => b -> b) -> JSUnaryOp -> JSUnaryOp
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSUnaryOp -> c JSUnaryOp
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSUnaryOp
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) -> JSUnaryOp -> u
forall u. (forall d. Data d => d -> u) -> JSUnaryOp -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSUnaryOp -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSUnaryOp -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSUnaryOp -> m JSUnaryOp
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSUnaryOp -> m JSUnaryOp
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSUnaryOp
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSUnaryOp -> c JSUnaryOp
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSUnaryOp)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSUnaryOp)
$cJSUnaryOpVoid :: Constr
$cJSUnaryOpTypeof :: Constr
$cJSUnaryOpTilde :: Constr
$cJSUnaryOpPlus :: Constr
$cJSUnaryOpNot :: Constr
$cJSUnaryOpMinus :: Constr
$cJSUnaryOpIncr :: Constr
$cJSUnaryOpDelete :: Constr
$cJSUnaryOpDecr :: Constr
$tJSUnaryOp :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> JSUnaryOp -> m JSUnaryOp
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSUnaryOp -> m JSUnaryOp
gmapMp :: (forall d. Data d => d -> m d) -> JSUnaryOp -> m JSUnaryOp
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSUnaryOp -> m JSUnaryOp
gmapM :: (forall d. Data d => d -> m d) -> JSUnaryOp -> m JSUnaryOp
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSUnaryOp -> m JSUnaryOp
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSUnaryOp -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> JSUnaryOp -> u
gmapQ :: (forall d. Data d => d -> u) -> JSUnaryOp -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSUnaryOp -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSUnaryOp -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSUnaryOp -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSUnaryOp -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSUnaryOp -> r
gmapT :: (forall b. Data b => b -> b) -> JSUnaryOp -> JSUnaryOp
$cgmapT :: (forall b. Data b => b -> b) -> JSUnaryOp -> JSUnaryOp
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSUnaryOp)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSUnaryOp)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSUnaryOp)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSUnaryOp)
dataTypeOf :: JSUnaryOp -> DataType
$cdataTypeOf :: JSUnaryOp -> DataType
toConstr :: JSUnaryOp -> Constr
$ctoConstr :: JSUnaryOp -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSUnaryOp
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSUnaryOp
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSUnaryOp -> c JSUnaryOp
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSUnaryOp -> c JSUnaryOp
$cp1Data :: Typeable JSUnaryOp
Data, JSUnaryOp -> JSUnaryOp -> Bool
(JSUnaryOp -> JSUnaryOp -> Bool)
-> (JSUnaryOp -> JSUnaryOp -> Bool) -> Eq JSUnaryOp
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSUnaryOp -> JSUnaryOp -> Bool
$c/= :: JSUnaryOp -> JSUnaryOp -> Bool
== :: JSUnaryOp -> JSUnaryOp -> Bool
$c== :: JSUnaryOp -> JSUnaryOp -> Bool
Eq, Int -> JSUnaryOp -> ShowS
[JSUnaryOp] -> ShowS
JSUnaryOp -> String
(Int -> JSUnaryOp -> ShowS)
-> (JSUnaryOp -> String)
-> ([JSUnaryOp] -> ShowS)
-> Show JSUnaryOp
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSUnaryOp] -> ShowS
$cshowList :: [JSUnaryOp] -> ShowS
show :: JSUnaryOp -> String
$cshow :: JSUnaryOp -> String
showsPrec :: Int -> JSUnaryOp -> ShowS
$cshowsPrec :: Int -> JSUnaryOp -> ShowS
Show, Typeable)

data JSSemi
    = JSSemi !JSAnnot
    | JSSemiAuto
    deriving (Typeable JSSemi
DataType
Constr
Typeable JSSemi
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSSemi -> c JSSemi)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSSemi)
-> (JSSemi -> Constr)
-> (JSSemi -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSSemi))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSSemi))
-> ((forall b. Data b => b -> b) -> JSSemi -> JSSemi)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSSemi -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSSemi -> r)
-> (forall u. (forall d. Data d => d -> u) -> JSSemi -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> JSSemi -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> JSSemi -> m JSSemi)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSSemi -> m JSSemi)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSSemi -> m JSSemi)
-> Data JSSemi
JSSemi -> DataType
JSSemi -> Constr
(forall b. Data b => b -> b) -> JSSemi -> JSSemi
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSSemi -> c JSSemi
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSSemi
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) -> JSSemi -> u
forall u. (forall d. Data d => d -> u) -> JSSemi -> [u]
forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> JSSemi -> r
forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> JSSemi -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSSemi -> m JSSemi
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSSemi -> m JSSemi
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSSemi
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSSemi -> c JSSemi
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSSemi)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSSemi)
$cJSSemiAuto :: Constr
$cJSSemi :: Constr
$tJSSemi :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> JSSemi -> m JSSemi
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSSemi -> m JSSemi
gmapMp :: (forall d. Data d => d -> m d) -> JSSemi -> m JSSemi
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSSemi -> m JSSemi
gmapM :: (forall d. Data d => d -> m d) -> JSSemi -> m JSSemi
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSSemi -> m JSSemi
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSSemi -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> JSSemi -> u
gmapQ :: (forall d. Data d => d -> u) -> JSSemi -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSSemi -> [u]
gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> JSSemi -> r
$cgmapQr :: forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> JSSemi -> r
gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> JSSemi -> r
$cgmapQl :: forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> JSSemi -> r
gmapT :: (forall b. Data b => b -> b) -> JSSemi -> JSSemi
$cgmapT :: (forall b. Data b => b -> b) -> JSSemi -> JSSemi
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSSemi)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSSemi)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSSemi)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSSemi)
dataTypeOf :: JSSemi -> DataType
$cdataTypeOf :: JSSemi -> DataType
toConstr :: JSSemi -> Constr
$ctoConstr :: JSSemi -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSSemi
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSSemi
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSSemi -> c JSSemi
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSSemi -> c JSSemi
$cp1Data :: Typeable JSSemi
Data, JSSemi -> JSSemi -> Bool
(JSSemi -> JSSemi -> Bool)
-> (JSSemi -> JSSemi -> Bool) -> Eq JSSemi
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSSemi -> JSSemi -> Bool
$c/= :: JSSemi -> JSSemi -> Bool
== :: JSSemi -> JSSemi -> Bool
$c== :: JSSemi -> JSSemi -> Bool
Eq, Int -> JSSemi -> ShowS
[JSSemi] -> ShowS
JSSemi -> String
(Int -> JSSemi -> ShowS)
-> (JSSemi -> String) -> ([JSSemi] -> ShowS) -> Show JSSemi
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSSemi] -> ShowS
$cshowList :: [JSSemi] -> ShowS
show :: JSSemi -> String
$cshow :: JSSemi -> String
showsPrec :: Int -> JSSemi -> ShowS
$cshowsPrec :: Int -> JSSemi -> ShowS
Show, Typeable)

data JSAssignOp
    = JSAssign !JSAnnot
    | JSTimesAssign !JSAnnot
    | JSDivideAssign !JSAnnot
    | JSModAssign !JSAnnot
    | JSPlusAssign !JSAnnot
    | JSMinusAssign !JSAnnot
    | JSLshAssign !JSAnnot
    | JSRshAssign !JSAnnot
    | JSUrshAssign !JSAnnot
    | JSBwAndAssign !JSAnnot
    | JSBwXorAssign !JSAnnot
    | JSBwOrAssign !JSAnnot
    deriving (Typeable JSAssignOp
DataType
Constr
Typeable JSAssignOp
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSAssignOp -> c JSAssignOp)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSAssignOp)
-> (JSAssignOp -> Constr)
-> (JSAssignOp -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSAssignOp))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSAssignOp))
-> ((forall b. Data b => b -> b) -> JSAssignOp -> JSAssignOp)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSAssignOp -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSAssignOp -> r)
-> (forall u. (forall d. Data d => d -> u) -> JSAssignOp -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSAssignOp -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> JSAssignOp -> m JSAssignOp)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSAssignOp -> m JSAssignOp)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSAssignOp -> m JSAssignOp)
-> Data JSAssignOp
JSAssignOp -> DataType
JSAssignOp -> Constr
(forall b. Data b => b -> b) -> JSAssignOp -> JSAssignOp
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSAssignOp -> c JSAssignOp
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSAssignOp
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) -> JSAssignOp -> u
forall u. (forall d. Data d => d -> u) -> JSAssignOp -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSAssignOp -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSAssignOp -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSAssignOp -> m JSAssignOp
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSAssignOp -> m JSAssignOp
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSAssignOp
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSAssignOp -> c JSAssignOp
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSAssignOp)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSAssignOp)
$cJSBwOrAssign :: Constr
$cJSBwXorAssign :: Constr
$cJSBwAndAssign :: Constr
$cJSUrshAssign :: Constr
$cJSRshAssign :: Constr
$cJSLshAssign :: Constr
$cJSMinusAssign :: Constr
$cJSPlusAssign :: Constr
$cJSModAssign :: Constr
$cJSDivideAssign :: Constr
$cJSTimesAssign :: Constr
$cJSAssign :: Constr
$tJSAssignOp :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> JSAssignOp -> m JSAssignOp
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSAssignOp -> m JSAssignOp
gmapMp :: (forall d. Data d => d -> m d) -> JSAssignOp -> m JSAssignOp
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSAssignOp -> m JSAssignOp
gmapM :: (forall d. Data d => d -> m d) -> JSAssignOp -> m JSAssignOp
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSAssignOp -> m JSAssignOp
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSAssignOp -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> JSAssignOp -> u
gmapQ :: (forall d. Data d => d -> u) -> JSAssignOp -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSAssignOp -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSAssignOp -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSAssignOp -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSAssignOp -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSAssignOp -> r
gmapT :: (forall b. Data b => b -> b) -> JSAssignOp -> JSAssignOp
$cgmapT :: (forall b. Data b => b -> b) -> JSAssignOp -> JSAssignOp
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSAssignOp)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSAssignOp)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSAssignOp)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSAssignOp)
dataTypeOf :: JSAssignOp -> DataType
$cdataTypeOf :: JSAssignOp -> DataType
toConstr :: JSAssignOp -> Constr
$ctoConstr :: JSAssignOp -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSAssignOp
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSAssignOp
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSAssignOp -> c JSAssignOp
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSAssignOp -> c JSAssignOp
$cp1Data :: Typeable JSAssignOp
Data, JSAssignOp -> JSAssignOp -> Bool
(JSAssignOp -> JSAssignOp -> Bool)
-> (JSAssignOp -> JSAssignOp -> Bool) -> Eq JSAssignOp
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSAssignOp -> JSAssignOp -> Bool
$c/= :: JSAssignOp -> JSAssignOp -> Bool
== :: JSAssignOp -> JSAssignOp -> Bool
$c== :: JSAssignOp -> JSAssignOp -> Bool
Eq, Int -> JSAssignOp -> ShowS
[JSAssignOp] -> ShowS
JSAssignOp -> String
(Int -> JSAssignOp -> ShowS)
-> (JSAssignOp -> String)
-> ([JSAssignOp] -> ShowS)
-> Show JSAssignOp
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSAssignOp] -> ShowS
$cshowList :: [JSAssignOp] -> ShowS
show :: JSAssignOp -> String
$cshow :: JSAssignOp -> String
showsPrec :: Int -> JSAssignOp -> ShowS
$cshowsPrec :: Int -> JSAssignOp -> ShowS
Show, Typeable)

data JSTryCatch
    = JSCatch !JSAnnot !JSAnnot !JSExpression !JSAnnot !JSBlock -- ^catch,lb,ident,rb,block
    | JSCatchIf !JSAnnot !JSAnnot !JSExpression !JSAnnot !JSExpression !JSAnnot !JSBlock -- ^catch,lb,ident,if,expr,rb,block
    deriving (Typeable JSTryCatch
DataType
Constr
Typeable JSTryCatch
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSTryCatch -> c JSTryCatch)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSTryCatch)
-> (JSTryCatch -> Constr)
-> (JSTryCatch -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSTryCatch))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSTryCatch))
-> ((forall b. Data b => b -> b) -> JSTryCatch -> JSTryCatch)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSTryCatch -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSTryCatch -> r)
-> (forall u. (forall d. Data d => d -> u) -> JSTryCatch -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSTryCatch -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> JSTryCatch -> m JSTryCatch)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSTryCatch -> m JSTryCatch)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSTryCatch -> m JSTryCatch)
-> Data JSTryCatch
JSTryCatch -> DataType
JSTryCatch -> Constr
(forall b. Data b => b -> b) -> JSTryCatch -> JSTryCatch
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSTryCatch -> c JSTryCatch
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSTryCatch
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) -> JSTryCatch -> u
forall u. (forall d. Data d => d -> u) -> JSTryCatch -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSTryCatch -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSTryCatch -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSTryCatch -> m JSTryCatch
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSTryCatch -> m JSTryCatch
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSTryCatch
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSTryCatch -> c JSTryCatch
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSTryCatch)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSTryCatch)
$cJSCatchIf :: Constr
$cJSCatch :: Constr
$tJSTryCatch :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> JSTryCatch -> m JSTryCatch
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSTryCatch -> m JSTryCatch
gmapMp :: (forall d. Data d => d -> m d) -> JSTryCatch -> m JSTryCatch
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSTryCatch -> m JSTryCatch
gmapM :: (forall d. Data d => d -> m d) -> JSTryCatch -> m JSTryCatch
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSTryCatch -> m JSTryCatch
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSTryCatch -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> JSTryCatch -> u
gmapQ :: (forall d. Data d => d -> u) -> JSTryCatch -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSTryCatch -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSTryCatch -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSTryCatch -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSTryCatch -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSTryCatch -> r
gmapT :: (forall b. Data b => b -> b) -> JSTryCatch -> JSTryCatch
$cgmapT :: (forall b. Data b => b -> b) -> JSTryCatch -> JSTryCatch
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSTryCatch)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSTryCatch)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSTryCatch)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSTryCatch)
dataTypeOf :: JSTryCatch -> DataType
$cdataTypeOf :: JSTryCatch -> DataType
toConstr :: JSTryCatch -> Constr
$ctoConstr :: JSTryCatch -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSTryCatch
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSTryCatch
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSTryCatch -> c JSTryCatch
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSTryCatch -> c JSTryCatch
$cp1Data :: Typeable JSTryCatch
Data, JSTryCatch -> JSTryCatch -> Bool
(JSTryCatch -> JSTryCatch -> Bool)
-> (JSTryCatch -> JSTryCatch -> Bool) -> Eq JSTryCatch
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSTryCatch -> JSTryCatch -> Bool
$c/= :: JSTryCatch -> JSTryCatch -> Bool
== :: JSTryCatch -> JSTryCatch -> Bool
$c== :: JSTryCatch -> JSTryCatch -> Bool
Eq, Int -> JSTryCatch -> ShowS
[JSTryCatch] -> ShowS
JSTryCatch -> String
(Int -> JSTryCatch -> ShowS)
-> (JSTryCatch -> String)
-> ([JSTryCatch] -> ShowS)
-> Show JSTryCatch
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSTryCatch] -> ShowS
$cshowList :: [JSTryCatch] -> ShowS
show :: JSTryCatch -> String
$cshow :: JSTryCatch -> String
showsPrec :: Int -> JSTryCatch -> ShowS
$cshowsPrec :: Int -> JSTryCatch -> ShowS
Show, Typeable)

data JSTryFinally
    = JSFinally !JSAnnot !JSBlock -- ^finally,block
    | JSNoFinally
    deriving (Typeable JSTryFinally
DataType
Constr
Typeable JSTryFinally
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSTryFinally -> c JSTryFinally)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSTryFinally)
-> (JSTryFinally -> Constr)
-> (JSTryFinally -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSTryFinally))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSTryFinally))
-> ((forall b. Data b => b -> b) -> JSTryFinally -> JSTryFinally)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSTryFinally -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSTryFinally -> r)
-> (forall u. (forall d. Data d => d -> u) -> JSTryFinally -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSTryFinally -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> JSTryFinally -> m JSTryFinally)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSTryFinally -> m JSTryFinally)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSTryFinally -> m JSTryFinally)
-> Data JSTryFinally
JSTryFinally -> DataType
JSTryFinally -> Constr
(forall b. Data b => b -> b) -> JSTryFinally -> JSTryFinally
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSTryFinally -> c JSTryFinally
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSTryFinally
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) -> JSTryFinally -> u
forall u. (forall d. Data d => d -> u) -> JSTryFinally -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSTryFinally -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSTryFinally -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSTryFinally -> m JSTryFinally
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSTryFinally -> m JSTryFinally
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSTryFinally
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSTryFinally -> c JSTryFinally
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSTryFinally)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSTryFinally)
$cJSNoFinally :: Constr
$cJSFinally :: Constr
$tJSTryFinally :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> JSTryFinally -> m JSTryFinally
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSTryFinally -> m JSTryFinally
gmapMp :: (forall d. Data d => d -> m d) -> JSTryFinally -> m JSTryFinally
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSTryFinally -> m JSTryFinally
gmapM :: (forall d. Data d => d -> m d) -> JSTryFinally -> m JSTryFinally
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSTryFinally -> m JSTryFinally
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSTryFinally -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> JSTryFinally -> u
gmapQ :: (forall d. Data d => d -> u) -> JSTryFinally -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSTryFinally -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSTryFinally -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSTryFinally -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSTryFinally -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSTryFinally -> r
gmapT :: (forall b. Data b => b -> b) -> JSTryFinally -> JSTryFinally
$cgmapT :: (forall b. Data b => b -> b) -> JSTryFinally -> JSTryFinally
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSTryFinally)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSTryFinally)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSTryFinally)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSTryFinally)
dataTypeOf :: JSTryFinally -> DataType
$cdataTypeOf :: JSTryFinally -> DataType
toConstr :: JSTryFinally -> Constr
$ctoConstr :: JSTryFinally -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSTryFinally
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSTryFinally
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSTryFinally -> c JSTryFinally
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSTryFinally -> c JSTryFinally
$cp1Data :: Typeable JSTryFinally
Data, JSTryFinally -> JSTryFinally -> Bool
(JSTryFinally -> JSTryFinally -> Bool)
-> (JSTryFinally -> JSTryFinally -> Bool) -> Eq JSTryFinally
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSTryFinally -> JSTryFinally -> Bool
$c/= :: JSTryFinally -> JSTryFinally -> Bool
== :: JSTryFinally -> JSTryFinally -> Bool
$c== :: JSTryFinally -> JSTryFinally -> Bool
Eq, Int -> JSTryFinally -> ShowS
[JSTryFinally] -> ShowS
JSTryFinally -> String
(Int -> JSTryFinally -> ShowS)
-> (JSTryFinally -> String)
-> ([JSTryFinally] -> ShowS)
-> Show JSTryFinally
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSTryFinally] -> ShowS
$cshowList :: [JSTryFinally] -> ShowS
show :: JSTryFinally -> String
$cshow :: JSTryFinally -> String
showsPrec :: Int -> JSTryFinally -> ShowS
$cshowsPrec :: Int -> JSTryFinally -> ShowS
Show, Typeable)

data JSBlock
    = JSBlock !JSAnnot ![JSStatement] !JSAnnot -- ^lbrace, stmts, rbrace
    deriving (Typeable JSBlock
DataType
Constr
Typeable JSBlock
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSBlock -> c JSBlock)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSBlock)
-> (JSBlock -> Constr)
-> (JSBlock -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSBlock))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSBlock))
-> ((forall b. Data b => b -> b) -> JSBlock -> JSBlock)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSBlock -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSBlock -> r)
-> (forall u. (forall d. Data d => d -> u) -> JSBlock -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> JSBlock -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> JSBlock -> m JSBlock)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSBlock -> m JSBlock)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSBlock -> m JSBlock)
-> Data JSBlock
JSBlock -> DataType
JSBlock -> Constr
(forall b. Data b => b -> b) -> JSBlock -> JSBlock
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSBlock -> c JSBlock
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSBlock
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) -> JSBlock -> u
forall u. (forall d. Data d => d -> u) -> JSBlock -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSBlock -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSBlock -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSBlock -> m JSBlock
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSBlock -> m JSBlock
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSBlock
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSBlock -> c JSBlock
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSBlock)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSBlock)
$cJSBlock :: Constr
$tJSBlock :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> JSBlock -> m JSBlock
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSBlock -> m JSBlock
gmapMp :: (forall d. Data d => d -> m d) -> JSBlock -> m JSBlock
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSBlock -> m JSBlock
gmapM :: (forall d. Data d => d -> m d) -> JSBlock -> m JSBlock
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSBlock -> m JSBlock
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSBlock -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> JSBlock -> u
gmapQ :: (forall d. Data d => d -> u) -> JSBlock -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSBlock -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSBlock -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSBlock -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSBlock -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSBlock -> r
gmapT :: (forall b. Data b => b -> b) -> JSBlock -> JSBlock
$cgmapT :: (forall b. Data b => b -> b) -> JSBlock -> JSBlock
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSBlock)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSBlock)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSBlock)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSBlock)
dataTypeOf :: JSBlock -> DataType
$cdataTypeOf :: JSBlock -> DataType
toConstr :: JSBlock -> Constr
$ctoConstr :: JSBlock -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSBlock
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSBlock
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSBlock -> c JSBlock
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSBlock -> c JSBlock
$cp1Data :: Typeable JSBlock
Data, JSBlock -> JSBlock -> Bool
(JSBlock -> JSBlock -> Bool)
-> (JSBlock -> JSBlock -> Bool) -> Eq JSBlock
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSBlock -> JSBlock -> Bool
$c/= :: JSBlock -> JSBlock -> Bool
== :: JSBlock -> JSBlock -> Bool
$c== :: JSBlock -> JSBlock -> Bool
Eq, Int -> JSBlock -> ShowS
[JSBlock] -> ShowS
JSBlock -> String
(Int -> JSBlock -> ShowS)
-> (JSBlock -> String) -> ([JSBlock] -> ShowS) -> Show JSBlock
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSBlock] -> ShowS
$cshowList :: [JSBlock] -> ShowS
show :: JSBlock -> String
$cshow :: JSBlock -> String
showsPrec :: Int -> JSBlock -> ShowS
$cshowsPrec :: Int -> JSBlock -> ShowS
Show, Typeable)

data JSSwitchParts
    = JSCase !JSAnnot !JSExpression !JSAnnot ![JSStatement]    -- ^expr,colon,stmtlist
    | JSDefault !JSAnnot !JSAnnot ![JSStatement] -- ^colon,stmtlist
    deriving (Typeable JSSwitchParts
DataType
Constr
Typeable JSSwitchParts
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSSwitchParts -> c JSSwitchParts)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSSwitchParts)
-> (JSSwitchParts -> Constr)
-> (JSSwitchParts -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSSwitchParts))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSSwitchParts))
-> ((forall b. Data b => b -> b) -> JSSwitchParts -> JSSwitchParts)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSSwitchParts -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSSwitchParts -> r)
-> (forall u. (forall d. Data d => d -> u) -> JSSwitchParts -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSSwitchParts -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> JSSwitchParts -> m JSSwitchParts)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSSwitchParts -> m JSSwitchParts)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSSwitchParts -> m JSSwitchParts)
-> Data JSSwitchParts
JSSwitchParts -> DataType
JSSwitchParts -> Constr
(forall b. Data b => b -> b) -> JSSwitchParts -> JSSwitchParts
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSSwitchParts -> c JSSwitchParts
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSSwitchParts
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) -> JSSwitchParts -> u
forall u. (forall d. Data d => d -> u) -> JSSwitchParts -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSSwitchParts -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSSwitchParts -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSSwitchParts -> m JSSwitchParts
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSSwitchParts -> m JSSwitchParts
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSSwitchParts
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSSwitchParts -> c JSSwitchParts
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSSwitchParts)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSSwitchParts)
$cJSDefault :: Constr
$cJSCase :: Constr
$tJSSwitchParts :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> JSSwitchParts -> m JSSwitchParts
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSSwitchParts -> m JSSwitchParts
gmapMp :: (forall d. Data d => d -> m d) -> JSSwitchParts -> m JSSwitchParts
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSSwitchParts -> m JSSwitchParts
gmapM :: (forall d. Data d => d -> m d) -> JSSwitchParts -> m JSSwitchParts
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSSwitchParts -> m JSSwitchParts
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSSwitchParts -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> JSSwitchParts -> u
gmapQ :: (forall d. Data d => d -> u) -> JSSwitchParts -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSSwitchParts -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSSwitchParts -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSSwitchParts -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSSwitchParts -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSSwitchParts -> r
gmapT :: (forall b. Data b => b -> b) -> JSSwitchParts -> JSSwitchParts
$cgmapT :: (forall b. Data b => b -> b) -> JSSwitchParts -> JSSwitchParts
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSSwitchParts)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSSwitchParts)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSSwitchParts)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSSwitchParts)
dataTypeOf :: JSSwitchParts -> DataType
$cdataTypeOf :: JSSwitchParts -> DataType
toConstr :: JSSwitchParts -> Constr
$ctoConstr :: JSSwitchParts -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSSwitchParts
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSSwitchParts
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSSwitchParts -> c JSSwitchParts
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSSwitchParts -> c JSSwitchParts
$cp1Data :: Typeable JSSwitchParts
Data, JSSwitchParts -> JSSwitchParts -> Bool
(JSSwitchParts -> JSSwitchParts -> Bool)
-> (JSSwitchParts -> JSSwitchParts -> Bool) -> Eq JSSwitchParts
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSSwitchParts -> JSSwitchParts -> Bool
$c/= :: JSSwitchParts -> JSSwitchParts -> Bool
== :: JSSwitchParts -> JSSwitchParts -> Bool
$c== :: JSSwitchParts -> JSSwitchParts -> Bool
Eq, Int -> JSSwitchParts -> ShowS
[JSSwitchParts] -> ShowS
JSSwitchParts -> String
(Int -> JSSwitchParts -> ShowS)
-> (JSSwitchParts -> String)
-> ([JSSwitchParts] -> ShowS)
-> Show JSSwitchParts
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSSwitchParts] -> ShowS
$cshowList :: [JSSwitchParts] -> ShowS
show :: JSSwitchParts -> String
$cshow :: JSSwitchParts -> String
showsPrec :: Int -> JSSwitchParts -> ShowS
$cshowsPrec :: Int -> JSSwitchParts -> ShowS
Show, Typeable)

data JSVarInitializer
    = JSVarInit !JSAnnot !JSExpression -- ^ assignop, initializer
    | JSVarInitNone
    deriving (Typeable JSVarInitializer
DataType
Constr
Typeable JSVarInitializer
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSVarInitializer -> c JSVarInitializer)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSVarInitializer)
-> (JSVarInitializer -> Constr)
-> (JSVarInitializer -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSVarInitializer))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSVarInitializer))
-> ((forall b. Data b => b -> b)
    -> JSVarInitializer -> JSVarInitializer)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSVarInitializer -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSVarInitializer -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> JSVarInitializer -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSVarInitializer -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> JSVarInitializer -> m JSVarInitializer)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSVarInitializer -> m JSVarInitializer)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSVarInitializer -> m JSVarInitializer)
-> Data JSVarInitializer
JSVarInitializer -> DataType
JSVarInitializer -> Constr
(forall b. Data b => b -> b)
-> JSVarInitializer -> JSVarInitializer
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSVarInitializer -> c JSVarInitializer
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSVarInitializer
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) -> JSVarInitializer -> u
forall u. (forall d. Data d => d -> u) -> JSVarInitializer -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSVarInitializer -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSVarInitializer -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSVarInitializer -> m JSVarInitializer
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSVarInitializer -> m JSVarInitializer
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSVarInitializer
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSVarInitializer -> c JSVarInitializer
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSVarInitializer)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSVarInitializer)
$cJSVarInitNone :: Constr
$cJSVarInit :: Constr
$tJSVarInitializer :: DataType
gmapMo :: (forall d. Data d => d -> m d)
-> JSVarInitializer -> m JSVarInitializer
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSVarInitializer -> m JSVarInitializer
gmapMp :: (forall d. Data d => d -> m d)
-> JSVarInitializer -> m JSVarInitializer
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSVarInitializer -> m JSVarInitializer
gmapM :: (forall d. Data d => d -> m d)
-> JSVarInitializer -> m JSVarInitializer
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSVarInitializer -> m JSVarInitializer
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSVarInitializer -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> JSVarInitializer -> u
gmapQ :: (forall d. Data d => d -> u) -> JSVarInitializer -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSVarInitializer -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSVarInitializer -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSVarInitializer -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSVarInitializer -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSVarInitializer -> r
gmapT :: (forall b. Data b => b -> b)
-> JSVarInitializer -> JSVarInitializer
$cgmapT :: (forall b. Data b => b -> b)
-> JSVarInitializer -> JSVarInitializer
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSVarInitializer)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSVarInitializer)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSVarInitializer)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSVarInitializer)
dataTypeOf :: JSVarInitializer -> DataType
$cdataTypeOf :: JSVarInitializer -> DataType
toConstr :: JSVarInitializer -> Constr
$ctoConstr :: JSVarInitializer -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSVarInitializer
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSVarInitializer
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSVarInitializer -> c JSVarInitializer
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSVarInitializer -> c JSVarInitializer
$cp1Data :: Typeable JSVarInitializer
Data, JSVarInitializer -> JSVarInitializer -> Bool
(JSVarInitializer -> JSVarInitializer -> Bool)
-> (JSVarInitializer -> JSVarInitializer -> Bool)
-> Eq JSVarInitializer
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSVarInitializer -> JSVarInitializer -> Bool
$c/= :: JSVarInitializer -> JSVarInitializer -> Bool
== :: JSVarInitializer -> JSVarInitializer -> Bool
$c== :: JSVarInitializer -> JSVarInitializer -> Bool
Eq, Int -> JSVarInitializer -> ShowS
[JSVarInitializer] -> ShowS
JSVarInitializer -> String
(Int -> JSVarInitializer -> ShowS)
-> (JSVarInitializer -> String)
-> ([JSVarInitializer] -> ShowS)
-> Show JSVarInitializer
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSVarInitializer] -> ShowS
$cshowList :: [JSVarInitializer] -> ShowS
show :: JSVarInitializer -> String
$cshow :: JSVarInitializer -> String
showsPrec :: Int -> JSVarInitializer -> ShowS
$cshowsPrec :: Int -> JSVarInitializer -> ShowS
Show, Typeable)

data JSObjectProperty
    = JSPropertyNameandValue !JSPropertyName !JSAnnot ![JSExpression] -- ^name, colon, value
    | JSPropertyIdentRef !JSAnnot !String
    | JSObjectMethod !JSMethodDefinition
    deriving (Typeable JSObjectProperty
DataType
Constr
Typeable JSObjectProperty
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSObjectProperty -> c JSObjectProperty)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSObjectProperty)
-> (JSObjectProperty -> Constr)
-> (JSObjectProperty -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSObjectProperty))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSObjectProperty))
-> ((forall b. Data b => b -> b)
    -> JSObjectProperty -> JSObjectProperty)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSObjectProperty -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSObjectProperty -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> JSObjectProperty -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSObjectProperty -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> JSObjectProperty -> m JSObjectProperty)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSObjectProperty -> m JSObjectProperty)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSObjectProperty -> m JSObjectProperty)
-> Data JSObjectProperty
JSObjectProperty -> DataType
JSObjectProperty -> Constr
(forall b. Data b => b -> b)
-> JSObjectProperty -> JSObjectProperty
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSObjectProperty -> c JSObjectProperty
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSObjectProperty
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) -> JSObjectProperty -> u
forall u. (forall d. Data d => d -> u) -> JSObjectProperty -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSObjectProperty -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSObjectProperty -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSObjectProperty -> m JSObjectProperty
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSObjectProperty -> m JSObjectProperty
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSObjectProperty
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSObjectProperty -> c JSObjectProperty
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSObjectProperty)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSObjectProperty)
$cJSObjectMethod :: Constr
$cJSPropertyIdentRef :: Constr
$cJSPropertyNameandValue :: Constr
$tJSObjectProperty :: DataType
gmapMo :: (forall d. Data d => d -> m d)
-> JSObjectProperty -> m JSObjectProperty
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSObjectProperty -> m JSObjectProperty
gmapMp :: (forall d. Data d => d -> m d)
-> JSObjectProperty -> m JSObjectProperty
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSObjectProperty -> m JSObjectProperty
gmapM :: (forall d. Data d => d -> m d)
-> JSObjectProperty -> m JSObjectProperty
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSObjectProperty -> m JSObjectProperty
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSObjectProperty -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> JSObjectProperty -> u
gmapQ :: (forall d. Data d => d -> u) -> JSObjectProperty -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSObjectProperty -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSObjectProperty -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSObjectProperty -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSObjectProperty -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSObjectProperty -> r
gmapT :: (forall b. Data b => b -> b)
-> JSObjectProperty -> JSObjectProperty
$cgmapT :: (forall b. Data b => b -> b)
-> JSObjectProperty -> JSObjectProperty
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSObjectProperty)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSObjectProperty)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSObjectProperty)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSObjectProperty)
dataTypeOf :: JSObjectProperty -> DataType
$cdataTypeOf :: JSObjectProperty -> DataType
toConstr :: JSObjectProperty -> Constr
$ctoConstr :: JSObjectProperty -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSObjectProperty
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSObjectProperty
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSObjectProperty -> c JSObjectProperty
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSObjectProperty -> c JSObjectProperty
$cp1Data :: Typeable JSObjectProperty
Data, JSObjectProperty -> JSObjectProperty -> Bool
(JSObjectProperty -> JSObjectProperty -> Bool)
-> (JSObjectProperty -> JSObjectProperty -> Bool)
-> Eq JSObjectProperty
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSObjectProperty -> JSObjectProperty -> Bool
$c/= :: JSObjectProperty -> JSObjectProperty -> Bool
== :: JSObjectProperty -> JSObjectProperty -> Bool
$c== :: JSObjectProperty -> JSObjectProperty -> Bool
Eq, Int -> JSObjectProperty -> ShowS
[JSObjectProperty] -> ShowS
JSObjectProperty -> String
(Int -> JSObjectProperty -> ShowS)
-> (JSObjectProperty -> String)
-> ([JSObjectProperty] -> ShowS)
-> Show JSObjectProperty
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSObjectProperty] -> ShowS
$cshowList :: [JSObjectProperty] -> ShowS
show :: JSObjectProperty -> String
$cshow :: JSObjectProperty -> String
showsPrec :: Int -> JSObjectProperty -> ShowS
$cshowsPrec :: Int -> JSObjectProperty -> ShowS
Show, Typeable)

data JSMethodDefinition
    = JSMethodDefinition !JSPropertyName !JSAnnot !(JSCommaList JSExpression) !JSAnnot !JSBlock -- name, lb, params, rb, block
    | JSGeneratorMethodDefinition !JSAnnot !JSPropertyName !JSAnnot !(JSCommaList JSExpression) !JSAnnot !JSBlock -- ^*, name, lb, params, rb, block
    | JSPropertyAccessor !JSAccessor !JSPropertyName !JSAnnot !(JSCommaList JSExpression) !JSAnnot !JSBlock -- ^get/set, name, lb, params, rb, block
    deriving (Typeable JSMethodDefinition
DataType
Constr
Typeable JSMethodDefinition
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g)
    -> JSMethodDefinition
    -> c JSMethodDefinition)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSMethodDefinition)
-> (JSMethodDefinition -> Constr)
-> (JSMethodDefinition -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSMethodDefinition))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSMethodDefinition))
-> ((forall b. Data b => b -> b)
    -> JSMethodDefinition -> JSMethodDefinition)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSMethodDefinition -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSMethodDefinition -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> JSMethodDefinition -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSMethodDefinition -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> JSMethodDefinition -> m JSMethodDefinition)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSMethodDefinition -> m JSMethodDefinition)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSMethodDefinition -> m JSMethodDefinition)
-> Data JSMethodDefinition
JSMethodDefinition -> DataType
JSMethodDefinition -> Constr
(forall b. Data b => b -> b)
-> JSMethodDefinition -> JSMethodDefinition
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> JSMethodDefinition
-> c JSMethodDefinition
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSMethodDefinition
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) -> JSMethodDefinition -> u
forall u. (forall d. Data d => d -> u) -> JSMethodDefinition -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSMethodDefinition -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSMethodDefinition -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSMethodDefinition -> m JSMethodDefinition
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSMethodDefinition -> m JSMethodDefinition
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSMethodDefinition
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> JSMethodDefinition
-> c JSMethodDefinition
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSMethodDefinition)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSMethodDefinition)
$cJSPropertyAccessor :: Constr
$cJSGeneratorMethodDefinition :: Constr
$cJSMethodDefinition :: Constr
$tJSMethodDefinition :: DataType
gmapMo :: (forall d. Data d => d -> m d)
-> JSMethodDefinition -> m JSMethodDefinition
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSMethodDefinition -> m JSMethodDefinition
gmapMp :: (forall d. Data d => d -> m d)
-> JSMethodDefinition -> m JSMethodDefinition
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSMethodDefinition -> m JSMethodDefinition
gmapM :: (forall d. Data d => d -> m d)
-> JSMethodDefinition -> m JSMethodDefinition
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSMethodDefinition -> m JSMethodDefinition
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSMethodDefinition -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> JSMethodDefinition -> u
gmapQ :: (forall d. Data d => d -> u) -> JSMethodDefinition -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSMethodDefinition -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSMethodDefinition -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSMethodDefinition -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSMethodDefinition -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSMethodDefinition -> r
gmapT :: (forall b. Data b => b -> b)
-> JSMethodDefinition -> JSMethodDefinition
$cgmapT :: (forall b. Data b => b -> b)
-> JSMethodDefinition -> JSMethodDefinition
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSMethodDefinition)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSMethodDefinition)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSMethodDefinition)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSMethodDefinition)
dataTypeOf :: JSMethodDefinition -> DataType
$cdataTypeOf :: JSMethodDefinition -> DataType
toConstr :: JSMethodDefinition -> Constr
$ctoConstr :: JSMethodDefinition -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSMethodDefinition
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSMethodDefinition
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> JSMethodDefinition
-> c JSMethodDefinition
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> JSMethodDefinition
-> c JSMethodDefinition
$cp1Data :: Typeable JSMethodDefinition
Data, JSMethodDefinition -> JSMethodDefinition -> Bool
(JSMethodDefinition -> JSMethodDefinition -> Bool)
-> (JSMethodDefinition -> JSMethodDefinition -> Bool)
-> Eq JSMethodDefinition
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSMethodDefinition -> JSMethodDefinition -> Bool
$c/= :: JSMethodDefinition -> JSMethodDefinition -> Bool
== :: JSMethodDefinition -> JSMethodDefinition -> Bool
$c== :: JSMethodDefinition -> JSMethodDefinition -> Bool
Eq, Int -> JSMethodDefinition -> ShowS
[JSMethodDefinition] -> ShowS
JSMethodDefinition -> String
(Int -> JSMethodDefinition -> ShowS)
-> (JSMethodDefinition -> String)
-> ([JSMethodDefinition] -> ShowS)
-> Show JSMethodDefinition
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSMethodDefinition] -> ShowS
$cshowList :: [JSMethodDefinition] -> ShowS
show :: JSMethodDefinition -> String
$cshow :: JSMethodDefinition -> String
showsPrec :: Int -> JSMethodDefinition -> ShowS
$cshowsPrec :: Int -> JSMethodDefinition -> ShowS
Show, Typeable)

data JSPropertyName
    = JSPropertyIdent !JSAnnot !String
    | JSPropertyString !JSAnnot !String
    | JSPropertyNumber !JSAnnot !String
    | JSPropertyComputed !JSAnnot !JSExpression !JSAnnot -- ^lb, expr, rb
    deriving (Typeable JSPropertyName
DataType
Constr
Typeable JSPropertyName
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSPropertyName -> c JSPropertyName)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSPropertyName)
-> (JSPropertyName -> Constr)
-> (JSPropertyName -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSPropertyName))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSPropertyName))
-> ((forall b. Data b => b -> b)
    -> JSPropertyName -> JSPropertyName)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSPropertyName -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSPropertyName -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> JSPropertyName -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSPropertyName -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> JSPropertyName -> m JSPropertyName)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSPropertyName -> m JSPropertyName)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSPropertyName -> m JSPropertyName)
-> Data JSPropertyName
JSPropertyName -> DataType
JSPropertyName -> Constr
(forall b. Data b => b -> b) -> JSPropertyName -> JSPropertyName
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSPropertyName -> c JSPropertyName
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSPropertyName
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) -> JSPropertyName -> u
forall u. (forall d. Data d => d -> u) -> JSPropertyName -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSPropertyName -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSPropertyName -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSPropertyName -> m JSPropertyName
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSPropertyName -> m JSPropertyName
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSPropertyName
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSPropertyName -> c JSPropertyName
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSPropertyName)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSPropertyName)
$cJSPropertyComputed :: Constr
$cJSPropertyNumber :: Constr
$cJSPropertyString :: Constr
$cJSPropertyIdent :: Constr
$tJSPropertyName :: DataType
gmapMo :: (forall d. Data d => d -> m d)
-> JSPropertyName -> m JSPropertyName
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSPropertyName -> m JSPropertyName
gmapMp :: (forall d. Data d => d -> m d)
-> JSPropertyName -> m JSPropertyName
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSPropertyName -> m JSPropertyName
gmapM :: (forall d. Data d => d -> m d)
-> JSPropertyName -> m JSPropertyName
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSPropertyName -> m JSPropertyName
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSPropertyName -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> JSPropertyName -> u
gmapQ :: (forall d. Data d => d -> u) -> JSPropertyName -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSPropertyName -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSPropertyName -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSPropertyName -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSPropertyName -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSPropertyName -> r
gmapT :: (forall b. Data b => b -> b) -> JSPropertyName -> JSPropertyName
$cgmapT :: (forall b. Data b => b -> b) -> JSPropertyName -> JSPropertyName
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSPropertyName)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSPropertyName)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSPropertyName)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSPropertyName)
dataTypeOf :: JSPropertyName -> DataType
$cdataTypeOf :: JSPropertyName -> DataType
toConstr :: JSPropertyName -> Constr
$ctoConstr :: JSPropertyName -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSPropertyName
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSPropertyName
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSPropertyName -> c JSPropertyName
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSPropertyName -> c JSPropertyName
$cp1Data :: Typeable JSPropertyName
Data, JSPropertyName -> JSPropertyName -> Bool
(JSPropertyName -> JSPropertyName -> Bool)
-> (JSPropertyName -> JSPropertyName -> Bool) -> Eq JSPropertyName
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSPropertyName -> JSPropertyName -> Bool
$c/= :: JSPropertyName -> JSPropertyName -> Bool
== :: JSPropertyName -> JSPropertyName -> Bool
$c== :: JSPropertyName -> JSPropertyName -> Bool
Eq, Int -> JSPropertyName -> ShowS
[JSPropertyName] -> ShowS
JSPropertyName -> String
(Int -> JSPropertyName -> ShowS)
-> (JSPropertyName -> String)
-> ([JSPropertyName] -> ShowS)
-> Show JSPropertyName
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSPropertyName] -> ShowS
$cshowList :: [JSPropertyName] -> ShowS
show :: JSPropertyName -> String
$cshow :: JSPropertyName -> String
showsPrec :: Int -> JSPropertyName -> ShowS
$cshowsPrec :: Int -> JSPropertyName -> ShowS
Show, Typeable)

type JSObjectPropertyList = JSCommaTrailingList JSObjectProperty

-- | Accessors for JSObjectProperty is either 'get' or 'set'.
data JSAccessor
    = JSAccessorGet !JSAnnot
    | JSAccessorSet !JSAnnot
    deriving (Typeable JSAccessor
DataType
Constr
Typeable JSAccessor
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSAccessor -> c JSAccessor)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSAccessor)
-> (JSAccessor -> Constr)
-> (JSAccessor -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSAccessor))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSAccessor))
-> ((forall b. Data b => b -> b) -> JSAccessor -> JSAccessor)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSAccessor -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSAccessor -> r)
-> (forall u. (forall d. Data d => d -> u) -> JSAccessor -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSAccessor -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> JSAccessor -> m JSAccessor)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSAccessor -> m JSAccessor)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSAccessor -> m JSAccessor)
-> Data JSAccessor
JSAccessor -> DataType
JSAccessor -> Constr
(forall b. Data b => b -> b) -> JSAccessor -> JSAccessor
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSAccessor -> c JSAccessor
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSAccessor
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) -> JSAccessor -> u
forall u. (forall d. Data d => d -> u) -> JSAccessor -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSAccessor -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSAccessor -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSAccessor -> m JSAccessor
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSAccessor -> m JSAccessor
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSAccessor
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSAccessor -> c JSAccessor
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSAccessor)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSAccessor)
$cJSAccessorSet :: Constr
$cJSAccessorGet :: Constr
$tJSAccessor :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> JSAccessor -> m JSAccessor
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSAccessor -> m JSAccessor
gmapMp :: (forall d. Data d => d -> m d) -> JSAccessor -> m JSAccessor
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSAccessor -> m JSAccessor
gmapM :: (forall d. Data d => d -> m d) -> JSAccessor -> m JSAccessor
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSAccessor -> m JSAccessor
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSAccessor -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> JSAccessor -> u
gmapQ :: (forall d. Data d => d -> u) -> JSAccessor -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSAccessor -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSAccessor -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSAccessor -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSAccessor -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSAccessor -> r
gmapT :: (forall b. Data b => b -> b) -> JSAccessor -> JSAccessor
$cgmapT :: (forall b. Data b => b -> b) -> JSAccessor -> JSAccessor
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSAccessor)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSAccessor)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSAccessor)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSAccessor)
dataTypeOf :: JSAccessor -> DataType
$cdataTypeOf :: JSAccessor -> DataType
toConstr :: JSAccessor -> Constr
$ctoConstr :: JSAccessor -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSAccessor
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSAccessor
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSAccessor -> c JSAccessor
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSAccessor -> c JSAccessor
$cp1Data :: Typeable JSAccessor
Data, JSAccessor -> JSAccessor -> Bool
(JSAccessor -> JSAccessor -> Bool)
-> (JSAccessor -> JSAccessor -> Bool) -> Eq JSAccessor
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSAccessor -> JSAccessor -> Bool
$c/= :: JSAccessor -> JSAccessor -> Bool
== :: JSAccessor -> JSAccessor -> Bool
$c== :: JSAccessor -> JSAccessor -> Bool
Eq, Int -> JSAccessor -> ShowS
[JSAccessor] -> ShowS
JSAccessor -> String
(Int -> JSAccessor -> ShowS)
-> (JSAccessor -> String)
-> ([JSAccessor] -> ShowS)
-> Show JSAccessor
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSAccessor] -> ShowS
$cshowList :: [JSAccessor] -> ShowS
show :: JSAccessor -> String
$cshow :: JSAccessor -> String
showsPrec :: Int -> JSAccessor -> ShowS
$cshowsPrec :: Int -> JSAccessor -> ShowS
Show, Typeable)

data JSIdent
    = JSIdentName !JSAnnot !String
    | JSIdentNone
    deriving (Typeable JSIdent
DataType
Constr
Typeable JSIdent
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSIdent -> c JSIdent)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSIdent)
-> (JSIdent -> Constr)
-> (JSIdent -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSIdent))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSIdent))
-> ((forall b. Data b => b -> b) -> JSIdent -> JSIdent)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSIdent -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSIdent -> r)
-> (forall u. (forall d. Data d => d -> u) -> JSIdent -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> JSIdent -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> JSIdent -> m JSIdent)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSIdent -> m JSIdent)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> JSIdent -> m JSIdent)
-> Data JSIdent
JSIdent -> DataType
JSIdent -> Constr
(forall b. Data b => b -> b) -> JSIdent -> JSIdent
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSIdent -> c JSIdent
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSIdent
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) -> JSIdent -> u
forall u. (forall d. Data d => d -> u) -> JSIdent -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSIdent -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSIdent -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSIdent -> m JSIdent
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSIdent -> m JSIdent
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSIdent
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSIdent -> c JSIdent
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSIdent)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSIdent)
$cJSIdentNone :: Constr
$cJSIdentName :: Constr
$tJSIdent :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> JSIdent -> m JSIdent
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSIdent -> m JSIdent
gmapMp :: (forall d. Data d => d -> m d) -> JSIdent -> m JSIdent
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> JSIdent -> m JSIdent
gmapM :: (forall d. Data d => d -> m d) -> JSIdent -> m JSIdent
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> JSIdent -> m JSIdent
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSIdent -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> JSIdent -> u
gmapQ :: (forall d. Data d => d -> u) -> JSIdent -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSIdent -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSIdent -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSIdent -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSIdent -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSIdent -> r
gmapT :: (forall b. Data b => b -> b) -> JSIdent -> JSIdent
$cgmapT :: (forall b. Data b => b -> b) -> JSIdent -> JSIdent
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSIdent)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c JSIdent)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSIdent)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSIdent)
dataTypeOf :: JSIdent -> DataType
$cdataTypeOf :: JSIdent -> DataType
toConstr :: JSIdent -> Constr
$ctoConstr :: JSIdent -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSIdent
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSIdent
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSIdent -> c JSIdent
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSIdent -> c JSIdent
$cp1Data :: Typeable JSIdent
Data, JSIdent -> JSIdent -> Bool
(JSIdent -> JSIdent -> Bool)
-> (JSIdent -> JSIdent -> Bool) -> Eq JSIdent
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSIdent -> JSIdent -> Bool
$c/= :: JSIdent -> JSIdent -> Bool
== :: JSIdent -> JSIdent -> Bool
$c== :: JSIdent -> JSIdent -> Bool
Eq, Int -> JSIdent -> ShowS
[JSIdent] -> ShowS
JSIdent -> String
(Int -> JSIdent -> ShowS)
-> (JSIdent -> String) -> ([JSIdent] -> ShowS) -> Show JSIdent
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSIdent] -> ShowS
$cshowList :: [JSIdent] -> ShowS
show :: JSIdent -> String
$cshow :: JSIdent -> String
showsPrec :: Int -> JSIdent -> ShowS
$cshowsPrec :: Int -> JSIdent -> ShowS
Show, Typeable)

data JSArrayElement
    = JSArrayElement !JSExpression
    | JSArrayComma !JSAnnot
    deriving (Typeable JSArrayElement
DataType
Constr
Typeable JSArrayElement
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSArrayElement -> c JSArrayElement)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSArrayElement)
-> (JSArrayElement -> Constr)
-> (JSArrayElement -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSArrayElement))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSArrayElement))
-> ((forall b. Data b => b -> b)
    -> JSArrayElement -> JSArrayElement)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSArrayElement -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSArrayElement -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> JSArrayElement -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSArrayElement -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> JSArrayElement -> m JSArrayElement)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSArrayElement -> m JSArrayElement)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSArrayElement -> m JSArrayElement)
-> Data JSArrayElement
JSArrayElement -> DataType
JSArrayElement -> Constr
(forall b. Data b => b -> b) -> JSArrayElement -> JSArrayElement
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSArrayElement -> c JSArrayElement
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSArrayElement
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) -> JSArrayElement -> u
forall u. (forall d. Data d => d -> u) -> JSArrayElement -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSArrayElement -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSArrayElement -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSArrayElement -> m JSArrayElement
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSArrayElement -> m JSArrayElement
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSArrayElement
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSArrayElement -> c JSArrayElement
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSArrayElement)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSArrayElement)
$cJSArrayComma :: Constr
$cJSArrayElement :: Constr
$tJSArrayElement :: DataType
gmapMo :: (forall d. Data d => d -> m d)
-> JSArrayElement -> m JSArrayElement
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSArrayElement -> m JSArrayElement
gmapMp :: (forall d. Data d => d -> m d)
-> JSArrayElement -> m JSArrayElement
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSArrayElement -> m JSArrayElement
gmapM :: (forall d. Data d => d -> m d)
-> JSArrayElement -> m JSArrayElement
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSArrayElement -> m JSArrayElement
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSArrayElement -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> JSArrayElement -> u
gmapQ :: (forall d. Data d => d -> u) -> JSArrayElement -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSArrayElement -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSArrayElement -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSArrayElement -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSArrayElement -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSArrayElement -> r
gmapT :: (forall b. Data b => b -> b) -> JSArrayElement -> JSArrayElement
$cgmapT :: (forall b. Data b => b -> b) -> JSArrayElement -> JSArrayElement
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSArrayElement)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSArrayElement)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSArrayElement)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSArrayElement)
dataTypeOf :: JSArrayElement -> DataType
$cdataTypeOf :: JSArrayElement -> DataType
toConstr :: JSArrayElement -> Constr
$ctoConstr :: JSArrayElement -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSArrayElement
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSArrayElement
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSArrayElement -> c JSArrayElement
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSArrayElement -> c JSArrayElement
$cp1Data :: Typeable JSArrayElement
Data, JSArrayElement -> JSArrayElement -> Bool
(JSArrayElement -> JSArrayElement -> Bool)
-> (JSArrayElement -> JSArrayElement -> Bool) -> Eq JSArrayElement
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSArrayElement -> JSArrayElement -> Bool
$c/= :: JSArrayElement -> JSArrayElement -> Bool
== :: JSArrayElement -> JSArrayElement -> Bool
$c== :: JSArrayElement -> JSArrayElement -> Bool
Eq, Int -> JSArrayElement -> ShowS
[JSArrayElement] -> ShowS
JSArrayElement -> String
(Int -> JSArrayElement -> ShowS)
-> (JSArrayElement -> String)
-> ([JSArrayElement] -> ShowS)
-> Show JSArrayElement
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSArrayElement] -> ShowS
$cshowList :: [JSArrayElement] -> ShowS
show :: JSArrayElement -> String
$cshow :: JSArrayElement -> String
showsPrec :: Int -> JSArrayElement -> ShowS
$cshowsPrec :: Int -> JSArrayElement -> ShowS
Show, Typeable)

data JSCommaList a
    = JSLCons !(JSCommaList a) !JSAnnot !a -- ^head, comma, a
    | JSLOne !a -- ^ single element (no comma)
    | JSLNil
    deriving (Typeable (JSCommaList a)
DataType
Constr
Typeable (JSCommaList a)
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSCommaList a -> c (JSCommaList a))
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c (JSCommaList a))
-> (JSCommaList a -> Constr)
-> (JSCommaList a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c (JSCommaList a)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c (JSCommaList a)))
-> ((forall b. Data b => b -> b) -> JSCommaList a -> JSCommaList a)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSCommaList a -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSCommaList a -> r)
-> (forall u. (forall d. Data d => d -> u) -> JSCommaList a -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSCommaList a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> JSCommaList a -> m (JSCommaList a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSCommaList a -> m (JSCommaList a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSCommaList a -> m (JSCommaList a))
-> Data (JSCommaList a)
JSCommaList a -> DataType
JSCommaList a -> Constr
(forall d. Data d => c (t d)) -> Maybe (c (JSCommaList a))
(forall b. Data b => b -> b) -> JSCommaList a -> JSCommaList a
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSCommaList a -> c (JSCommaList a)
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (JSCommaList a)
forall a. Data a => Typeable (JSCommaList a)
forall a. Data a => JSCommaList a -> DataType
forall a. Data a => JSCommaList a -> Constr
forall a.
Data a =>
(forall b. Data b => b -> b) -> JSCommaList a -> JSCommaList a
forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> JSCommaList a -> u
forall a u.
Data a =>
(forall d. Data d => d -> u) -> JSCommaList a -> [u]
forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSCommaList a -> r
forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSCommaList a -> r
forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d)
-> JSCommaList a -> m (JSCommaList a)
forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> JSCommaList a -> m (JSCommaList a)
forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (JSCommaList a)
forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSCommaList a -> c (JSCommaList a)
forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (JSCommaList a))
forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (JSCommaList a))
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) -> JSCommaList a -> u
forall u. (forall d. Data d => d -> u) -> JSCommaList a -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSCommaList a -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSCommaList a -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSCommaList a -> m (JSCommaList a)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSCommaList a -> m (JSCommaList a)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (JSCommaList a)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSCommaList a -> c (JSCommaList a)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (JSCommaList a))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (JSCommaList a))
$cJSLNil :: Constr
$cJSLOne :: Constr
$cJSLCons :: Constr
$tJSCommaList :: DataType
gmapMo :: (forall d. Data d => d -> m d)
-> JSCommaList a -> m (JSCommaList a)
$cgmapMo :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> JSCommaList a -> m (JSCommaList a)
gmapMp :: (forall d. Data d => d -> m d)
-> JSCommaList a -> m (JSCommaList a)
$cgmapMp :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> JSCommaList a -> m (JSCommaList a)
gmapM :: (forall d. Data d => d -> m d)
-> JSCommaList a -> m (JSCommaList a)
$cgmapM :: forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d)
-> JSCommaList a -> m (JSCommaList a)
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSCommaList a -> u
$cgmapQi :: forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> JSCommaList a -> u
gmapQ :: (forall d. Data d => d -> u) -> JSCommaList a -> [u]
$cgmapQ :: forall a u.
Data a =>
(forall d. Data d => d -> u) -> JSCommaList a -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSCommaList a -> r
$cgmapQr :: forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSCommaList a -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSCommaList a -> r
$cgmapQl :: forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSCommaList a -> r
gmapT :: (forall b. Data b => b -> b) -> JSCommaList a -> JSCommaList a
$cgmapT :: forall a.
Data a =>
(forall b. Data b => b -> b) -> JSCommaList a -> JSCommaList a
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (JSCommaList a))
$cdataCast2 :: forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (JSCommaList a))
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c (JSCommaList a))
$cdataCast1 :: forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (JSCommaList a))
dataTypeOf :: JSCommaList a -> DataType
$cdataTypeOf :: forall a. Data a => JSCommaList a -> DataType
toConstr :: JSCommaList a -> Constr
$ctoConstr :: forall a. Data a => JSCommaList a -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (JSCommaList a)
$cgunfold :: forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (JSCommaList a)
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSCommaList a -> c (JSCommaList a)
$cgfoldl :: forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSCommaList a -> c (JSCommaList a)
$cp1Data :: forall a. Data a => Typeable (JSCommaList a)
Data, JSCommaList a -> JSCommaList a -> Bool
(JSCommaList a -> JSCommaList a -> Bool)
-> (JSCommaList a -> JSCommaList a -> Bool) -> Eq (JSCommaList a)
forall a. Eq a => JSCommaList a -> JSCommaList a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSCommaList a -> JSCommaList a -> Bool
$c/= :: forall a. Eq a => JSCommaList a -> JSCommaList a -> Bool
== :: JSCommaList a -> JSCommaList a -> Bool
$c== :: forall a. Eq a => JSCommaList a -> JSCommaList a -> Bool
Eq, Int -> JSCommaList a -> ShowS
[JSCommaList a] -> ShowS
JSCommaList a -> String
(Int -> JSCommaList a -> ShowS)
-> (JSCommaList a -> String)
-> ([JSCommaList a] -> ShowS)
-> Show (JSCommaList a)
forall a. Show a => Int -> JSCommaList a -> ShowS
forall a. Show a => [JSCommaList a] -> ShowS
forall a. Show a => JSCommaList a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSCommaList a] -> ShowS
$cshowList :: forall a. Show a => [JSCommaList a] -> ShowS
show :: JSCommaList a -> String
$cshow :: forall a. Show a => JSCommaList a -> String
showsPrec :: Int -> JSCommaList a -> ShowS
$cshowsPrec :: forall a. Show a => Int -> JSCommaList a -> ShowS
Show, Typeable)

data JSCommaTrailingList a
    = JSCTLComma !(JSCommaList a) !JSAnnot -- ^list, trailing comma
    | JSCTLNone !(JSCommaList a) -- ^list
    deriving (Typeable (JSCommaTrailingList a)
DataType
Constr
Typeable (JSCommaTrailingList a)
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g)
    -> JSCommaTrailingList a
    -> c (JSCommaTrailingList a))
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c (JSCommaTrailingList a))
-> (JSCommaTrailingList a -> Constr)
-> (JSCommaTrailingList a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c (JSCommaTrailingList a)))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c (JSCommaTrailingList a)))
-> ((forall b. Data b => b -> b)
    -> JSCommaTrailingList a -> JSCommaTrailingList a)
-> (forall r r'.
    (r -> r' -> r)
    -> r
    -> (forall d. Data d => d -> r')
    -> JSCommaTrailingList a
    -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r
    -> (forall d. Data d => d -> r')
    -> JSCommaTrailingList a
    -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> JSCommaTrailingList a -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSCommaTrailingList a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> JSCommaTrailingList a -> m (JSCommaTrailingList a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSCommaTrailingList a -> m (JSCommaTrailingList a))
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSCommaTrailingList a -> m (JSCommaTrailingList a))
-> Data (JSCommaTrailingList a)
JSCommaTrailingList a -> DataType
JSCommaTrailingList a -> Constr
(forall d. Data d => c (t d)) -> Maybe (c (JSCommaTrailingList a))
(forall b. Data b => b -> b)
-> JSCommaTrailingList a -> JSCommaTrailingList a
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> JSCommaTrailingList a
-> c (JSCommaTrailingList a)
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (JSCommaTrailingList a)
forall a. Data a => Typeable (JSCommaTrailingList a)
forall a. Data a => JSCommaTrailingList a -> DataType
forall a. Data a => JSCommaTrailingList a -> Constr
forall a.
Data a =>
(forall b. Data b => b -> b)
-> JSCommaTrailingList a -> JSCommaTrailingList a
forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> JSCommaTrailingList a -> u
forall a u.
Data a =>
(forall d. Data d => d -> u) -> JSCommaTrailingList a -> [u]
forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSCommaTrailingList a -> r
forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSCommaTrailingList a -> r
forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d)
-> JSCommaTrailingList a -> m (JSCommaTrailingList a)
forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> JSCommaTrailingList a -> m (JSCommaTrailingList a)
forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (JSCommaTrailingList a)
forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> JSCommaTrailingList a
-> c (JSCommaTrailingList a)
forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (JSCommaTrailingList a))
forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (JSCommaTrailingList a))
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) -> JSCommaTrailingList a -> u
forall u.
(forall d. Data d => d -> u) -> JSCommaTrailingList a -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSCommaTrailingList a -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSCommaTrailingList a -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSCommaTrailingList a -> m (JSCommaTrailingList a)
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSCommaTrailingList a -> m (JSCommaTrailingList a)
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (JSCommaTrailingList a)
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> JSCommaTrailingList a
-> c (JSCommaTrailingList a)
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c (JSCommaTrailingList a))
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (JSCommaTrailingList a))
$cJSCTLNone :: Constr
$cJSCTLComma :: Constr
$tJSCommaTrailingList :: DataType
gmapMo :: (forall d. Data d => d -> m d)
-> JSCommaTrailingList a -> m (JSCommaTrailingList a)
$cgmapMo :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> JSCommaTrailingList a -> m (JSCommaTrailingList a)
gmapMp :: (forall d. Data d => d -> m d)
-> JSCommaTrailingList a -> m (JSCommaTrailingList a)
$cgmapMp :: forall a (m :: * -> *).
(Data a, MonadPlus m) =>
(forall d. Data d => d -> m d)
-> JSCommaTrailingList a -> m (JSCommaTrailingList a)
gmapM :: (forall d. Data d => d -> m d)
-> JSCommaTrailingList a -> m (JSCommaTrailingList a)
$cgmapM :: forall a (m :: * -> *).
(Data a, Monad m) =>
(forall d. Data d => d -> m d)
-> JSCommaTrailingList a -> m (JSCommaTrailingList a)
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSCommaTrailingList a -> u
$cgmapQi :: forall a u.
Data a =>
Int -> (forall d. Data d => d -> u) -> JSCommaTrailingList a -> u
gmapQ :: (forall d. Data d => d -> u) -> JSCommaTrailingList a -> [u]
$cgmapQ :: forall a u.
Data a =>
(forall d. Data d => d -> u) -> JSCommaTrailingList a -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSCommaTrailingList a -> r
$cgmapQr :: forall a r r'.
Data a =>
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSCommaTrailingList a -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSCommaTrailingList a -> r
$cgmapQl :: forall a r r'.
Data a =>
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSCommaTrailingList a -> r
gmapT :: (forall b. Data b => b -> b)
-> JSCommaTrailingList a -> JSCommaTrailingList a
$cgmapT :: forall a.
Data a =>
(forall b. Data b => b -> b)
-> JSCommaTrailingList a -> JSCommaTrailingList a
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (JSCommaTrailingList a))
$cdataCast2 :: forall a (t :: * -> * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c (JSCommaTrailingList a))
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c (JSCommaTrailingList a))
$cdataCast1 :: forall a (t :: * -> *) (c :: * -> *).
(Data a, Typeable t) =>
(forall d. Data d => c (t d)) -> Maybe (c (JSCommaTrailingList a))
dataTypeOf :: JSCommaTrailingList a -> DataType
$cdataTypeOf :: forall a. Data a => JSCommaTrailingList a -> DataType
toConstr :: JSCommaTrailingList a -> Constr
$ctoConstr :: forall a. Data a => JSCommaTrailingList a -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (JSCommaTrailingList a)
$cgunfold :: forall a (c :: * -> *).
Data a =>
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c (JSCommaTrailingList a)
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> JSCommaTrailingList a
-> c (JSCommaTrailingList a)
$cgfoldl :: forall a (c :: * -> *).
Data a =>
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> JSCommaTrailingList a
-> c (JSCommaTrailingList a)
$cp1Data :: forall a. Data a => Typeable (JSCommaTrailingList a)
Data, JSCommaTrailingList a -> JSCommaTrailingList a -> Bool
(JSCommaTrailingList a -> JSCommaTrailingList a -> Bool)
-> (JSCommaTrailingList a -> JSCommaTrailingList a -> Bool)
-> Eq (JSCommaTrailingList a)
forall a.
Eq a =>
JSCommaTrailingList a -> JSCommaTrailingList a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSCommaTrailingList a -> JSCommaTrailingList a -> Bool
$c/= :: forall a.
Eq a =>
JSCommaTrailingList a -> JSCommaTrailingList a -> Bool
== :: JSCommaTrailingList a -> JSCommaTrailingList a -> Bool
$c== :: forall a.
Eq a =>
JSCommaTrailingList a -> JSCommaTrailingList a -> Bool
Eq, Int -> JSCommaTrailingList a -> ShowS
[JSCommaTrailingList a] -> ShowS
JSCommaTrailingList a -> String
(Int -> JSCommaTrailingList a -> ShowS)
-> (JSCommaTrailingList a -> String)
-> ([JSCommaTrailingList a] -> ShowS)
-> Show (JSCommaTrailingList a)
forall a. Show a => Int -> JSCommaTrailingList a -> ShowS
forall a. Show a => [JSCommaTrailingList a] -> ShowS
forall a. Show a => JSCommaTrailingList a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSCommaTrailingList a] -> ShowS
$cshowList :: forall a. Show a => [JSCommaTrailingList a] -> ShowS
show :: JSCommaTrailingList a -> String
$cshow :: forall a. Show a => JSCommaTrailingList a -> String
showsPrec :: Int -> JSCommaTrailingList a -> ShowS
$cshowsPrec :: forall a. Show a => Int -> JSCommaTrailingList a -> ShowS
Show, Typeable)

data JSTemplatePart
    = JSTemplatePart !JSExpression !JSAnnot !String -- ^expr, rb, suffix
    deriving (Typeable JSTemplatePart
DataType
Constr
Typeable JSTemplatePart
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSTemplatePart -> c JSTemplatePart)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSTemplatePart)
-> (JSTemplatePart -> Constr)
-> (JSTemplatePart -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSTemplatePart))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSTemplatePart))
-> ((forall b. Data b => b -> b)
    -> JSTemplatePart -> JSTemplatePart)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSTemplatePart -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSTemplatePart -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> JSTemplatePart -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSTemplatePart -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> JSTemplatePart -> m JSTemplatePart)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSTemplatePart -> m JSTemplatePart)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSTemplatePart -> m JSTemplatePart)
-> Data JSTemplatePart
JSTemplatePart -> DataType
JSTemplatePart -> Constr
(forall b. Data b => b -> b) -> JSTemplatePart -> JSTemplatePart
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSTemplatePart -> c JSTemplatePart
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSTemplatePart
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) -> JSTemplatePart -> u
forall u. (forall d. Data d => d -> u) -> JSTemplatePart -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSTemplatePart -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSTemplatePart -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSTemplatePart -> m JSTemplatePart
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSTemplatePart -> m JSTemplatePart
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSTemplatePart
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSTemplatePart -> c JSTemplatePart
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSTemplatePart)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSTemplatePart)
$cJSTemplatePart :: Constr
$tJSTemplatePart :: DataType
gmapMo :: (forall d. Data d => d -> m d)
-> JSTemplatePart -> m JSTemplatePart
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSTemplatePart -> m JSTemplatePart
gmapMp :: (forall d. Data d => d -> m d)
-> JSTemplatePart -> m JSTemplatePart
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSTemplatePart -> m JSTemplatePart
gmapM :: (forall d. Data d => d -> m d)
-> JSTemplatePart -> m JSTemplatePart
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSTemplatePart -> m JSTemplatePart
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSTemplatePart -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> JSTemplatePart -> u
gmapQ :: (forall d. Data d => d -> u) -> JSTemplatePart -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSTemplatePart -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSTemplatePart -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSTemplatePart -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSTemplatePart -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSTemplatePart -> r
gmapT :: (forall b. Data b => b -> b) -> JSTemplatePart -> JSTemplatePart
$cgmapT :: (forall b. Data b => b -> b) -> JSTemplatePart -> JSTemplatePart
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSTemplatePart)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSTemplatePart)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSTemplatePart)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSTemplatePart)
dataTypeOf :: JSTemplatePart -> DataType
$cdataTypeOf :: JSTemplatePart -> DataType
toConstr :: JSTemplatePart -> Constr
$ctoConstr :: JSTemplatePart -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSTemplatePart
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSTemplatePart
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSTemplatePart -> c JSTemplatePart
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSTemplatePart -> c JSTemplatePart
$cp1Data :: Typeable JSTemplatePart
Data, JSTemplatePart -> JSTemplatePart -> Bool
(JSTemplatePart -> JSTemplatePart -> Bool)
-> (JSTemplatePart -> JSTemplatePart -> Bool) -> Eq JSTemplatePart
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSTemplatePart -> JSTemplatePart -> Bool
$c/= :: JSTemplatePart -> JSTemplatePart -> Bool
== :: JSTemplatePart -> JSTemplatePart -> Bool
$c== :: JSTemplatePart -> JSTemplatePart -> Bool
Eq, Int -> JSTemplatePart -> ShowS
[JSTemplatePart] -> ShowS
JSTemplatePart -> String
(Int -> JSTemplatePart -> ShowS)
-> (JSTemplatePart -> String)
-> ([JSTemplatePart] -> ShowS)
-> Show JSTemplatePart
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSTemplatePart] -> ShowS
$cshowList :: [JSTemplatePart] -> ShowS
show :: JSTemplatePart -> String
$cshow :: JSTemplatePart -> String
showsPrec :: Int -> JSTemplatePart -> ShowS
$cshowsPrec :: Int -> JSTemplatePart -> ShowS
Show, Typeable)

data JSClassHeritage
    = JSExtends !JSAnnot !JSExpression
    | JSExtendsNone
    deriving (Typeable JSClassHeritage
DataType
Constr
Typeable JSClassHeritage
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSClassHeritage -> c JSClassHeritage)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSClassHeritage)
-> (JSClassHeritage -> Constr)
-> (JSClassHeritage -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSClassHeritage))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSClassHeritage))
-> ((forall b. Data b => b -> b)
    -> JSClassHeritage -> JSClassHeritage)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSClassHeritage -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSClassHeritage -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> JSClassHeritage -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSClassHeritage -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> JSClassHeritage -> m JSClassHeritage)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSClassHeritage -> m JSClassHeritage)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSClassHeritage -> m JSClassHeritage)
-> Data JSClassHeritage
JSClassHeritage -> DataType
JSClassHeritage -> Constr
(forall b. Data b => b -> b) -> JSClassHeritage -> JSClassHeritage
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSClassHeritage -> c JSClassHeritage
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSClassHeritage
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) -> JSClassHeritage -> u
forall u. (forall d. Data d => d -> u) -> JSClassHeritage -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSClassHeritage -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSClassHeritage -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSClassHeritage -> m JSClassHeritage
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSClassHeritage -> m JSClassHeritage
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSClassHeritage
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSClassHeritage -> c JSClassHeritage
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSClassHeritage)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSClassHeritage)
$cJSExtendsNone :: Constr
$cJSExtends :: Constr
$tJSClassHeritage :: DataType
gmapMo :: (forall d. Data d => d -> m d)
-> JSClassHeritage -> m JSClassHeritage
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSClassHeritage -> m JSClassHeritage
gmapMp :: (forall d. Data d => d -> m d)
-> JSClassHeritage -> m JSClassHeritage
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSClassHeritage -> m JSClassHeritage
gmapM :: (forall d. Data d => d -> m d)
-> JSClassHeritage -> m JSClassHeritage
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSClassHeritage -> m JSClassHeritage
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSClassHeritage -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> JSClassHeritage -> u
gmapQ :: (forall d. Data d => d -> u) -> JSClassHeritage -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSClassHeritage -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSClassHeritage -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSClassHeritage -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSClassHeritage -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSClassHeritage -> r
gmapT :: (forall b. Data b => b -> b) -> JSClassHeritage -> JSClassHeritage
$cgmapT :: (forall b. Data b => b -> b) -> JSClassHeritage -> JSClassHeritage
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSClassHeritage)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSClassHeritage)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSClassHeritage)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSClassHeritage)
dataTypeOf :: JSClassHeritage -> DataType
$cdataTypeOf :: JSClassHeritage -> DataType
toConstr :: JSClassHeritage -> Constr
$ctoConstr :: JSClassHeritage -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSClassHeritage
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSClassHeritage
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSClassHeritage -> c JSClassHeritage
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSClassHeritage -> c JSClassHeritage
$cp1Data :: Typeable JSClassHeritage
Data, JSClassHeritage -> JSClassHeritage -> Bool
(JSClassHeritage -> JSClassHeritage -> Bool)
-> (JSClassHeritage -> JSClassHeritage -> Bool)
-> Eq JSClassHeritage
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSClassHeritage -> JSClassHeritage -> Bool
$c/= :: JSClassHeritage -> JSClassHeritage -> Bool
== :: JSClassHeritage -> JSClassHeritage -> Bool
$c== :: JSClassHeritage -> JSClassHeritage -> Bool
Eq, Int -> JSClassHeritage -> ShowS
[JSClassHeritage] -> ShowS
JSClassHeritage -> String
(Int -> JSClassHeritage -> ShowS)
-> (JSClassHeritage -> String)
-> ([JSClassHeritage] -> ShowS)
-> Show JSClassHeritage
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSClassHeritage] -> ShowS
$cshowList :: [JSClassHeritage] -> ShowS
show :: JSClassHeritage -> String
$cshow :: JSClassHeritage -> String
showsPrec :: Int -> JSClassHeritage -> ShowS
$cshowsPrec :: Int -> JSClassHeritage -> ShowS
Show, Typeable)

data JSClassElement
    = JSClassInstanceMethod !JSMethodDefinition
    | JSClassStaticMethod !JSAnnot !JSMethodDefinition
    | JSClassSemi !JSAnnot
    deriving (Typeable JSClassElement
DataType
Constr
Typeable JSClassElement
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> JSClassElement -> c JSClassElement)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c JSClassElement)
-> (JSClassElement -> Constr)
-> (JSClassElement -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c JSClassElement))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c JSClassElement))
-> ((forall b. Data b => b -> b)
    -> JSClassElement -> JSClassElement)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> JSClassElement -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> JSClassElement -> r)
-> (forall u.
    (forall d. Data d => d -> u) -> JSClassElement -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> JSClassElement -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d)
    -> JSClassElement -> m JSClassElement)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSClassElement -> m JSClassElement)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d)
    -> JSClassElement -> m JSClassElement)
-> Data JSClassElement
JSClassElement -> DataType
JSClassElement -> Constr
(forall b. Data b => b -> b) -> JSClassElement -> JSClassElement
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSClassElement -> c JSClassElement
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSClassElement
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) -> JSClassElement -> u
forall u. (forall d. Data d => d -> u) -> JSClassElement -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSClassElement -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSClassElement -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSClassElement -> m JSClassElement
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSClassElement -> m JSClassElement
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSClassElement
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSClassElement -> c JSClassElement
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSClassElement)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSClassElement)
$cJSClassSemi :: Constr
$cJSClassStaticMethod :: Constr
$cJSClassInstanceMethod :: Constr
$tJSClassElement :: DataType
gmapMo :: (forall d. Data d => d -> m d)
-> JSClassElement -> m JSClassElement
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSClassElement -> m JSClassElement
gmapMp :: (forall d. Data d => d -> m d)
-> JSClassElement -> m JSClassElement
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> JSClassElement -> m JSClassElement
gmapM :: (forall d. Data d => d -> m d)
-> JSClassElement -> m JSClassElement
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> JSClassElement -> m JSClassElement
gmapQi :: Int -> (forall d. Data d => d -> u) -> JSClassElement -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> JSClassElement -> u
gmapQ :: (forall d. Data d => d -> u) -> JSClassElement -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> JSClassElement -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSClassElement -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> JSClassElement -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSClassElement -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> JSClassElement -> r
gmapT :: (forall b. Data b => b -> b) -> JSClassElement -> JSClassElement
$cgmapT :: (forall b. Data b => b -> b) -> JSClassElement -> JSClassElement
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSClassElement)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c JSClassElement)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c JSClassElement)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c JSClassElement)
dataTypeOf :: JSClassElement -> DataType
$cdataTypeOf :: JSClassElement -> DataType
toConstr :: JSClassElement -> Constr
$ctoConstr :: JSClassElement -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSClassElement
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c JSClassElement
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSClassElement -> c JSClassElement
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> JSClassElement -> c JSClassElement
$cp1Data :: Typeable JSClassElement
Data, JSClassElement -> JSClassElement -> Bool
(JSClassElement -> JSClassElement -> Bool)
-> (JSClassElement -> JSClassElement -> Bool) -> Eq JSClassElement
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: JSClassElement -> JSClassElement -> Bool
$c/= :: JSClassElement -> JSClassElement -> Bool
== :: JSClassElement -> JSClassElement -> Bool
$c== :: JSClassElement -> JSClassElement -> Bool
Eq, Int -> JSClassElement -> ShowS
[JSClassElement] -> ShowS
JSClassElement -> String
(Int -> JSClassElement -> ShowS)
-> (JSClassElement -> String)
-> ([JSClassElement] -> ShowS)
-> Show JSClassElement
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [JSClassElement] -> ShowS
$cshowList :: [JSClassElement] -> ShowS
show :: JSClassElement -> String
$cshow :: JSClassElement -> String
showsPrec :: Int -> JSClassElement -> ShowS
$cshowsPrec :: Int -> JSClassElement -> ShowS
Show, Typeable)

-- -----------------------------------------------------------------------------
-- | Show the AST elements stripped of their JSAnnot data.

-- Strip out the location info
showStripped :: JSAST -> String
showStripped :: JSAST -> String
showStripped (JSAstProgram [JSStatement]
xs JSAnnot
_) = String
"JSAstProgram " String -> ShowS
forall a. [a] -> [a] -> [a]
++ [JSStatement] -> String
forall a. ShowStripped a => a -> String
ss [JSStatement]
xs
showStripped (JSAstModule [JSModuleItem]
xs JSAnnot
_) = String
"JSAstModule " String -> ShowS
forall a. [a] -> [a] -> [a]
++ [JSModuleItem] -> String
forall a. ShowStripped a => a -> String
ss [JSModuleItem]
xs
showStripped (JSAstStatement JSStatement
s JSAnnot
_) = String
"JSAstStatement (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSStatement -> String
forall a. ShowStripped a => a -> String
ss JSStatement
s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
showStripped (JSAstExpression JSExpression
e JSAnnot
_) = String
"JSAstExpression (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
e String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
showStripped (JSAstLiteral JSExpression
s JSAnnot
_)  = String
"JSAstLiteral (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"


class ShowStripped a where
    ss :: a -> String

instance ShowStripped JSStatement where
    ss :: JSStatement -> String
ss (JSStatementBlock JSAnnot
_ [JSStatement]
xs JSAnnot
_ JSSemi
_) = String
"JSStatementBlock " String -> ShowS
forall a. [a] -> [a] -> [a]
++ [JSStatement] -> String
forall a. ShowStripped a => a -> String
ss [JSStatement]
xs
    ss (JSBreak JSAnnot
_ JSIdent
JSIdentNone JSSemi
s) = String
"JSBreak" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
commaIf (JSSemi -> String
forall a. ShowStripped a => a -> String
ss JSSemi
s)
    ss (JSBreak JSAnnot
_ (JSIdentName JSAnnot
_ String
n) JSSemi
s) = String
"JSBreak " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
singleQuote String
n String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
commaIf (JSSemi -> String
forall a. ShowStripped a => a -> String
ss JSSemi
s)
    ss (JSClass JSAnnot
_ JSIdent
n JSClassHeritage
h JSAnnot
_lb [JSClassElement]
xs JSAnnot
_rb JSSemi
_) = String
"JSClass " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSIdent -> String
ssid JSIdent
n String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSClassHeritage -> String
forall a. ShowStripped a => a -> String
ss JSClassHeritage
h String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") " String -> ShowS
forall a. [a] -> [a] -> [a]
++ [JSClassElement] -> String
forall a. ShowStripped a => a -> String
ss [JSClassElement]
xs
    ss (JSContinue JSAnnot
_ JSIdent
JSIdentNone JSSemi
s) = String
"JSContinue" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
commaIf (JSSemi -> String
forall a. ShowStripped a => a -> String
ss JSSemi
s)
    ss (JSContinue JSAnnot
_ (JSIdentName JSAnnot
_ String
n) JSSemi
s) = String
"JSContinue " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
singleQuote String
n String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
commaIf (JSSemi -> String
forall a. ShowStripped a => a -> String
ss JSSemi
s)
    ss (JSConstant JSAnnot
_ JSCommaList JSExpression
xs JSSemi
_as) = String
"JSConstant " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
xs
    ss (JSDoWhile JSAnnot
_d JSStatement
x1 JSAnnot
_w JSAnnot
_lb JSExpression
x2 JSAnnot
_rb JSSemi
x3) = String
"JSDoWhile (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSStatement -> String
forall a. ShowStripped a => a -> String
ss JSStatement
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSSemi -> String
forall a. ShowStripped a => a -> String
ss JSSemi
x3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSFor JSAnnot
_ JSAnnot
_lb JSCommaList JSExpression
x1s JSAnnot
_s1 JSCommaList JSExpression
x2s JSAnnot
_s2 JSCommaList JSExpression
x3s JSAnnot
_rb JSStatement
x4) = String
"JSFor " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
x1s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
x2s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
x3s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSStatement -> String
forall a. ShowStripped a => a -> String
ss JSStatement
x4 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSForIn JSAnnot
_ JSAnnot
_lb JSExpression
x1s JSBinOp
_i JSExpression
x2 JSAnnot
_rb JSStatement
x3) = String
"JSForIn " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x1s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSStatement -> String
forall a. ShowStripped a => a -> String
ss JSStatement
x3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSForVar JSAnnot
_ JSAnnot
_lb JSAnnot
_v JSCommaList JSExpression
x1s JSAnnot
_s1 JSCommaList JSExpression
x2s JSAnnot
_s2 JSCommaList JSExpression
x3s JSAnnot
_rb JSStatement
x4) = String
"JSForVar " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
x1s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
x2s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
x3s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSStatement -> String
forall a. ShowStripped a => a -> String
ss JSStatement
x4 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSForVarIn JSAnnot
_ JSAnnot
_lb JSAnnot
_v JSExpression
x1 JSBinOp
_i JSExpression
x2 JSAnnot
_rb JSStatement
x3) = String
"JSForVarIn (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSStatement -> String
forall a. ShowStripped a => a -> String
ss JSStatement
x3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSForLet JSAnnot
_ JSAnnot
_lb JSAnnot
_v JSCommaList JSExpression
x1s JSAnnot
_s1 JSCommaList JSExpression
x2s JSAnnot
_s2 JSCommaList JSExpression
x3s JSAnnot
_rb JSStatement
x4) = String
"JSForLet " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
x1s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
x2s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
x3s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSStatement -> String
forall a. ShowStripped a => a -> String
ss JSStatement
x4 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSForLetIn JSAnnot
_ JSAnnot
_lb JSAnnot
_v JSExpression
x1 JSBinOp
_i JSExpression
x2 JSAnnot
_rb JSStatement
x3) = String
"JSForLetIn (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSStatement -> String
forall a. ShowStripped a => a -> String
ss JSStatement
x3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSForLetOf JSAnnot
_ JSAnnot
_lb JSAnnot
_v JSExpression
x1 JSBinOp
_i JSExpression
x2 JSAnnot
_rb JSStatement
x3) = String
"JSForLetOf (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSStatement -> String
forall a. ShowStripped a => a -> String
ss JSStatement
x3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSForConst JSAnnot
_ JSAnnot
_lb JSAnnot
_v JSCommaList JSExpression
x1s JSAnnot
_s1 JSCommaList JSExpression
x2s JSAnnot
_s2 JSCommaList JSExpression
x3s JSAnnot
_rb JSStatement
x4) = String
"JSForConst " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
x1s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
x2s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
x3s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSStatement -> String
forall a. ShowStripped a => a -> String
ss JSStatement
x4 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSForConstIn JSAnnot
_ JSAnnot
_lb JSAnnot
_v JSExpression
x1 JSBinOp
_i JSExpression
x2 JSAnnot
_rb JSStatement
x3) = String
"JSForConstIn (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSStatement -> String
forall a. ShowStripped a => a -> String
ss JSStatement
x3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSForConstOf JSAnnot
_ JSAnnot
_lb JSAnnot
_v JSExpression
x1 JSBinOp
_i JSExpression
x2 JSAnnot
_rb JSStatement
x3) = String
"JSForConstOf (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSStatement -> String
forall a. ShowStripped a => a -> String
ss JSStatement
x3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSForOf JSAnnot
_ JSAnnot
_lb JSExpression
x1s JSBinOp
_i JSExpression
x2 JSAnnot
_rb JSStatement
x3) = String
"JSForOf " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x1s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSStatement -> String
forall a. ShowStripped a => a -> String
ss JSStatement
x3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSForVarOf JSAnnot
_ JSAnnot
_lb JSAnnot
_v JSExpression
x1 JSBinOp
_i JSExpression
x2 JSAnnot
_rb JSStatement
x3) = String
"JSForVarOf (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSStatement -> String
forall a. ShowStripped a => a -> String
ss JSStatement
x3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSFunction JSAnnot
_ JSIdent
n JSAnnot
_lb JSCommaList JSExpression
pl JSAnnot
_rb JSBlock
x3 JSSemi
_) = String
"JSFunction " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSIdent -> String
ssid JSIdent
n String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
pl String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSBlock -> String
forall a. ShowStripped a => a -> String
ss JSBlock
x3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSAsyncFunction JSAnnot
_ JSAnnot
_ JSIdent
n JSAnnot
_lb JSCommaList JSExpression
pl JSAnnot
_rb JSBlock
x3 JSSemi
_) = String
"JSAsyncFunction " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSIdent -> String
ssid JSIdent
n String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
pl String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSBlock -> String
forall a. ShowStripped a => a -> String
ss JSBlock
x3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSGenerator JSAnnot
_ JSAnnot
_ JSIdent
n JSAnnot
_lb JSCommaList JSExpression
pl JSAnnot
_rb JSBlock
x3 JSSemi
_) = String
"JSGenerator " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSIdent -> String
ssid JSIdent
n String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
pl String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSBlock -> String
forall a. ShowStripped a => a -> String
ss JSBlock
x3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSIf JSAnnot
_ JSAnnot
_lb JSExpression
x1 JSAnnot
_rb JSStatement
x2) = String
"JSIf (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSStatement -> String
forall a. ShowStripped a => a -> String
ss JSStatement
x2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSIfElse JSAnnot
_ JSAnnot
_lb JSExpression
x1 JSAnnot
_rb JSStatement
x2 JSAnnot
_e JSStatement
x3) = String
"JSIfElse (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSStatement -> String
forall a. ShowStripped a => a -> String
ss JSStatement
x2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSStatement -> String
forall a. ShowStripped a => a -> String
ss JSStatement
x3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSLabelled JSIdent
x1 JSAnnot
_c JSStatement
x2) = String
"JSLabelled (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSIdent -> String
forall a. ShowStripped a => a -> String
ss JSIdent
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSStatement -> String
forall a. ShowStripped a => a -> String
ss JSStatement
x2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSLet JSAnnot
_ JSCommaList JSExpression
xs JSSemi
_as) = String
"JSLet " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
xs
    ss (JSEmptyStatement JSAnnot
_) = String
"JSEmptyStatement"
    ss (JSExpressionStatement JSExpression
l JSSemi
s) = JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
l String -> ShowS
forall a. [a] -> [a] -> [a]
++ (let x :: String
x = JSSemi -> String
forall a. ShowStripped a => a -> String
ss JSSemi
s in if Bool -> Bool
not (String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
x) then Char
','Char -> ShowS
forall a. a -> [a] -> [a]
:String
x else String
"")
    ss (JSAssignStatement JSExpression
lhs JSAssignOp
op JSExpression
rhs JSSemi
s) =String
"JSOpAssign (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSAssignOp -> String
forall a. ShowStripped a => a -> String
ss JSAssignOp
op String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
lhs String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
rhs String -> ShowS
forall a. [a] -> [a] -> [a]
++ (let x :: String
x = JSSemi -> String
forall a. ShowStripped a => a -> String
ss JSSemi
s in if Bool -> Bool
not (String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
x) then String
"),"String -> ShowS
forall a. [a] -> [a] -> [a]
++String
x else String
")")
    ss (JSMethodCall JSExpression
e JSAnnot
_ JSCommaList JSExpression
a JSAnnot
_ JSSemi
s) = String
"JSMethodCall (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
e String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
",JSArguments " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
a String -> ShowS
forall a. [a] -> [a] -> [a]
++ (let x :: String
x = JSSemi -> String
forall a. ShowStripped a => a -> String
ss JSSemi
s in if Bool -> Bool
not (String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null String
x) then String
"),"String -> ShowS
forall a. [a] -> [a] -> [a]
++String
x else String
")")
    ss (JSReturn JSAnnot
_ (Just JSExpression
me) JSSemi
s) = String
"JSReturn " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
me String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSSemi -> String
forall a. ShowStripped a => a -> String
ss JSSemi
s
    ss (JSReturn JSAnnot
_ Maybe JSExpression
Nothing JSSemi
s) = String
"JSReturn " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSSemi -> String
forall a. ShowStripped a => a -> String
ss JSSemi
s
    ss (JSSwitch JSAnnot
_ JSAnnot
_lp JSExpression
x JSAnnot
_rp JSAnnot
_lb [JSSwitchParts]
x2 JSAnnot
_rb JSSemi
_) = String
"JSSwitch (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") " String -> ShowS
forall a. [a] -> [a] -> [a]
++ [JSSwitchParts] -> String
forall a. ShowStripped a => a -> String
ss [JSSwitchParts]
x2
    ss (JSThrow JSAnnot
_ JSExpression
x JSSemi
_) = String
"JSThrow (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSTry JSAnnot
_ JSBlock
xt1 [JSTryCatch]
xtc JSTryFinally
xtf) = String
"JSTry (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSBlock -> String
forall a. ShowStripped a => a -> String
ss JSBlock
xt1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ [JSTryCatch] -> String
forall a. ShowStripped a => a -> String
ss [JSTryCatch]
xtc String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSTryFinally -> String
forall a. ShowStripped a => a -> String
ss JSTryFinally
xtf String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSVariable JSAnnot
_ JSCommaList JSExpression
xs JSSemi
_as) = String
"JSVariable " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
xs
    ss (JSWhile JSAnnot
_ JSAnnot
_lb JSExpression
x1 JSAnnot
_rb JSStatement
x2) = String
"JSWhile (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSStatement -> String
forall a. ShowStripped a => a -> String
ss JSStatement
x2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSWith JSAnnot
_ JSAnnot
_lb JSExpression
x1 JSAnnot
_rb JSStatement
x JSSemi
_) = String
"JSWith (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSStatement -> String
forall a. ShowStripped a => a -> String
ss JSStatement
x String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"

instance ShowStripped JSExpression where
    ss :: JSExpression -> String
ss (JSArrayLiteral JSAnnot
_lb [JSArrayElement]
xs JSAnnot
_rb) = String
"JSArrayLiteral " String -> ShowS
forall a. [a] -> [a] -> [a]
++ [JSArrayElement] -> String
forall a. ShowStripped a => a -> String
ss [JSArrayElement]
xs
    ss (JSAssignExpression JSExpression
lhs JSAssignOp
op JSExpression
rhs) = String
"JSOpAssign (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSAssignOp -> String
forall a. ShowStripped a => a -> String
ss JSAssignOp
op String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
lhs String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
rhs String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSAwaitExpression JSAnnot
_ JSExpression
e) = String
"JSAwaitExpresson " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
e
    ss (JSCallExpression JSExpression
ex JSAnnot
_ JSCommaList JSExpression
xs JSAnnot
_) = String
"JSCallExpression ("String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
ex String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
",JSArguments " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
xs String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSCallExpressionDot JSExpression
ex JSAnnot
_os JSExpression
xs) = String
"JSCallExpressionDot (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
ex String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
xs String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSCallExpressionSquare JSExpression
ex JSAnnot
_os JSExpression
xs JSAnnot
_cs) = String
"JSCallExpressionSquare (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
ex String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
xs String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSClassExpression JSAnnot
_ JSIdent
n JSClassHeritage
h JSAnnot
_lb [JSClassElement]
xs JSAnnot
_rb) = String
"JSClassExpression " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSIdent -> String
ssid JSIdent
n String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSClassHeritage -> String
forall a. ShowStripped a => a -> String
ss JSClassHeritage
h String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") " String -> ShowS
forall a. [a] -> [a] -> [a]
++ [JSClassElement] -> String
forall a. ShowStripped a => a -> String
ss [JSClassElement]
xs
    ss (JSDecimal JSAnnot
_ String
s) = String
"JSDecimal " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
singleQuote String
s
    ss (JSCommaExpression JSExpression
l JSAnnot
_ JSExpression
r) = String
"JSExpression [" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
l String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
r String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"]"
    ss (JSExpressionBinary JSExpression
x2 JSBinOp
op JSExpression
x3) = String
"JSExpressionBinary (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSBinOp -> String
forall a. ShowStripped a => a -> String
ss JSBinOp
op String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSExpressionParen JSAnnot
_lp JSExpression
x JSAnnot
_rp) = String
"JSExpressionParen (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSExpressionPostfix JSExpression
xs JSUnaryOp
op) = String
"JSExpressionPostfix (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSUnaryOp -> String
forall a. ShowStripped a => a -> String
ss JSUnaryOp
op String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
xs String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSExpressionTernary JSExpression
x1 JSAnnot
_q JSExpression
x2 JSAnnot
_c JSExpression
x3) = String
"JSExpressionTernary (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSArrowExpression JSArrowParameterList
ps JSAnnot
_ JSStatement
e) = String
"JSArrowExpression (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSArrowParameterList -> String
forall a. ShowStripped a => a -> String
ss JSArrowParameterList
ps String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") => " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSStatement -> String
forall a. ShowStripped a => a -> String
ss JSStatement
e
    ss (JSFunctionExpression JSAnnot
_ JSIdent
n JSAnnot
_lb JSCommaList JSExpression
pl JSAnnot
_rb JSBlock
x3) = String
"JSFunctionExpression " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSIdent -> String
ssid JSIdent
n String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
pl String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSBlock -> String
forall a. ShowStripped a => a -> String
ss JSBlock
x3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSGeneratorExpression JSAnnot
_ JSAnnot
_ JSIdent
n JSAnnot
_lb JSCommaList JSExpression
pl JSAnnot
_rb JSBlock
x3) = String
"JSGeneratorExpression " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSIdent -> String
ssid JSIdent
n String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
pl String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSBlock -> String
forall a. ShowStripped a => a -> String
ss JSBlock
x3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSHexInteger JSAnnot
_ String
s) = String
"JSHexInteger " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
singleQuote String
s
    ss (JSOctal JSAnnot
_ String
s) = String
"JSOctal " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
singleQuote String
s
    ss (JSIdentifier JSAnnot
_ String
s) = String
"JSIdentifier " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
singleQuote String
s
    ss (JSLiteral JSAnnot
_ []) = String
"JSLiteral ''"
    ss (JSLiteral JSAnnot
_ String
s) = String
"JSLiteral " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
singleQuote String
s
    ss (JSMemberDot JSExpression
x1s JSAnnot
_d JSExpression
x2 ) = String
"JSMemberDot (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x1s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSMemberExpression JSExpression
e JSAnnot
_ JSCommaList JSExpression
a JSAnnot
_) = String
"JSMemberExpression (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
e String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
",JSArguments " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
a String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSMemberNew JSAnnot
_a JSExpression
n JSAnnot
_ JSCommaList JSExpression
s JSAnnot
_) = String
"JSMemberNew (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
n String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
",JSArguments " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSMemberSquare JSExpression
x1s JSAnnot
_lb JSExpression
x2 JSAnnot
_rb) = String
"JSMemberSquare (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x1s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSNewExpression JSAnnot
_n JSExpression
e) = String
"JSNewExpression " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
e
    ss (JSObjectLiteral JSAnnot
_lb JSObjectPropertyList
xs JSAnnot
_rb) = String
"JSObjectLiteral " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSObjectPropertyList -> String
forall a. ShowStripped a => a -> String
ss JSObjectPropertyList
xs
    ss (JSRegEx JSAnnot
_ String
s) = String
"JSRegEx " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
singleQuote String
s
    ss (JSStringLiteral JSAnnot
_ String
s) = String
"JSStringLiteral " String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
s
    ss (JSUnaryExpression JSUnaryOp
op JSExpression
x) = String
"JSUnaryExpression (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSUnaryOp -> String
forall a. ShowStripped a => a -> String
ss JSUnaryOp
op String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSVarInitExpression JSExpression
x1 JSVarInitializer
x2) = String
"JSVarInitExpression (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSVarInitializer -> String
forall a. ShowStripped a => a -> String
ss JSVarInitializer
x2
    ss (JSYieldExpression JSAnnot
_ Maybe JSExpression
Nothing) = String
"JSYieldExpression ()"
    ss (JSYieldExpression JSAnnot
_ (Just JSExpression
x)) = String
"JSYieldExpression (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSYieldFromExpression JSAnnot
_ JSAnnot
_ JSExpression
x) = String
"JSYieldFromExpression (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSSpreadExpression JSAnnot
_ JSExpression
x1) = String
"JSSpreadExpression (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSTemplateLiteral Maybe JSExpression
Nothing JSAnnot
_ String
s [JSTemplatePart]
ps) = String
"JSTemplateLiteral (()," String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
singleQuote String
s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ [JSTemplatePart] -> String
forall a. ShowStripped a => a -> String
ss [JSTemplatePart]
ps String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSTemplateLiteral (Just JSExpression
t) JSAnnot
_ String
s [JSTemplatePart]
ps) = String
"JSTemplateLiteral ((" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
t String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")," String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
singleQuote String
s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ [JSTemplatePart] -> String
forall a. ShowStripped a => a -> String
ss [JSTemplatePart]
ps String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"

instance ShowStripped JSArrowParameterList where
    ss :: JSArrowParameterList -> String
ss (JSUnparenthesizedArrowParameter JSIdent
x) = JSIdent -> String
forall a. ShowStripped a => a -> String
ss JSIdent
x
    ss (JSParenthesizedArrowParameterList JSAnnot
_ JSCommaList JSExpression
xs JSAnnot
_) = JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
xs

instance ShowStripped JSModuleItem where
    ss :: JSModuleItem -> String
ss (JSModuleExportDeclaration JSAnnot
_ JSExportDeclaration
x1) = String
"JSModuleExportDeclaration (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExportDeclaration -> String
forall a. ShowStripped a => a -> String
ss JSExportDeclaration
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSModuleImportDeclaration JSAnnot
_ JSImportDeclaration
x1) = String
"JSModuleImportDeclaration (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSImportDeclaration -> String
forall a. ShowStripped a => a -> String
ss JSImportDeclaration
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSModuleStatementListItem JSStatement
x1) = String
"JSModuleStatementListItem (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSStatement -> String
forall a. ShowStripped a => a -> String
ss JSStatement
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"

instance ShowStripped JSImportDeclaration where
    ss :: JSImportDeclaration -> String
ss (JSImportDeclaration JSImportClause
imp JSFromClause
from JSSemi
_) = String
"JSImportDeclaration (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSImportClause -> String
forall a. ShowStripped a => a -> String
ss JSImportClause
imp String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSFromClause -> String
forall a. ShowStripped a => a -> String
ss JSFromClause
from String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSImportDeclarationBare JSAnnot
_ String
m JSSemi
_) = String
"JSImportDeclarationBare (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
singleQuote String
m String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"

instance ShowStripped JSImportClause where
    ss :: JSImportClause -> String
ss (JSImportClauseDefault JSIdent
x) = String
"JSImportClauseDefault (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSIdent -> String
forall a. ShowStripped a => a -> String
ss JSIdent
x String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSImportClauseNameSpace JSImportNameSpace
x) = String
"JSImportClauseNameSpace (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSImportNameSpace -> String
forall a. ShowStripped a => a -> String
ss JSImportNameSpace
x String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSImportClauseNamed JSImportsNamed
x) = String
"JSImportClauseNameSpace (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSImportsNamed -> String
forall a. ShowStripped a => a -> String
ss JSImportsNamed
x String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSImportClauseDefaultNameSpace JSIdent
x1 JSAnnot
_ JSImportNameSpace
x2) = String
"JSImportClauseDefaultNameSpace (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSIdent -> String
forall a. ShowStripped a => a -> String
ss JSIdent
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSImportNameSpace -> String
forall a. ShowStripped a => a -> String
ss JSImportNameSpace
x2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSImportClauseDefaultNamed JSIdent
x1 JSAnnot
_ JSImportsNamed
x2) = String
"JSImportClauseDefaultNamed (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSIdent -> String
forall a. ShowStripped a => a -> String
ss JSIdent
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSImportsNamed -> String
forall a. ShowStripped a => a -> String
ss JSImportsNamed
x2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"

instance ShowStripped JSFromClause where
    ss :: JSFromClause -> String
ss (JSFromClause JSAnnot
_ JSAnnot
_ String
m) = String
"JSFromClause " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
singleQuote String
m

instance ShowStripped JSImportNameSpace where
    ss :: JSImportNameSpace -> String
ss (JSImportNameSpace JSBinOp
_ JSAnnot
_ JSIdent
x) = String
"JSImportNameSpace (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSIdent -> String
forall a. ShowStripped a => a -> String
ss JSIdent
x String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"

instance ShowStripped JSImportsNamed where
    ss :: JSImportsNamed -> String
ss (JSImportsNamed JSAnnot
_ JSCommaList JSImportSpecifier
xs JSAnnot
_) = String
"JSImportsNamed (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSImportSpecifier -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSImportSpecifier
xs String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"

instance ShowStripped JSImportSpecifier where
    ss :: JSImportSpecifier -> String
ss (JSImportSpecifier JSIdent
x1) = String
"JSImportSpecifier (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSIdent -> String
forall a. ShowStripped a => a -> String
ss JSIdent
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSImportSpecifierAs JSIdent
x1 JSAnnot
_ JSIdent
x2) = String
"JSImportSpecifierAs (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSIdent -> String
forall a. ShowStripped a => a -> String
ss JSIdent
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSIdent -> String
forall a. ShowStripped a => a -> String
ss JSIdent
x2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"

instance ShowStripped JSExportDeclaration where
    ss :: JSExportDeclaration -> String
ss (JSExportFrom JSExportClause
xs JSFromClause
from JSSemi
_) = String
"JSExportFrom (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExportClause -> String
forall a. ShowStripped a => a -> String
ss JSExportClause
xs String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSFromClause -> String
forall a. ShowStripped a => a -> String
ss JSFromClause
from String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSExportLocals JSExportClause
xs JSSemi
_) = String
"JSExportLocals (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExportClause -> String
forall a. ShowStripped a => a -> String
ss JSExportClause
xs String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSExport JSStatement
x1 JSSemi
_) = String
"JSExport (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSStatement -> String
forall a. ShowStripped a => a -> String
ss JSStatement
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"

instance ShowStripped JSExportClause where
    ss :: JSExportClause -> String
ss (JSExportClause JSAnnot
_ JSCommaList JSExportSpecifier
xs JSAnnot
_) = String
"JSExportClause (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExportSpecifier -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExportSpecifier
xs String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"

instance ShowStripped JSExportSpecifier where
    ss :: JSExportSpecifier -> String
ss (JSExportSpecifier JSIdent
x1) = String
"JSExportSpecifier (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSIdent -> String
forall a. ShowStripped a => a -> String
ss JSIdent
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSExportSpecifierAs JSIdent
x1 JSAnnot
_ JSIdent
x2) = String
"JSExportSpecifierAs (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSIdent -> String
forall a. ShowStripped a => a -> String
ss JSIdent
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSIdent -> String
forall a. ShowStripped a => a -> String
ss JSIdent
x2 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"

instance ShowStripped JSTryCatch where
    ss :: JSTryCatch -> String
ss (JSCatch JSAnnot
_ JSAnnot
_lb JSExpression
x1 JSAnnot
_rb JSBlock
x3) = String
"JSCatch (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSBlock -> String
forall a. ShowStripped a => a -> String
ss JSBlock
x3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSCatchIf JSAnnot
_ JSAnnot
_lb JSExpression
x1 JSAnnot
_ JSExpression
ex JSAnnot
_rb JSBlock
x3) = String
"JSCatch (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") if " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
ex String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSBlock -> String
forall a. ShowStripped a => a -> String
ss JSBlock
x3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"

instance ShowStripped JSTryFinally where
    ss :: JSTryFinally -> String
ss (JSFinally JSAnnot
_ JSBlock
x) = String
"JSFinally (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSBlock -> String
forall a. ShowStripped a => a -> String
ss JSBlock
x String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss JSTryFinally
JSNoFinally = String
"JSFinally ()"

instance ShowStripped JSIdent where
    ss :: JSIdent -> String
ss (JSIdentName JSAnnot
_ String
s) = String
"JSIdentifier " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
singleQuote String
s
    ss JSIdent
JSIdentNone = String
"JSIdentNone"

instance ShowStripped JSObjectProperty where
    ss :: JSObjectProperty -> String
ss (JSPropertyNameandValue JSPropertyName
x1 JSAnnot
_colon [JSExpression]
x2s) = String
"JSPropertyNameandValue (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSPropertyName -> String
forall a. ShowStripped a => a -> String
ss JSPropertyName
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") " String -> ShowS
forall a. [a] -> [a] -> [a]
++ [JSExpression] -> String
forall a. ShowStripped a => a -> String
ss [JSExpression]
x2s
    ss (JSPropertyIdentRef JSAnnot
_ String
s) = String
"JSPropertyIdentRef " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
singleQuote String
s
    ss (JSObjectMethod JSMethodDefinition
m) = JSMethodDefinition -> String
forall a. ShowStripped a => a -> String
ss JSMethodDefinition
m

instance ShowStripped JSMethodDefinition where
    ss :: JSMethodDefinition -> String
ss (JSMethodDefinition JSPropertyName
x1 JSAnnot
_lb1 JSCommaList JSExpression
x2s JSAnnot
_rb1 JSBlock
x3) = String
"JSMethodDefinition (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSPropertyName -> String
forall a. ShowStripped a => a -> String
ss JSPropertyName
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
x2s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSBlock -> String
forall a. ShowStripped a => a -> String
ss JSBlock
x3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSPropertyAccessor JSAccessor
s JSPropertyName
x1 JSAnnot
_lb1 JSCommaList JSExpression
x2s JSAnnot
_rb1 JSBlock
x3) = String
"JSPropertyAccessor " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSAccessor -> String
forall a. ShowStripped a => a -> String
ss JSAccessor
s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSPropertyName -> String
forall a. ShowStripped a => a -> String
ss JSPropertyName
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
x2s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSBlock -> String
forall a. ShowStripped a => a -> String
ss JSBlock
x3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSGeneratorMethodDefinition JSAnnot
_ JSPropertyName
x1 JSAnnot
_lb1 JSCommaList JSExpression
x2s JSAnnot
_rb1 JSBlock
x3) = String
"JSGeneratorMethodDefinition (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSPropertyName -> String
forall a. ShowStripped a => a -> String
ss JSPropertyName
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") " String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSCommaList JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSCommaList JSExpression
x2s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
" (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSBlock -> String
forall a. ShowStripped a => a -> String
ss JSBlock
x3 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"

instance ShowStripped JSPropertyName where
    ss :: JSPropertyName -> String
ss (JSPropertyIdent JSAnnot
_ String
s) = String
"JSIdentifier " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
singleQuote String
s
    ss (JSPropertyString JSAnnot
_ String
s) = String
"JSIdentifier " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
singleQuote String
s
    ss (JSPropertyNumber JSAnnot
_ String
s) = String
"JSIdentifier " String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
singleQuote String
s
    ss (JSPropertyComputed JSAnnot
_ JSExpression
x JSAnnot
_) = String
"JSPropertyComputed (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"

instance ShowStripped JSAccessor where
    ss :: JSAccessor -> String
ss (JSAccessorGet JSAnnot
_) = String
"JSAccessorGet"
    ss (JSAccessorSet JSAnnot
_) = String
"JSAccessorSet"

instance ShowStripped JSBlock where
    ss :: JSBlock -> String
ss (JSBlock JSAnnot
_ [JSStatement]
xs JSAnnot
_) = String
"JSBlock " String -> ShowS
forall a. [a] -> [a] -> [a]
++ [JSStatement] -> String
forall a. ShowStripped a => a -> String
ss [JSStatement]
xs

instance ShowStripped JSSwitchParts where
    ss :: JSSwitchParts -> String
ss (JSCase JSAnnot
_ JSExpression
x1 JSAnnot
_c [JSStatement]
x2s) = String
"JSCase (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x1 String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
") (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ [JSStatement] -> String
forall a. ShowStripped a => a -> String
ss [JSStatement]
x2s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSDefault JSAnnot
_ JSAnnot
_c [JSStatement]
xs) = String
"JSDefault (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ [JSStatement] -> String
forall a. ShowStripped a => a -> String
ss [JSStatement]
xs String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"

instance ShowStripped JSBinOp where
    ss :: JSBinOp -> String
ss (JSBinOpAnd JSAnnot
_) = String
"'&&'"
    ss (JSBinOpBitAnd JSAnnot
_) = String
"'&'"
    ss (JSBinOpBitOr JSAnnot
_) = String
"'|'"
    ss (JSBinOpBitXor JSAnnot
_) = String
"'^'"
    ss (JSBinOpDivide JSAnnot
_) = String
"'/'"
    ss (JSBinOpEq JSAnnot
_) = String
"'=='"
    ss (JSBinOpGe JSAnnot
_) = String
"'>='"
    ss (JSBinOpGt JSAnnot
_) = String
"'>'"
    ss (JSBinOpIn JSAnnot
_) = String
"'in'"
    ss (JSBinOpInstanceOf JSAnnot
_) = String
"'instanceof'"
    ss (JSBinOpLe JSAnnot
_) = String
"'<='"
    ss (JSBinOpLsh JSAnnot
_) = String
"'<<'"
    ss (JSBinOpLt JSAnnot
_) = String
"'<'"
    ss (JSBinOpMinus JSAnnot
_) = String
"'-'"
    ss (JSBinOpMod JSAnnot
_) = String
"'%'"
    ss (JSBinOpNeq JSAnnot
_) = String
"'!='"
    ss (JSBinOpOf JSAnnot
_) = String
"'of'"
    ss (JSBinOpOr JSAnnot
_) = String
"'||'"
    ss (JSBinOpPlus JSAnnot
_) = String
"'+'"
    ss (JSBinOpRsh JSAnnot
_) = String
"'>>'"
    ss (JSBinOpStrictEq JSAnnot
_) = String
"'==='"
    ss (JSBinOpStrictNeq JSAnnot
_) = String
"'!=='"
    ss (JSBinOpTimes JSAnnot
_) = String
"'*'"
    ss (JSBinOpUrsh JSAnnot
_) = String
"'>>>'"

instance ShowStripped JSUnaryOp where
    ss :: JSUnaryOp -> String
ss (JSUnaryOpDecr JSAnnot
_) = String
"'--'"
    ss (JSUnaryOpDelete JSAnnot
_) = String
"'delete'"
    ss (JSUnaryOpIncr JSAnnot
_) = String
"'++'"
    ss (JSUnaryOpMinus JSAnnot
_) = String
"'-'"
    ss (JSUnaryOpNot JSAnnot
_) = String
"'!'"
    ss (JSUnaryOpPlus JSAnnot
_) = String
"'+'"
    ss (JSUnaryOpTilde JSAnnot
_) = String
"'~'"
    ss (JSUnaryOpTypeof JSAnnot
_) = String
"'typeof'"
    ss (JSUnaryOpVoid JSAnnot
_) = String
"'void'"

instance ShowStripped JSAssignOp where
    ss :: JSAssignOp -> String
ss (JSAssign JSAnnot
_) = String
"'='"
    ss (JSTimesAssign JSAnnot
_) = String
"'*='"
    ss (JSDivideAssign JSAnnot
_) = String
"'/='"
    ss (JSModAssign JSAnnot
_) = String
"'%='"
    ss (JSPlusAssign JSAnnot
_) = String
"'+='"
    ss (JSMinusAssign JSAnnot
_) = String
"'-='"
    ss (JSLshAssign JSAnnot
_) = String
"'<<='"
    ss (JSRshAssign JSAnnot
_) = String
"'>>='"
    ss (JSUrshAssign JSAnnot
_) = String
"'>>>='"
    ss (JSBwAndAssign JSAnnot
_) = String
"'&='"
    ss (JSBwXorAssign JSAnnot
_) = String
"'^='"
    ss (JSBwOrAssign JSAnnot
_) = String
"'|='"

instance ShowStripped JSVarInitializer where
    ss :: JSVarInitializer -> String
ss (JSVarInit JSAnnot
_ JSExpression
n) = String
"[" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
n String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"]"
    ss JSVarInitializer
JSVarInitNone = String
""

instance ShowStripped JSSemi where
    ss :: JSSemi -> String
ss (JSSemi JSAnnot
_) = String
"JSSemicolon"
    ss JSSemi
JSSemiAuto = String
""

instance ShowStripped JSArrayElement where
    ss :: JSArrayElement -> String
ss (JSArrayElement JSExpression
e) = JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
e
    ss (JSArrayComma JSAnnot
_) = String
"JSComma"

instance ShowStripped JSTemplatePart where
    ss :: JSTemplatePart -> String
ss (JSTemplatePart JSExpression
e JSAnnot
_ String
s) = String
"(" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
e String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"," String -> ShowS
forall a. [a] -> [a] -> [a]
++ ShowS
singleQuote String
s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"

instance ShowStripped JSClassHeritage where
    ss :: JSClassHeritage -> String
ss JSClassHeritage
JSExtendsNone = String
""
    ss (JSExtends JSAnnot
_ JSExpression
x) = JSExpression -> String
forall a. ShowStripped a => a -> String
ss JSExpression
x

instance ShowStripped JSClassElement where
    ss :: JSClassElement -> String
ss (JSClassInstanceMethod JSMethodDefinition
m) = JSMethodDefinition -> String
forall a. ShowStripped a => a -> String
ss JSMethodDefinition
m
    ss (JSClassStaticMethod JSAnnot
_ JSMethodDefinition
m) = String
"JSClassStaticMethod (" String -> ShowS
forall a. [a] -> [a] -> [a]
++ JSMethodDefinition -> String
forall a. ShowStripped a => a -> String
ss JSMethodDefinition
m String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"
    ss (JSClassSemi JSAnnot
_) = String
"JSClassSemi"

instance ShowStripped a => ShowStripped (JSCommaList a) where
    ss :: JSCommaList a -> String
ss JSCommaList a
xs = String
"(" String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
commaJoin ((a -> String) -> [a] -> [String]
forall a b. (a -> b) -> [a] -> [b]
map a -> String
forall a. ShowStripped a => a -> String
ss ([a] -> [String]) -> [a] -> [String]
forall a b. (a -> b) -> a -> b
$ JSCommaList a -> [a]
forall a. JSCommaList a -> [a]
fromCommaList JSCommaList a
xs) String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
")"

instance ShowStripped a => ShowStripped (JSCommaTrailingList a) where
    ss :: JSCommaTrailingList a -> String
ss (JSCTLComma JSCommaList a
xs JSAnnot
_) = String
"[" String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
commaJoin ((a -> String) -> [a] -> [String]
forall a b. (a -> b) -> [a] -> [b]
map a -> String
forall a. ShowStripped a => a -> String
ss ([a] -> [String]) -> [a] -> [String]
forall a b. (a -> b) -> a -> b
$ JSCommaList a -> [a]
forall a. JSCommaList a -> [a]
fromCommaList JSCommaList a
xs) String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
",JSComma]"
    ss (JSCTLNone JSCommaList a
xs)    = String
"[" String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
commaJoin ((a -> String) -> [a] -> [String]
forall a b. (a -> b) -> [a] -> [b]
map a -> String
forall a. ShowStripped a => a -> String
ss ([a] -> [String]) -> [a] -> [String]
forall a b. (a -> b) -> a -> b
$ JSCommaList a -> [a]
forall a. JSCommaList a -> [a]
fromCommaList JSCommaList a
xs) String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"]"

instance ShowStripped a => ShowStripped [a] where
    ss :: [a] -> String
ss [a]
xs = String
"[" String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
commaJoin ((a -> String) -> [a] -> [String]
forall a b. (a -> b) -> [a] -> [b]
map a -> String
forall a. ShowStripped a => a -> String
ss [a]
xs) String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"]"

-- -----------------------------------------------------------------------------
-- Helpers.

commaJoin :: [String] -> String
commaJoin :: [String] -> String
commaJoin [String]
s = String -> [String] -> String
forall a. [a] -> [[a]] -> [a]
intercalate String
"," ([String] -> String) -> [String] -> String
forall a b. (a -> b) -> a -> b
$ (String -> Bool) -> [String] -> [String]
forall a. (a -> Bool) -> [a] -> [a]
filter (Bool -> Bool
not (Bool -> Bool) -> (String -> Bool) -> String -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null) [String]
s

fromCommaList :: JSCommaList a -> [a]
fromCommaList :: JSCommaList a -> [a]
fromCommaList (JSLCons JSCommaList a
l JSAnnot
_ a
i) = JSCommaList a -> [a]
forall a. JSCommaList a -> [a]
fromCommaList JSCommaList a
l [a] -> [a] -> [a]
forall a. [a] -> [a] -> [a]
++ [a
i]
fromCommaList (JSLOne a
i)      = [a
i]
fromCommaList JSCommaList a
JSLNil = []

singleQuote :: String -> String
singleQuote :: ShowS
singleQuote String
s = Char
'\'' Char -> ShowS
forall a. a -> [a] -> [a]
: (String
s String -> ShowS
forall a. [a] -> [a] -> [a]
++ String
"'")

ssid :: JSIdent -> String
ssid :: JSIdent -> String
ssid (JSIdentName JSAnnot
_ String
s) = ShowS
singleQuote String
s
ssid JSIdent
JSIdentNone = String
"''"

commaIf :: String -> String
commaIf :: ShowS
commaIf String
"" = String
""
commaIf String
xs = Char
',' Char -> ShowS
forall a. a -> [a] -> [a]
: String
xs


deAnnot :: JSBinOp -> JSBinOp
deAnnot :: JSBinOp -> JSBinOp
deAnnot (JSBinOpAnd JSAnnot
_) = JSAnnot -> JSBinOp
JSBinOpAnd JSAnnot
JSNoAnnot
deAnnot (JSBinOpBitAnd JSAnnot
_) = JSAnnot -> JSBinOp
JSBinOpBitAnd JSAnnot
JSNoAnnot
deAnnot (JSBinOpBitOr JSAnnot
_) = JSAnnot -> JSBinOp
JSBinOpBitOr JSAnnot
JSNoAnnot
deAnnot (JSBinOpBitXor JSAnnot
_) = JSAnnot -> JSBinOp
JSBinOpBitXor JSAnnot
JSNoAnnot
deAnnot (JSBinOpDivide JSAnnot
_) = JSAnnot -> JSBinOp
JSBinOpDivide JSAnnot
JSNoAnnot
deAnnot (JSBinOpEq JSAnnot
_) = JSAnnot -> JSBinOp
JSBinOpEq JSAnnot
JSNoAnnot
deAnnot (JSBinOpGe JSAnnot
_) = JSAnnot -> JSBinOp
JSBinOpGe JSAnnot
JSNoAnnot
deAnnot (JSBinOpGt JSAnnot
_) = JSAnnot -> JSBinOp
JSBinOpGt JSAnnot
JSNoAnnot
deAnnot (JSBinOpIn JSAnnot
_) = JSAnnot -> JSBinOp
JSBinOpIn JSAnnot
JSNoAnnot
deAnnot (JSBinOpInstanceOf JSAnnot
_) = JSAnnot -> JSBinOp
JSBinOpInstanceOf JSAnnot
JSNoAnnot
deAnnot (JSBinOpLe JSAnnot
_) = JSAnnot -> JSBinOp
JSBinOpLe JSAnnot
JSNoAnnot
deAnnot (JSBinOpLsh JSAnnot
_) = JSAnnot -> JSBinOp
JSBinOpLsh JSAnnot
JSNoAnnot
deAnnot (JSBinOpLt JSAnnot
_) = JSAnnot -> JSBinOp
JSBinOpLt JSAnnot
JSNoAnnot
deAnnot (JSBinOpMinus JSAnnot
_) = JSAnnot -> JSBinOp
JSBinOpMinus JSAnnot
JSNoAnnot
deAnnot (JSBinOpMod JSAnnot
_) = JSAnnot -> JSBinOp
JSBinOpMod JSAnnot
JSNoAnnot
deAnnot (JSBinOpNeq JSAnnot
_) = JSAnnot -> JSBinOp
JSBinOpNeq JSAnnot
JSNoAnnot
deAnnot (JSBinOpOf JSAnnot
_) = JSAnnot -> JSBinOp
JSBinOpOf JSAnnot
JSNoAnnot
deAnnot (JSBinOpOr JSAnnot
_) = JSAnnot -> JSBinOp
JSBinOpOr JSAnnot
JSNoAnnot
deAnnot (JSBinOpPlus JSAnnot
_) = JSAnnot -> JSBinOp
JSBinOpPlus JSAnnot
JSNoAnnot
deAnnot (JSBinOpRsh JSAnnot
_) = JSAnnot -> JSBinOp
JSBinOpRsh JSAnnot
JSNoAnnot
deAnnot (JSBinOpStrictEq JSAnnot
_) = JSAnnot -> JSBinOp
JSBinOpStrictEq JSAnnot
JSNoAnnot
deAnnot (JSBinOpStrictNeq JSAnnot
_) = JSAnnot -> JSBinOp
JSBinOpStrictNeq JSAnnot
JSNoAnnot
deAnnot (JSBinOpTimes JSAnnot
_) = JSAnnot -> JSBinOp
JSBinOpTimes JSAnnot
JSNoAnnot
deAnnot (JSBinOpUrsh JSAnnot
_) = JSAnnot -> JSBinOp
JSBinOpUrsh JSAnnot
JSNoAnnot

binOpEq :: JSBinOp -> JSBinOp -> Bool
binOpEq :: JSBinOp -> JSBinOp -> Bool
binOpEq JSBinOp
a JSBinOp
b = JSBinOp -> JSBinOp
deAnnot JSBinOp
a JSBinOp -> JSBinOp -> Bool
forall a. Eq a => a -> a -> Bool
== JSBinOp -> JSBinOp
deAnnot JSBinOp
b