{-# LANGUAGE CPP, FlexibleInstances, NoOverloadedStrings, TypeSynonymInstances #-}
module Language.JavaScript.Pretty.Printer
(
renderJS
, renderToString
, renderToText
) where
import Blaze.ByteString.Builder (Builder, toLazyByteString)
import Data.List
#if ! MIN_VERSION_base(4,13,0)
import Data.Monoid (mempty)
import Data.Semigroup ((<>))
#endif
import Data.Text.Lazy (Text)
import Language.JavaScript.Parser.AST
import Language.JavaScript.Parser.SrcLocation
import Language.JavaScript.Parser.Token
import qualified Blaze.ByteString.Builder.Char.Utf8 as BS
import qualified Data.ByteString.Lazy as LB
import qualified Data.Text.Lazy.Encoding as LT
import qualified Codec.Binary.UTF8.String as US
data PosAccum = PosAccum (Int, Int) Builder
str :: String -> Builder
str :: String -> Builder
str = String -> Builder
BS.fromString
renderJS :: JSAST -> Builder
renderJS :: JSAST -> Builder
renderJS JSAST
node = Builder
bb
where
PosAccum (Int, Int)
_ Builder
bb = (Int, Int) -> Builder -> PosAccum
PosAccum (Int
1,Int
1) forall a. Monoid a => a
mempty forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAST
node
renderToString :: JSAST -> String
renderToString :: JSAST -> String
renderToString JSAST
js = [Word8] -> String
US.decode forall a b. (a -> b) -> a -> b
$ ByteString -> [Word8]
LB.unpack forall a b. (a -> b) -> a -> b
$ Builder -> ByteString
toLazyByteString forall a b. (a -> b) -> a -> b
$ JSAST -> Builder
renderJS JSAST
js
renderToText :: JSAST -> Text
renderToText :: JSAST -> Text
renderToText = ByteString -> Text
LT.decodeUtf8 forall b c a. (b -> c) -> (a -> b) -> a -> c
. Builder -> ByteString
toLazyByteString forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSAST -> Builder
renderJS
class RenderJS a where
(|>) :: PosAccum -> a -> PosAccum
instance RenderJS JSAST where
|> :: PosAccum -> JSAST -> PosAccum
(|>) PosAccum
pacc (JSAstProgram [JSStatement]
xs JSAnnot
a) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSStatement]
xs forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a
(|>) PosAccum
pacc (JSAstModule [JSModuleItem]
xs JSAnnot
a) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSModuleItem]
xs forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a
(|>) PosAccum
pacc (JSAstStatement JSStatement
s JSAnnot
a) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a
(|>) PosAccum
pacc (JSAstExpression JSExpression
e JSAnnot
a) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
e forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a
(|>) PosAccum
pacc (JSAstLiteral JSExpression
x JSAnnot
a) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a
instance RenderJS JSExpression where
|> :: PosAccum -> JSExpression -> PosAccum
(|>) PosAccum
pacc (JSIdentifier JSAnnot
annot String
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
s
(|>) PosAccum
pacc (JSDecimal JSAnnot
annot String
i) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
i
(|>) PosAccum
pacc (JSLiteral JSAnnot
annot String
l) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
l
(|>) PosAccum
pacc (JSHexInteger JSAnnot
annot String
i) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
i
(|>) PosAccum
pacc (JSOctal JSAnnot
annot String
i) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
i
(|>) PosAccum
pacc (JSStringLiteral JSAnnot
annot String
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
s
(|>) PosAccum
pacc (JSRegEx JSAnnot
annot String
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
s
(|>) PosAccum
pacc (JSArrayLiteral JSAnnot
als [JSArrayElement]
xs JSAnnot
ars) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
als forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"[" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSArrayElement]
xs forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
ars forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"]"
(|>) PosAccum
pacc (JSArrowExpression JSArrowParameterList
xs JSAnnot
a JSStatement
x) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSArrowParameterList
xs forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"=>" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x
(|>) PosAccum
pacc (JSAssignExpression JSExpression
lhs JSAssignOp
op JSExpression
rhs) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
lhs forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAssignOp
op forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
rhs
(|>) PosAccum
pacc (JSAwaitExpression JSAnnot
a JSExpression
e) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"await" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
e
(|>) PosAccum
pacc (JSCallExpression JSExpression
ex JSAnnot
lb JSCommaList JSExpression
xs JSAnnot
rb) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
ex forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
lb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
xs forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
rb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")"
(|>) PosAccum
pacc (JSCallExpressionDot JSExpression
ex JSAnnot
os JSExpression
xs) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
ex forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
os forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"." forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
xs
(|>) PosAccum
pacc (JSCallExpressionSquare JSExpression
ex JSAnnot
als JSExpression
xs JSAnnot
ars) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
ex forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
als forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"[" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
xs forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
ars forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"]"
(|>) PosAccum
pacc (JSClassExpression JSAnnot
annot JSIdent
n JSClassHeritage
h JSAnnot
lb [JSClassElement]
xs JSAnnot
rb) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"class" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
n forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSClassHeritage
h forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
lb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"{" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSClassElement]
xs forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
rb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"}"
(|>) PosAccum
pacc (JSCommaExpression JSExpression
le JSAnnot
c JSExpression
re) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
le forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
c forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"," forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
re
(|>) PosAccum
pacc (JSExpressionBinary JSExpression
lhs JSBinOp
op JSExpression
rhs) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
lhs forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBinOp
op forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
rhs
(|>) PosAccum
pacc (JSExpressionParen JSAnnot
alp JSExpression
e JSAnnot
arp) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alp forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
e forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arp forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")"
(|>) PosAccum
pacc (JSExpressionPostfix JSExpression
xs JSUnaryOp
op) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
xs forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSUnaryOp
op
(|>) PosAccum
pacc (JSExpressionTernary JSExpression
cond JSAnnot
h JSExpression
v1 JSAnnot
c JSExpression
v2) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
cond forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
h forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"?" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
v1 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
c forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
":" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
v2
(|>) PosAccum
pacc (JSFunctionExpression JSAnnot
annot JSIdent
n JSAnnot
lb JSCommaList JSExpression
x2s JSAnnot
rb JSBlock
x3) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"function" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
n forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
lb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x2s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
rb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBlock
x3
(|>) PosAccum
pacc (JSGeneratorExpression JSAnnot
annot JSAnnot
s JSIdent
n JSAnnot
lb JSCommaList JSExpression
x2s JSAnnot
rb JSBlock
x3) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"function" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"*" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
n forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
lb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x2s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
rb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBlock
x3
(|>) PosAccum
pacc (JSMemberDot JSExpression
xs JSAnnot
dot JSExpression
n) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
xs forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"." forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
dot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
n
(|>) PosAccum
pacc (JSMemberExpression JSExpression
e JSAnnot
lb JSCommaList JSExpression
a JSAnnot
rb) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
e forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
lb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
a forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
rb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")"
(|>) PosAccum
pacc (JSMemberNew JSAnnot
a JSExpression
lb JSAnnot
n JSCommaList JSExpression
rb JSAnnot
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"new" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
lb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
n forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
rb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
s
(|>) PosAccum
pacc (JSMemberSquare JSExpression
xs JSAnnot
als JSExpression
e JSAnnot
ars) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
xs forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
als forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"[" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
e forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
ars forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"]"
(|>) PosAccum
pacc (JSNewExpression JSAnnot
n JSExpression
e) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
n forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"new" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
e
(|>) PosAccum
pacc (JSObjectLiteral JSAnnot
alb JSObjectPropertyList
xs JSAnnot
arb) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"{" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSObjectPropertyList
xs forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"}"
(|>) PosAccum
pacc (JSTemplateLiteral Maybe JSExpression
t JSAnnot
a String
h [JSTemplatePart]
ps) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> Maybe JSExpression
t forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
h forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSTemplatePart]
ps
(|>) PosAccum
pacc (JSUnaryExpression JSUnaryOp
op JSExpression
x) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSUnaryOp
op forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x
(|>) PosAccum
pacc (JSVarInitExpression JSExpression
x1 JSVarInitializer
x2) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSVarInitializer
x2
(|>) PosAccum
pacc (JSYieldExpression JSAnnot
y Maybe JSExpression
x) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
y forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"yield" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> Maybe JSExpression
x
(|>) PosAccum
pacc (JSYieldFromExpression JSAnnot
y JSAnnot
s JSExpression
x) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
y forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"yield" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"*" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x
(|>) PosAccum
pacc (JSSpreadExpression JSAnnot
a JSExpression
e) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"..." forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
e
instance RenderJS JSArrowParameterList where
|> :: PosAccum -> JSArrowParameterList -> PosAccum
(|>) PosAccum
pacc (JSUnparenthesizedArrowParameter JSIdent
p) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
p
(|>) PosAccum
pacc (JSParenthesizedArrowParameterList JSAnnot
lb JSCommaList JSExpression
ps JSAnnot
rb) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
lb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
ps forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
rb
instance RenderJS JSAnnot where
|> :: PosAccum -> JSAnnot -> PosAccum
(|>) PosAccum
pacc (JSAnnot TokenPosn
p [CommentAnnotation]
cs) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [CommentAnnotation]
cs forall a. RenderJS a => PosAccum -> a -> PosAccum
|> TokenPosn
p
(|>) PosAccum
pacc JSAnnot
JSNoAnnot = PosAccum
pacc
(|>) PosAccum
pacc JSAnnot
JSAnnotSpace = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
" "
instance RenderJS String where
|> :: PosAccum -> String -> PosAccum
(|>) (PosAccum (Int
r,Int
c) Builder
bb) String
s = (Int, Int) -> Builder -> PosAccum
PosAccum (Int
r',Int
c') (Builder
bb forall a. Semigroup a => a -> a -> a
<> String -> Builder
str String
s)
where
(Int
r',Int
c') = forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' (\(Int
row,Int
col) Char
ch -> forall {a} {b}. (Num a, Num b) => (a, b) -> Char -> (a, b)
go (Int
row,Int
col) Char
ch) (Int
r,Int
c) String
s
go :: (a, b) -> Char -> (a, b)
go (a
rx,b
_) Char
'\n' = (a
rxforall a. Num a => a -> a -> a
+a
1,b
1)
go (a
rx,b
cx) Char
'\t' = (a
rx,b
cxforall a. Num a => a -> a -> a
+b
8)
go (a
rx,b
cx) Char
_ = (a
rx,b
cxforall a. Num a => a -> a -> a
+b
1)
instance RenderJS TokenPosn where
|> :: PosAccum -> TokenPosn -> PosAccum
(|>) (PosAccum (Int
lcur,Int
ccur) Builder
bb) (TokenPn Int
_ Int
ltgt Int
ctgt) = (Int, Int) -> Builder -> PosAccum
PosAccum (Int
lnew,Int
cnew) (Builder
bb forall a. Semigroup a => a -> a -> a
<> Builder
bb')
where
(Builder
bbline,Int
ccur') = if Int
lcur forall a. Ord a => a -> a -> Bool
< Int
ltgt then (String -> Builder
str (forall a. Int -> a -> [a]
replicate (Int
ltgt forall a. Num a => a -> a -> a
- Int
lcur) Char
'\n'),Int
1) else (forall a. Monoid a => a
mempty,Int
ccur)
bbcol :: Builder
bbcol = if Int
ccur' forall a. Ord a => a -> a -> Bool
< Int
ctgt then String -> Builder
str (forall a. Int -> a -> [a]
replicate (Int
ctgt forall a. Num a => a -> a -> a
- Int
ccur') Char
' ') else forall a. Monoid a => a
mempty
bb' :: Builder
bb' = Builder
bbline forall a. Semigroup a => a -> a -> a
<> Builder
bbcol
lnew :: Int
lnew = if Int
lcur forall a. Ord a => a -> a -> Bool
< Int
ltgt then Int
ltgt else Int
lcur
cnew :: Int
cnew = if Int
ccur' forall a. Ord a => a -> a -> Bool
< Int
ctgt then Int
ctgt else Int
ccur'
instance RenderJS [CommentAnnotation] where
|> :: PosAccum -> [CommentAnnotation] -> PosAccum
(|>) = forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' forall a. RenderJS a => PosAccum -> a -> PosAccum
(|>)
instance RenderJS CommentAnnotation where
|> :: PosAccum -> CommentAnnotation -> PosAccum
(|>) PosAccum
pacc CommentAnnotation
NoComment = PosAccum
pacc
(|>) PosAccum
pacc (CommentA TokenPosn
p String
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> TokenPosn
p forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
s
(|>) PosAccum
pacc (WhiteSpace TokenPosn
p String
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> TokenPosn
p forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
s
instance RenderJS [JSExpression] where
|> :: PosAccum -> [JSExpression] -> PosAccum
(|>) = forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' forall a. RenderJS a => PosAccum -> a -> PosAccum
(|>)
instance RenderJS JSBinOp where
|> :: PosAccum -> JSBinOp -> PosAccum
(|>) PosAccum
pacc (JSBinOpAnd JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"&&"
(|>) PosAccum
pacc (JSBinOpBitAnd JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"&"
(|>) PosAccum
pacc (JSBinOpBitOr JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"|"
(|>) PosAccum
pacc (JSBinOpBitXor JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"^"
(|>) PosAccum
pacc (JSBinOpDivide JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"/"
(|>) PosAccum
pacc (JSBinOpEq JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"=="
(|>) PosAccum
pacc (JSBinOpGe JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
">="
(|>) PosAccum
pacc (JSBinOpGt JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
">"
(|>) PosAccum
pacc (JSBinOpIn JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"in"
(|>) PosAccum
pacc (JSBinOpInstanceOf JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"instanceof"
(|>) PosAccum
pacc (JSBinOpLe JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"<="
(|>) PosAccum
pacc (JSBinOpLsh JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"<<"
(|>) PosAccum
pacc (JSBinOpLt JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"<"
(|>) PosAccum
pacc (JSBinOpMinus JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"-"
(|>) PosAccum
pacc (JSBinOpMod JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"%"
(|>) PosAccum
pacc (JSBinOpNeq JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"!="
(|>) PosAccum
pacc (JSBinOpOf JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"of"
(|>) PosAccum
pacc (JSBinOpOr JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"||"
(|>) PosAccum
pacc (JSBinOpPlus JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"+"
(|>) PosAccum
pacc (JSBinOpRsh JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
">>"
(|>) PosAccum
pacc (JSBinOpStrictEq JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"==="
(|>) PosAccum
pacc (JSBinOpStrictNeq JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"!=="
(|>) PosAccum
pacc (JSBinOpTimes JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"*"
(|>) PosAccum
pacc (JSBinOpUrsh JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
">>>"
instance RenderJS JSUnaryOp where
|> :: PosAccum -> JSUnaryOp -> PosAccum
(|>) PosAccum
pacc (JSUnaryOpDecr JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"--"
(|>) PosAccum
pacc (JSUnaryOpDelete JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"delete"
(|>) PosAccum
pacc (JSUnaryOpIncr JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"++"
(|>) PosAccum
pacc (JSUnaryOpMinus JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"-"
(|>) PosAccum
pacc (JSUnaryOpNot JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"!"
(|>) PosAccum
pacc (JSUnaryOpPlus JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"+"
(|>) PosAccum
pacc (JSUnaryOpTilde JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"~"
(|>) PosAccum
pacc (JSUnaryOpTypeof JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"typeof"
(|>) PosAccum
pacc (JSUnaryOpVoid JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"void"
instance RenderJS JSAssignOp where
|> :: PosAccum -> JSAssignOp -> PosAccum
(|>) PosAccum
pacc (JSAssign JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"="
(|>) PosAccum
pacc (JSTimesAssign JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"*="
(|>) PosAccum
pacc (JSDivideAssign JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"/="
(|>) PosAccum
pacc (JSModAssign JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"%="
(|>) PosAccum
pacc (JSPlusAssign JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"+="
(|>) PosAccum
pacc (JSMinusAssign JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"-="
(|>) PosAccum
pacc (JSLshAssign JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"<<="
(|>) PosAccum
pacc (JSRshAssign JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
">>="
(|>) PosAccum
pacc (JSUrshAssign JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
">>>="
(|>) PosAccum
pacc (JSBwAndAssign JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"&="
(|>) PosAccum
pacc (JSBwXorAssign JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"^="
(|>) PosAccum
pacc (JSBwOrAssign JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"|="
instance RenderJS JSSemi where
|> :: PosAccum -> JSSemi -> PosAccum
(|>) PosAccum
pacc (JSSemi JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
";"
(|>) PosAccum
pacc JSSemi
JSSemiAuto = PosAccum
pacc
instance RenderJS JSTryCatch where
|> :: PosAccum -> JSTryCatch -> PosAccum
(|>) PosAccum
pacc (JSCatch JSAnnot
anc JSAnnot
alb JSExpression
x1 JSAnnot
arb JSBlock
x3) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
anc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"catch" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBlock
x3
(|>) PosAccum
pacc (JSCatchIf JSAnnot
anc JSAnnot
alb JSExpression
x1 JSAnnot
aif JSExpression
ex JSAnnot
arb JSBlock
x3) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
anc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"catch" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
aif forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"if" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
ex forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBlock
x3
instance RenderJS [JSTryCatch] where
|> :: PosAccum -> [JSTryCatch] -> PosAccum
(|>) = forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' forall a. RenderJS a => PosAccum -> a -> PosAccum
(|>)
instance RenderJS JSTryFinally where
|> :: PosAccum -> JSTryFinally -> PosAccum
(|>) PosAccum
pacc (JSFinally JSAnnot
annot JSBlock
x) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"finally" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBlock
x
(|>) PosAccum
pacc JSTryFinally
JSNoFinally = PosAccum
pacc
instance RenderJS JSSwitchParts where
|> :: PosAccum -> JSSwitchParts -> PosAccum
(|>) PosAccum
pacc (JSCase JSAnnot
annot JSExpression
x1 JSAnnot
c [JSStatement]
x2s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"case" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
c forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
":" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSStatement]
x2s
(|>) PosAccum
pacc (JSDefault JSAnnot
annot JSAnnot
c [JSStatement]
xs) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"default" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
c forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
":" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSStatement]
xs
instance RenderJS [JSSwitchParts] where
|> :: PosAccum -> [JSSwitchParts] -> PosAccum
(|>) = forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' forall a. RenderJS a => PosAccum -> a -> PosAccum
(|>)
instance RenderJS JSStatement where
|> :: PosAccum -> JSStatement -> PosAccum
(|>) PosAccum
pacc (JSStatementBlock JSAnnot
alb [JSStatement]
blk JSAnnot
arb JSSemi
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"{" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSStatement]
blk forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"}" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSBreak JSAnnot
annot JSIdent
mi JSSemi
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"break" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
mi forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSClass JSAnnot
annot JSIdent
n JSClassHeritage
h JSAnnot
lb [JSClassElement]
xs JSAnnot
rb JSSemi
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"class" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
n forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSClassHeritage
h forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
lb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"{" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSClassElement]
xs forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
rb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"}" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSContinue JSAnnot
annot JSIdent
mi JSSemi
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"continue" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
mi forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSConstant JSAnnot
annot JSCommaList JSExpression
xs JSSemi
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"const" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
xs forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSDoWhile JSAnnot
ad JSStatement
x1 JSAnnot
aw JSAnnot
alb JSExpression
x2 JSAnnot
arb JSSemi
x3) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
ad forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"do" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x1 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
aw forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"while" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x2 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
x3
(|>) PosAccum
pacc (JSEmptyStatement JSAnnot
a) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
";"
(|>) PosAccum
pacc (JSFor JSAnnot
af JSAnnot
alb JSCommaList JSExpression
x1s JSAnnot
s1 JSCommaList JSExpression
x2s JSAnnot
s2 JSCommaList JSExpression
x3s JSAnnot
arb JSStatement
x4) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"for" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x1s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
s1 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
";" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x2s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
s2 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
";" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x3s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x4
(|>) PosAccum
pacc (JSForIn JSAnnot
af JSAnnot
alb JSExpression
x1s JSBinOp
i JSExpression
x2 JSAnnot
arb JSStatement
x3) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"for" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBinOp
i forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x2 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x3
(|>) PosAccum
pacc (JSForVar JSAnnot
af JSAnnot
alb JSAnnot
v JSCommaList JSExpression
x1s JSAnnot
s1 JSCommaList JSExpression
x2s JSAnnot
s2 JSCommaList JSExpression
x3s JSAnnot
arb JSStatement
x4) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"for" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"var" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
v forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x1s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
s1 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
";" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x2s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
s2 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
";" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x3s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x4
(|>) PosAccum
pacc (JSForVarIn JSAnnot
af JSAnnot
alb JSAnnot
v JSExpression
x1 JSBinOp
i JSExpression
x2 JSAnnot
arb JSStatement
x3) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"for" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"var" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
v forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBinOp
i forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x2 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x3
(|>) PosAccum
pacc (JSForLet JSAnnot
af JSAnnot
alb JSAnnot
v JSCommaList JSExpression
x1s JSAnnot
s1 JSCommaList JSExpression
x2s JSAnnot
s2 JSCommaList JSExpression
x3s JSAnnot
arb JSStatement
x4) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"for" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"let" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
v forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x1s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
s1 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
";" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x2s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
s2 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
";" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x3s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x4
(|>) PosAccum
pacc (JSForLetIn JSAnnot
af JSAnnot
alb JSAnnot
v JSExpression
x1 JSBinOp
i JSExpression
x2 JSAnnot
arb JSStatement
x3) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"for" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"let" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
v forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBinOp
i forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x2 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x3
(|>) PosAccum
pacc (JSForLetOf JSAnnot
af JSAnnot
alb JSAnnot
v JSExpression
x1 JSBinOp
i JSExpression
x2 JSAnnot
arb JSStatement
x3) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"for" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"let" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
v forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBinOp
i forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x2 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x3
(|>) PosAccum
pacc (JSForConst JSAnnot
af JSAnnot
alb JSAnnot
v JSCommaList JSExpression
x1s JSAnnot
s1 JSCommaList JSExpression
x2s JSAnnot
s2 JSCommaList JSExpression
x3s JSAnnot
arb JSStatement
x4) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"for" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"const" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
v forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x1s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
s1 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
";" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x2s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
s2 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
";" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x3s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x4
(|>) PosAccum
pacc (JSForConstIn JSAnnot
af JSAnnot
alb JSAnnot
v JSExpression
x1 JSBinOp
i JSExpression
x2 JSAnnot
arb JSStatement
x3) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"for" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"const" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
v forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBinOp
i forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x2 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x3
(|>) PosAccum
pacc (JSForConstOf JSAnnot
af JSAnnot
alb JSAnnot
v JSExpression
x1 JSBinOp
i JSExpression
x2 JSAnnot
arb JSStatement
x3) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"for" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"const" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
v forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBinOp
i forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x2 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x3
(|>) PosAccum
pacc (JSForOf JSAnnot
af JSAnnot
alb JSExpression
x1s JSBinOp
i JSExpression
x2 JSAnnot
arb JSStatement
x3) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"for" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBinOp
i forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x2 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x3
(|>) PosAccum
pacc (JSForVarOf JSAnnot
af JSAnnot
alb JSAnnot
v JSExpression
x1 JSBinOp
i JSExpression
x2 JSAnnot
arb JSStatement
x3) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"for" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"var" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
v forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBinOp
i forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x2 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x3
(|>) PosAccum
pacc (JSAsyncFunction JSAnnot
aa JSAnnot
af JSIdent
n JSAnnot
alb JSCommaList JSExpression
x2s JSAnnot
arb JSBlock
x3 JSSemi
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
aa forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"async" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"function" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
n forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x2s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBlock
x3 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSFunction JSAnnot
af JSIdent
n JSAnnot
alb JSCommaList JSExpression
x2s JSAnnot
arb JSBlock
x3 JSSemi
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"function" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
n forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x2s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBlock
x3 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSGenerator JSAnnot
af JSAnnot
as JSIdent
n JSAnnot
alb JSCommaList JSExpression
x2s JSAnnot
arb JSBlock
x3 JSSemi
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"function" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
as forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"*" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
n forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x2s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBlock
x3 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSIf JSAnnot
annot JSAnnot
alb JSExpression
x1 JSAnnot
arb JSStatement
x2s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"if" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x2s
(|>) PosAccum
pacc (JSIfElse JSAnnot
annot JSAnnot
alb JSExpression
x1 JSAnnot
arb JSStatement
x2s JSAnnot
ea JSStatement
x3s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"if" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x2s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
ea forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"else" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x3s
(|>) PosAccum
pacc (JSLabelled JSIdent
l JSAnnot
c JSStatement
v) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
l forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
c forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
":" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
v
(|>) PosAccum
pacc (JSLet JSAnnot
annot JSCommaList JSExpression
xs JSSemi
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"let" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
xs forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSExpressionStatement JSExpression
l JSSemi
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
l forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSAssignStatement JSExpression
lhs JSAssignOp
op JSExpression
rhs JSSemi
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
lhs forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAssignOp
op forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
rhs forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSMethodCall JSExpression
e JSAnnot
lp JSCommaList JSExpression
a JSAnnot
rp JSSemi
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
e forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
lp forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
a forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
rp forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSReturn JSAnnot
annot Maybe JSExpression
me JSSemi
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"return" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> Maybe JSExpression
me forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSSwitch JSAnnot
annot JSAnnot
alp JSExpression
x JSAnnot
arp JSAnnot
alb [JSSwitchParts]
x2 JSAnnot
arb JSSemi
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"switch" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alp forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arp forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"{" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSSwitchParts]
x2 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"}" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSThrow JSAnnot
annot JSExpression
x JSSemi
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"throw" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSTry JSAnnot
annot JSBlock
tb [JSTryCatch]
tcs JSTryFinally
tf) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"try" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBlock
tb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSTryCatch]
tcs forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSTryFinally
tf
(|>) PosAccum
pacc (JSVariable JSAnnot
annot JSCommaList JSExpression
xs JSSemi
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"var" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
xs forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSWhile JSAnnot
annot JSAnnot
alp JSExpression
x1 JSAnnot
arp JSStatement
x2) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"while" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alp forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arp forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x2
(|>) PosAccum
pacc (JSWith JSAnnot
annot JSAnnot
alp JSExpression
x1 JSAnnot
arp JSStatement
x JSSemi
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"with" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alp forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arp forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
instance RenderJS [JSStatement] where
|> :: PosAccum -> [JSStatement] -> PosAccum
(|>) = forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' forall a. RenderJS a => PosAccum -> a -> PosAccum
(|>)
instance RenderJS [JSModuleItem] where
|> :: PosAccum -> [JSModuleItem] -> PosAccum
(|>) = forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' forall a. RenderJS a => PosAccum -> a -> PosAccum
(|>)
instance RenderJS JSModuleItem where
|> :: PosAccum -> JSModuleItem -> PosAccum
(|>) PosAccum
pacc (JSModuleImportDeclaration JSAnnot
annot JSImportDeclaration
decl) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"import" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSImportDeclaration
decl
(|>) PosAccum
pacc (JSModuleExportDeclaration JSAnnot
annot JSExportDeclaration
decl) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"export" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExportDeclaration
decl
(|>) PosAccum
pacc (JSModuleStatementListItem JSStatement
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
s
instance RenderJS JSBlock where
|> :: PosAccum -> JSBlock -> PosAccum
(|>) PosAccum
pacc (JSBlock JSAnnot
alb [JSStatement]
ss JSAnnot
arb) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"{" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSStatement]
ss forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"}"
instance RenderJS JSObjectProperty where
|> :: PosAccum -> JSObjectProperty -> PosAccum
(|>) PosAccum
pacc (JSPropertyNameandValue JSPropertyName
n JSAnnot
c [JSExpression]
vs) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSPropertyName
n forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
c forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
":" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSExpression]
vs
(|>) PosAccum
pacc (JSPropertyIdentRef JSAnnot
a String
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
s
(|>) PosAccum
pacc (JSObjectMethod JSMethodDefinition
m) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSMethodDefinition
m
instance RenderJS JSMethodDefinition where
|> :: PosAccum -> JSMethodDefinition -> PosAccum
(|>) PosAccum
pacc (JSMethodDefinition JSPropertyName
n JSAnnot
alp JSCommaList JSExpression
ps JSAnnot
arp JSBlock
b) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSPropertyName
n forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alp forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
ps forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arp forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBlock
b
(|>) PosAccum
pacc (JSGeneratorMethodDefinition JSAnnot
s JSPropertyName
n JSAnnot
alp JSCommaList JSExpression
ps JSAnnot
arp JSBlock
b) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"*" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSPropertyName
n forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alp forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
ps forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arp forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBlock
b
(|>) PosAccum
pacc (JSPropertyAccessor JSAccessor
s JSPropertyName
n JSAnnot
alp JSCommaList JSExpression
ps JSAnnot
arp JSBlock
b) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAccessor
s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSPropertyName
n forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alp forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
ps forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arp forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBlock
b
instance RenderJS JSPropertyName where
|> :: PosAccum -> JSPropertyName -> PosAccum
(|>) PosAccum
pacc (JSPropertyIdent JSAnnot
a String
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
s
(|>) PosAccum
pacc (JSPropertyString JSAnnot
a String
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
s
(|>) PosAccum
pacc (JSPropertyNumber JSAnnot
a String
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
s
(|>) PosAccum
pacc (JSPropertyComputed JSAnnot
lb JSExpression
x JSAnnot
rb) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
lb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"[" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
rb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"]"
instance RenderJS JSAccessor where
|> :: PosAccum -> JSAccessor -> PosAccum
(|>) PosAccum
pacc (JSAccessorGet JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"get"
(|>) PosAccum
pacc (JSAccessorSet JSAnnot
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"set"
instance RenderJS JSArrayElement where
|> :: PosAccum -> JSArrayElement -> PosAccum
(|>) PosAccum
pacc (JSArrayElement JSExpression
e) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
e
(|>) PosAccum
pacc (JSArrayComma JSAnnot
a) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
","
instance RenderJS [JSArrayElement] where
|> :: PosAccum -> [JSArrayElement] -> PosAccum
(|>) = forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' forall a. RenderJS a => PosAccum -> a -> PosAccum
(|>)
instance RenderJS JSImportDeclaration where
|> :: PosAccum -> JSImportDeclaration -> PosAccum
(|>) PosAccum
pacc (JSImportDeclaration JSImportClause
imp JSFromClause
from JSSemi
annot) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSImportClause
imp forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSFromClause
from forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
annot
(|>) PosAccum
pacc (JSImportDeclarationBare JSAnnot
annot String
m JSSemi
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
m forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
instance RenderJS JSImportClause where
|> :: PosAccum -> JSImportClause -> PosAccum
(|>) PosAccum
pacc (JSImportClauseDefault JSIdent
x) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
x
(|>) PosAccum
pacc (JSImportClauseNameSpace JSImportNameSpace
x) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSImportNameSpace
x
(|>) PosAccum
pacc (JSImportClauseNamed JSImportsNamed
x) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSImportsNamed
x
(|>) PosAccum
pacc (JSImportClauseDefaultNameSpace JSIdent
x1 JSAnnot
annot JSImportNameSpace
x2) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
x1 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"," forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSImportNameSpace
x2
(|>) PosAccum
pacc (JSImportClauseDefaultNamed JSIdent
x1 JSAnnot
annot JSImportsNamed
x2) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
x1 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"," forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSImportsNamed
x2
instance RenderJS JSFromClause where
|> :: PosAccum -> JSFromClause -> PosAccum
(|>) PosAccum
pacc (JSFromClause JSAnnot
from JSAnnot
annot String
m) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
from forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"from" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
m
instance RenderJS JSImportNameSpace where
|> :: PosAccum -> JSImportNameSpace -> PosAccum
(|>) PosAccum
pacc (JSImportNameSpace JSBinOp
star JSAnnot
annot JSIdent
x) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBinOp
star forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"as" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
x
instance RenderJS JSImportsNamed where
|> :: PosAccum -> JSImportsNamed -> PosAccum
(|>) PosAccum
pacc (JSImportsNamed JSAnnot
lb JSCommaList JSImportSpecifier
xs JSAnnot
rb) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
lb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"{" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSImportSpecifier
xs forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
rb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"}"
instance RenderJS JSImportSpecifier where
|> :: PosAccum -> JSImportSpecifier -> PosAccum
(|>) PosAccum
pacc (JSImportSpecifier JSIdent
x1) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
x1
(|>) PosAccum
pacc (JSImportSpecifierAs JSIdent
x1 JSAnnot
annot JSIdent
x2) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
x1 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"as" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
x2
instance RenderJS JSExportDeclaration where
|> :: PosAccum -> JSExportDeclaration -> PosAccum
(|>) PosAccum
pacc (JSExport JSStatement
x1 JSSemi
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x1 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSExportLocals JSExportClause
xs JSSemi
semi) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExportClause
xs forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
semi
(|>) PosAccum
pacc (JSExportFrom JSExportClause
xs JSFromClause
from JSSemi
semi) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExportClause
xs forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSFromClause
from forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
semi
instance RenderJS JSExportClause where
|> :: PosAccum -> JSExportClause -> PosAccum
(|>) PosAccum
pacc (JSExportClause JSAnnot
alb JSCommaList JSExportSpecifier
JSLNil JSAnnot
arb) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"{" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"}"
(|>) PosAccum
pacc (JSExportClause JSAnnot
alb JSCommaList JSExportSpecifier
s JSAnnot
arb) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"{" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExportSpecifier
s forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"}"
instance RenderJS JSExportSpecifier where
|> :: PosAccum -> JSExportSpecifier -> PosAccum
(|>) PosAccum
pacc (JSExportSpecifier JSIdent
i) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
i
(|>) PosAccum
pacc (JSExportSpecifierAs JSIdent
x1 JSAnnot
annot JSIdent
x2) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
x1 forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"as" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
x2
instance RenderJS a => RenderJS (JSCommaList a) where
|> :: PosAccum -> JSCommaList a -> PosAccum
(|>) PosAccum
pacc (JSLCons JSCommaList a
pl JSAnnot
a a
i) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList a
pl forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"," forall a. RenderJS a => PosAccum -> a -> PosAccum
|> a
i
(|>) PosAccum
pacc (JSLOne a
i) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> a
i
(|>) PosAccum
pacc JSCommaList a
JSLNil = PosAccum
pacc
instance RenderJS a => RenderJS (JSCommaTrailingList a) where
|> :: PosAccum -> JSCommaTrailingList a -> PosAccum
(|>) PosAccum
pacc (JSCTLComma JSCommaList a
xs JSAnnot
a) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList a
xs forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
","
(|>) PosAccum
pacc (JSCTLNone JSCommaList a
xs) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList a
xs
instance RenderJS JSIdent where
|> :: PosAccum -> JSIdent -> PosAccum
(|>) PosAccum
pacc (JSIdentName JSAnnot
a String
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
s
(|>) PosAccum
pacc JSIdent
JSIdentNone = PosAccum
pacc
instance RenderJS (Maybe JSExpression) where
|> :: PosAccum -> Maybe JSExpression -> PosAccum
(|>) PosAccum
pacc (Just JSExpression
e) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
e
(|>) PosAccum
pacc Maybe JSExpression
Nothing = PosAccum
pacc
instance RenderJS JSVarInitializer where
|> :: PosAccum -> JSVarInitializer -> PosAccum
(|>) PosAccum
pacc (JSVarInit JSAnnot
a JSExpression
x) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"=" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x
(|>) PosAccum
pacc JSVarInitializer
JSVarInitNone = PosAccum
pacc
instance RenderJS [JSTemplatePart] where
|> :: PosAccum -> [JSTemplatePart] -> PosAccum
(|>) = forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' forall a. RenderJS a => PosAccum -> a -> PosAccum
(|>)
instance RenderJS JSTemplatePart where
|> :: PosAccum -> JSTemplatePart -> PosAccum
(|>) PosAccum
pacc (JSTemplatePart JSExpression
e JSAnnot
a String
s) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
e forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
s
instance RenderJS JSClassHeritage where
|> :: PosAccum -> JSClassHeritage -> PosAccum
(|>) PosAccum
pacc (JSExtends JSAnnot
a JSExpression
e) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"extends" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
e
(|>) PosAccum
pacc JSClassHeritage
JSExtendsNone = PosAccum
pacc
instance RenderJS [JSClassElement] where
|> :: PosAccum -> [JSClassElement] -> PosAccum
(|>) = forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' forall a. RenderJS a => PosAccum -> a -> PosAccum
(|>)
instance RenderJS JSClassElement where
|> :: PosAccum -> JSClassElement -> PosAccum
(|>) PosAccum
pacc (JSClassInstanceMethod JSMethodDefinition
m) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSMethodDefinition
m
(|>) PosAccum
pacc (JSClassStaticMethod JSAnnot
a JSMethodDefinition
m) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"static" forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSMethodDefinition
m
(|>) PosAccum
pacc (JSClassSemi JSAnnot
a) = PosAccum
pacc forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
";"