{-# 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) Builder
forall a. Monoid a => a
mempty PosAccum -> JSAST -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAST
node
renderToString :: JSAST -> String
renderToString :: JSAST -> String
renderToString JSAST
js = [Word8] -> String
US.decode ([Word8] -> String) -> [Word8] -> String
forall a b. (a -> b) -> a -> b
$ ByteString -> [Word8]
LB.unpack (ByteString -> [Word8]) -> ByteString -> [Word8]
forall a b. (a -> b) -> a -> b
$ Builder -> ByteString
toLazyByteString (Builder -> ByteString) -> Builder -> ByteString
forall a b. (a -> b) -> a -> b
$ JSAST -> Builder
renderJS JSAST
js
renderToText :: JSAST -> Text
renderToText :: JSAST -> Text
renderToText = ByteString -> Text
LT.decodeUtf8 (ByteString -> Text) -> (JSAST -> ByteString) -> JSAST -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Builder -> ByteString
toLazyByteString (Builder -> ByteString)
-> (JSAST -> Builder) -> JSAST -> ByteString
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 PosAccum -> [JSStatement] -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSStatement]
xs PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a
(|>) PosAccum
pacc (JSAstModule [JSModuleItem]
xs JSAnnot
a) = PosAccum
pacc PosAccum -> [JSModuleItem] -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSModuleItem]
xs PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a
(|>) PosAccum
pacc (JSAstStatement JSStatement
s JSAnnot
a) = PosAccum
pacc PosAccum -> JSStatement -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
s PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a
(|>) PosAccum
pacc (JSAstExpression JSExpression
e JSAnnot
a) = PosAccum
pacc PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
e PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a
(|>) PosAccum
pacc (JSAstLiteral JSExpression
x JSAnnot
a) = PosAccum
pacc PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x PosAccum -> JSAnnot -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
s
(|>) PosAccum
pacc (JSDecimal JSAnnot
annot String
i) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
i
(|>) PosAccum
pacc (JSLiteral JSAnnot
annot String
l) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
l
(|>) PosAccum
pacc (JSHexInteger JSAnnot
annot String
i) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
i
(|>) PosAccum
pacc (JSOctal JSAnnot
annot String
i) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
i
(|>) PosAccum
pacc (JSStringLiteral JSAnnot
annot String
s) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
s
(|>) PosAccum
pacc (JSRegEx JSAnnot
annot String
s) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
s
(|>) PosAccum
pacc (JSArrayLiteral JSAnnot
als [JSArrayElement]
xs JSAnnot
ars) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
als PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"[" PosAccum -> [JSArrayElement] -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSArrayElement]
xs PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
ars PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"]"
(|>) PosAccum
pacc (JSArrowExpression JSArrowParameterList
xs JSAnnot
a JSStatement
x) = PosAccum
pacc PosAccum -> JSArrowParameterList -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSArrowParameterList
xs PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"=>" PosAccum -> JSStatement -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x
(|>) PosAccum
pacc (JSAssignExpression JSExpression
lhs JSAssignOp
op JSExpression
rhs) = PosAccum
pacc PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
lhs PosAccum -> JSAssignOp -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAssignOp
op PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
rhs
(|>) PosAccum
pacc (JSAwaitExpression JSAnnot
a JSExpression
e) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"await" PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
e
(|>) PosAccum
pacc (JSCallExpression JSExpression
ex JSAnnot
lb JSCommaList JSExpression
xs JSAnnot
rb) = PosAccum
pacc PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
ex PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
lb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
xs PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
rb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")"
(|>) PosAccum
pacc (JSCallExpressionDot JSExpression
ex JSAnnot
os JSExpression
xs) = PosAccum
pacc PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
ex PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
os PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"." PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
xs
(|>) PosAccum
pacc (JSCallExpressionSquare JSExpression
ex JSAnnot
als JSExpression
xs JSAnnot
ars) = PosAccum
pacc PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
ex PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
als PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"[" PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
xs PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
ars PosAccum -> String -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"class" PosAccum -> JSIdent -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
n PosAccum -> JSClassHeritage -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSClassHeritage
h PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
lb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"{" PosAccum -> [JSClassElement] -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSClassElement]
xs PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
rb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"}"
(|>) PosAccum
pacc (JSCommaExpression JSExpression
le JSAnnot
c JSExpression
re) = PosAccum
pacc PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
le PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
c PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"," PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
re
(|>) PosAccum
pacc (JSExpressionBinary JSExpression
lhs JSBinOp
op JSExpression
rhs) = PosAccum
pacc PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
lhs PosAccum -> JSBinOp -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBinOp
op PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
rhs
(|>) PosAccum
pacc (JSExpressionParen JSAnnot
alp JSExpression
e JSAnnot
arp) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alp PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
e PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arp PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")"
(|>) PosAccum
pacc (JSExpressionPostfix JSExpression
xs JSUnaryOp
op) = PosAccum
pacc PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
xs PosAccum -> JSUnaryOp -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSUnaryOp
op
(|>) PosAccum
pacc (JSExpressionTernary JSExpression
cond JSAnnot
h JSExpression
v1 JSAnnot
c JSExpression
v2) = PosAccum
pacc PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
cond PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
h PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"?" PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
v1 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
c PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
":" PosAccum -> JSExpression -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"function" PosAccum -> JSIdent -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
n PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
lb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x2s PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
rb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSBlock -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"function" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
s PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"*" PosAccum -> JSIdent -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
n PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
lb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x2s PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
rb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSBlock -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBlock
x3
(|>) PosAccum
pacc (JSMemberDot JSExpression
xs JSAnnot
dot JSExpression
n) = PosAccum
pacc PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
xs PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"." PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
dot PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
n
(|>) PosAccum
pacc (JSMemberExpression JSExpression
e JSAnnot
lb JSCommaList JSExpression
a JSAnnot
rb) = PosAccum
pacc PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
e PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
lb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
a PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
rb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")"
(|>) PosAccum
pacc (JSMemberNew JSAnnot
a JSExpression
lb JSAnnot
n JSCommaList JSExpression
rb JSAnnot
s) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"new" PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
lb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
n PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
rb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
s
(|>) PosAccum
pacc (JSMemberSquare JSExpression
xs JSAnnot
als JSExpression
e JSAnnot
ars) = PosAccum
pacc PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
xs PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
als PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"[" PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
e PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
ars PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"]"
(|>) PosAccum
pacc (JSNewExpression JSAnnot
n JSExpression
e) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
n PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"new" PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
e
(|>) PosAccum
pacc (JSObjectLiteral JSAnnot
alb JSObjectPropertyList
xs JSAnnot
arb) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"{" PosAccum -> JSObjectPropertyList -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSObjectPropertyList
xs PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"}"
(|>) PosAccum
pacc (JSTemplateLiteral Maybe JSExpression
t JSAnnot
a String
h [JSTemplatePart]
ps) = PosAccum
pacc PosAccum -> Maybe JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> Maybe JSExpression
t PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
h PosAccum -> [JSTemplatePart] -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSTemplatePart]
ps
(|>) PosAccum
pacc (JSUnaryExpression JSUnaryOp
op JSExpression
x) = PosAccum
pacc PosAccum -> JSUnaryOp -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSUnaryOp
op PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x
(|>) PosAccum
pacc (JSVarInitExpression JSExpression
x1 JSVarInitializer
x2) = PosAccum
pacc PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 PosAccum -> JSVarInitializer -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSVarInitializer
x2
(|>) PosAccum
pacc (JSYieldExpression JSAnnot
y Maybe JSExpression
x) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
y PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"yield" PosAccum -> Maybe JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> Maybe JSExpression
x
(|>) PosAccum
pacc (JSYieldFromExpression JSAnnot
y JSAnnot
s JSExpression
x) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
y PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"yield" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
s PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"*" PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x
(|>) PosAccum
pacc (JSSpreadExpression JSAnnot
a JSExpression
e) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"..." PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
e
instance RenderJS JSArrowParameterList where
|> :: PosAccum -> JSArrowParameterList -> PosAccum
(|>) PosAccum
pacc (JSUnparenthesizedArrowParameter JSIdent
p) = PosAccum
pacc PosAccum -> JSIdent -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
p
(|>) PosAccum
pacc (JSParenthesizedArrowParameterList JSAnnot
lb JSCommaList JSExpression
ps JSAnnot
rb) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
lb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
ps PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSAnnot -> PosAccum
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 PosAccum -> [CommentAnnotation] -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [CommentAnnotation]
cs PosAccum -> TokenPosn -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> TokenPosn
p
(|>) PosAccum
pacc JSAnnot
JSNoAnnot = PosAccum
pacc
(|>) PosAccum
pacc JSAnnot
JSAnnotSpace = PosAccum
pacc PosAccum -> String -> PosAccum
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 Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> String -> Builder
str String
s)
where
(Int
r',Int
c') = ((Int, Int) -> Char -> (Int, Int))
-> (Int, Int) -> String -> (Int, Int)
forall b a. (b -> a -> b) -> b -> [a] -> b
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' (\(Int
row,Int
col) Char
ch -> (Int, Int) -> Char -> (Int, Int)
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
rxa -> a -> a
forall a. Num a => a -> a -> a
+a
1,b
1)
go (a
rx,b
cx) Char
'\t' = (a
rx,b
cxb -> b -> b
forall a. Num a => a -> a -> a
+b
8)
go (a
rx,b
cx) Char
_ = (a
rx,b
cxb -> b -> b
forall 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 Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> Builder
bb')
where
(Builder
bbline,Int
ccur') = if Int
lcur Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< Int
ltgt then (String -> Builder
str (Int -> Char -> String
forall a. Int -> a -> [a]
replicate (Int
ltgt Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
lcur) Char
'\n'),Int
1) else (Builder
forall a. Monoid a => a
mempty,Int
ccur)
bbcol :: Builder
bbcol = if Int
ccur' Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< Int
ctgt then String -> Builder
str (Int -> Char -> String
forall a. Int -> a -> [a]
replicate (Int
ctgt Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
ccur') Char
' ') else Builder
forall a. Monoid a => a
mempty
bb' :: Builder
bb' = Builder
bbline Builder -> Builder -> Builder
forall a. Semigroup a => a -> a -> a
<> Builder
bbcol
lnew :: Int
lnew = if Int
lcur Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< Int
ltgt then Int
ltgt else Int
lcur
cnew :: Int
cnew = if Int
ccur' Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< Int
ctgt then Int
ctgt else Int
ccur'
instance RenderJS [CommentAnnotation] where
|> :: PosAccum -> [CommentAnnotation] -> PosAccum
(|>) = (PosAccum -> CommentAnnotation -> PosAccum)
-> PosAccum -> [CommentAnnotation] -> PosAccum
forall b a. (b -> a -> b) -> b -> [a] -> b
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' PosAccum -> CommentAnnotation -> PosAccum
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 PosAccum -> TokenPosn -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> TokenPosn
p PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
s
(|>) PosAccum
pacc (WhiteSpace TokenPosn
p String
s) = PosAccum
pacc PosAccum -> TokenPosn -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> TokenPosn
p PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
s
instance RenderJS [JSExpression] where
|> :: PosAccum -> [JSExpression] -> PosAccum
(|>) = (PosAccum -> JSExpression -> PosAccum)
-> PosAccum -> [JSExpression] -> PosAccum
forall b a. (b -> a -> b) -> b -> [a] -> b
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
(|>)
instance RenderJS JSBinOp where
|> :: PosAccum -> JSBinOp -> PosAccum
(|>) PosAccum
pacc (JSBinOpAnd JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"&&"
(|>) PosAccum
pacc (JSBinOpBitAnd JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"&"
(|>) PosAccum
pacc (JSBinOpBitOr JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"|"
(|>) PosAccum
pacc (JSBinOpBitXor JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"^"
(|>) PosAccum
pacc (JSBinOpDivide JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"/"
(|>) PosAccum
pacc (JSBinOpEq JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"=="
(|>) PosAccum
pacc (JSBinOpGe JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
">="
(|>) PosAccum
pacc (JSBinOpGt JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
">"
(|>) PosAccum
pacc (JSBinOpIn JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"in"
(|>) PosAccum
pacc (JSBinOpInstanceOf JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"instanceof"
(|>) PosAccum
pacc (JSBinOpLe JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"<="
(|>) PosAccum
pacc (JSBinOpLsh JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"<<"
(|>) PosAccum
pacc (JSBinOpLt JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"<"
(|>) PosAccum
pacc (JSBinOpMinus JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"-"
(|>) PosAccum
pacc (JSBinOpMod JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"%"
(|>) PosAccum
pacc (JSBinOpNeq JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"!="
(|>) PosAccum
pacc (JSBinOpOf JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"of"
(|>) PosAccum
pacc (JSBinOpOr JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"||"
(|>) PosAccum
pacc (JSBinOpPlus JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"+"
(|>) PosAccum
pacc (JSBinOpRsh JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
">>"
(|>) PosAccum
pacc (JSBinOpStrictEq JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"==="
(|>) PosAccum
pacc (JSBinOpStrictNeq JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"!=="
(|>) PosAccum
pacc (JSBinOpTimes JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"*"
(|>) PosAccum
pacc (JSBinOpUrsh JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
">>>"
instance RenderJS JSUnaryOp where
|> :: PosAccum -> JSUnaryOp -> PosAccum
(|>) PosAccum
pacc (JSUnaryOpDecr JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"--"
(|>) PosAccum
pacc (JSUnaryOpDelete JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"delete"
(|>) PosAccum
pacc (JSUnaryOpIncr JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"++"
(|>) PosAccum
pacc (JSUnaryOpMinus JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"-"
(|>) PosAccum
pacc (JSUnaryOpNot JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"!"
(|>) PosAccum
pacc (JSUnaryOpPlus JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"+"
(|>) PosAccum
pacc (JSUnaryOpTilde JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"~"
(|>) PosAccum
pacc (JSUnaryOpTypeof JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"typeof"
(|>) PosAccum
pacc (JSUnaryOpVoid JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"void"
instance RenderJS JSAssignOp where
|> :: PosAccum -> JSAssignOp -> PosAccum
(|>) PosAccum
pacc (JSAssign JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"="
(|>) PosAccum
pacc (JSTimesAssign JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"*="
(|>) PosAccum
pacc (JSDivideAssign JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"/="
(|>) PosAccum
pacc (JSModAssign JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"%="
(|>) PosAccum
pacc (JSPlusAssign JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"+="
(|>) PosAccum
pacc (JSMinusAssign JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"-="
(|>) PosAccum
pacc (JSLshAssign JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"<<="
(|>) PosAccum
pacc (JSRshAssign JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
">>="
(|>) PosAccum
pacc (JSUrshAssign JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
">>>="
(|>) PosAccum
pacc (JSBwAndAssign JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"&="
(|>) PosAccum
pacc (JSBwXorAssign JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"^="
(|>) PosAccum
pacc (JSBwOrAssign JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"|="
instance RenderJS JSSemi where
|> :: PosAccum -> JSSemi -> PosAccum
(|>) PosAccum
pacc (JSSemi JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
anc PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"catch" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSBlock -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
anc PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"catch" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
aif PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"if" PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
ex PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSBlock -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBlock
x3
instance RenderJS [JSTryCatch] where
|> :: PosAccum -> [JSTryCatch] -> PosAccum
(|>) = (PosAccum -> JSTryCatch -> PosAccum)
-> PosAccum -> [JSTryCatch] -> PosAccum
forall b a. (b -> a -> b) -> b -> [a] -> b
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' PosAccum -> JSTryCatch -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
(|>)
instance RenderJS JSTryFinally where
|> :: PosAccum -> JSTryFinally -> PosAccum
(|>) PosAccum
pacc (JSFinally JSAnnot
annot JSBlock
x) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"finally" PosAccum -> JSBlock -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"case" PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
c PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
":" PosAccum -> [JSStatement] -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSStatement]
x2s
(|>) PosAccum
pacc (JSDefault JSAnnot
annot JSAnnot
c [JSStatement]
xs) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"default" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
c PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
":" PosAccum -> [JSStatement] -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSStatement]
xs
instance RenderJS [JSSwitchParts] where
|> :: PosAccum -> [JSSwitchParts] -> PosAccum
(|>) = (PosAccum -> JSSwitchParts -> PosAccum)
-> PosAccum -> [JSSwitchParts] -> PosAccum
forall b a. (b -> a -> b) -> b -> [a] -> b
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' PosAccum -> JSSwitchParts -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"{" PosAccum -> [JSStatement] -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSStatement]
blk PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"}" PosAccum -> JSSemi -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSBreak JSAnnot
annot JSIdent
mi JSSemi
s) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"break" PosAccum -> JSIdent -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
mi PosAccum -> JSSemi -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"class" PosAccum -> JSIdent -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
n PosAccum -> JSClassHeritage -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSClassHeritage
h PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
lb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"{" PosAccum -> [JSClassElement] -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSClassElement]
xs PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
rb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"}" PosAccum -> JSSemi -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSContinue JSAnnot
annot JSIdent
mi JSSemi
s) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"continue" PosAccum -> JSIdent -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
mi PosAccum -> JSSemi -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSConstant JSAnnot
annot JSCommaList JSExpression
xs JSSemi
s) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"const" PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
xs PosAccum -> JSSemi -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
ad PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"do" PosAccum -> JSStatement -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x1 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
aw PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"while" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x2 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSSemi -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
x3
(|>) PosAccum
pacc (JSEmptyStatement JSAnnot
a) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a PosAccum -> String -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"for" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x1s PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
s1 PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
";" PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x2s PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
s2 PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
";" PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x3s PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSStatement -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"for" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1s PosAccum -> JSBinOp -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBinOp
i PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x2 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSStatement -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"for" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"var" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
v PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x1s PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
s1 PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
";" PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x2s PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
s2 PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
";" PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x3s PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSStatement -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"for" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"var" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
v PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 PosAccum -> JSBinOp -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBinOp
i PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x2 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSStatement -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"for" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"let" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
v PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x1s PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
s1 PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
";" PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x2s PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
s2 PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
";" PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x3s PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSStatement -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"for" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"let" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
v PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 PosAccum -> JSBinOp -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBinOp
i PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x2 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSStatement -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"for" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"let" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
v PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 PosAccum -> JSBinOp -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBinOp
i PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x2 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSStatement -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"for" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"const" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
v PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x1s PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
s1 PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
";" PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x2s PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
s2 PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
";" PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x3s PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSStatement -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"for" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"const" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
v PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 PosAccum -> JSBinOp -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBinOp
i PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x2 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSStatement -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"for" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"const" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
v PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 PosAccum -> JSBinOp -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBinOp
i PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x2 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSStatement -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"for" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1s PosAccum -> JSBinOp -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBinOp
i PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x2 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSStatement -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"for" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"var" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
v PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 PosAccum -> JSBinOp -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBinOp
i PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x2 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSStatement -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
aa PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"async" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"function" PosAccum -> JSIdent -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
n PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x2s PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSBlock -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBlock
x3 PosAccum -> JSSemi -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"function" PosAccum -> JSIdent -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
n PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x2s PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSBlock -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBlock
x3 PosAccum -> JSSemi -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
af PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"function" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
as PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"*" PosAccum -> JSIdent -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
n PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
x2s PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSBlock -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBlock
x3 PosAccum -> JSSemi -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSIf JSAnnot
annot JSAnnot
alb JSExpression
x1 JSAnnot
arb JSStatement
x2s) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"if" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSStatement -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"if" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSStatement -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x2s PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
ea PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"else" PosAccum -> JSStatement -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x3s
(|>) PosAccum
pacc (JSLabelled JSIdent
l JSAnnot
c JSStatement
v) = PosAccum
pacc PosAccum -> JSIdent -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
l PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
c PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
":" PosAccum -> JSStatement -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
v
(|>) PosAccum
pacc (JSLet JSAnnot
annot JSCommaList JSExpression
xs JSSemi
s) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"let" PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
xs PosAccum -> JSSemi -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSExpressionStatement JSExpression
l JSSemi
s) = PosAccum
pacc PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
l PosAccum -> JSSemi -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSAssignStatement JSExpression
lhs JSAssignOp
op JSExpression
rhs JSSemi
s) = PosAccum
pacc PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
lhs PosAccum -> JSAssignOp -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAssignOp
op PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
rhs PosAccum -> JSSemi -> PosAccum
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 PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
e PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
lp PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
a PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
rp PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSSemi -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSReturn JSAnnot
annot Maybe JSExpression
me JSSemi
s) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"return" PosAccum -> Maybe JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> Maybe JSExpression
me PosAccum -> JSSemi -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"switch" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alp PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arp PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"{" PosAccum -> [JSSwitchParts] -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSSwitchParts]
x2 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"}" PosAccum -> JSSemi -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSThrow JSAnnot
annot JSExpression
x JSSemi
s) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"throw" PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x PosAccum -> JSSemi -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSTry JSAnnot
annot JSBlock
tb [JSTryCatch]
tcs JSTryFinally
tf) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"try" PosAccum -> JSBlock -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBlock
tb PosAccum -> [JSTryCatch] -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSTryCatch]
tcs PosAccum -> JSTryFinally -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSTryFinally
tf
(|>) PosAccum
pacc (JSVariable JSAnnot
annot JSCommaList JSExpression
xs JSSemi
s) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"var" PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
xs PosAccum -> JSSemi -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSWhile JSAnnot
annot JSAnnot
alp JSExpression
x1 JSAnnot
arp JSStatement
x2) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"while" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alp PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arp PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSStatement -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"with" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alp PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x1 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arp PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSStatement -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x PosAccum -> JSSemi -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
instance RenderJS [JSStatement] where
|> :: PosAccum -> [JSStatement] -> PosAccum
(|>) = (PosAccum -> JSStatement -> PosAccum)
-> PosAccum -> [JSStatement] -> PosAccum
forall b a. (b -> a -> b) -> b -> [a] -> b
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' PosAccum -> JSStatement -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
(|>)
instance RenderJS [JSModuleItem] where
|> :: PosAccum -> [JSModuleItem] -> PosAccum
(|>) = (PosAccum -> JSModuleItem -> PosAccum)
-> PosAccum -> [JSModuleItem] -> PosAccum
forall b a. (b -> a -> b) -> b -> [a] -> b
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' PosAccum -> JSModuleItem -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
(|>)
instance RenderJS JSModuleItem where
|> :: PosAccum -> JSModuleItem -> PosAccum
(|>) PosAccum
pacc (JSModuleImportDeclaration JSAnnot
annot JSImportDeclaration
decl) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"import" PosAccum -> JSImportDeclaration -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSImportDeclaration
decl
(|>) PosAccum
pacc (JSModuleExportDeclaration JSAnnot
annot JSExportDeclaration
decl) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"export" PosAccum -> JSExportDeclaration -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExportDeclaration
decl
(|>) PosAccum
pacc (JSModuleStatementListItem JSStatement
s) = PosAccum
pacc PosAccum -> JSStatement -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"{" PosAccum -> [JSStatement] -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSStatement]
ss PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
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 PosAccum -> JSPropertyName -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSPropertyName
n PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
c PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
":" PosAccum -> [JSExpression] -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> [JSExpression]
vs
(|>) PosAccum
pacc (JSPropertyIdentRef JSAnnot
a String
s) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
s
(|>) PosAccum
pacc (JSObjectMethod JSMethodDefinition
m) = PosAccum
pacc PosAccum -> JSMethodDefinition -> PosAccum
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 PosAccum -> JSPropertyName -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSPropertyName
n PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alp PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
ps PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arp PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSBlock -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
s PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"*" PosAccum -> JSPropertyName -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSPropertyName
n PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alp PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
ps PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arp PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSBlock -> PosAccum
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 PosAccum -> JSAccessor -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAccessor
s PosAccum -> JSPropertyName -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSPropertyName
n PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alp PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"(" PosAccum -> JSCommaList JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExpression
ps PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arp PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
")" PosAccum -> JSBlock -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
s
(|>) PosAccum
pacc (JSPropertyString JSAnnot
a String
s) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
s
(|>) PosAccum
pacc (JSPropertyNumber JSAnnot
a String
s) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
s
(|>) PosAccum
pacc (JSPropertyComputed JSAnnot
lb JSExpression
x JSAnnot
rb) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
lb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"[" PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
rb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"]"
instance RenderJS JSAccessor where
|> :: PosAccum -> JSAccessor -> PosAccum
(|>) PosAccum
pacc (JSAccessorGet JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"get"
(|>) PosAccum
pacc (JSAccessorSet JSAnnot
annot) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"set"
instance RenderJS JSArrayElement where
|> :: PosAccum -> JSArrayElement -> PosAccum
(|>) PosAccum
pacc (JSArrayElement JSExpression
e) = PosAccum
pacc PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
e
(|>) PosAccum
pacc (JSArrayComma JSAnnot
a) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
","
instance RenderJS [JSArrayElement] where
|> :: PosAccum -> [JSArrayElement] -> PosAccum
(|>) = (PosAccum -> JSArrayElement -> PosAccum)
-> PosAccum -> [JSArrayElement] -> PosAccum
forall b a. (b -> a -> b) -> b -> [a] -> b
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' PosAccum -> JSArrayElement -> PosAccum
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 PosAccum -> JSImportClause -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSImportClause
imp PosAccum -> JSFromClause -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSFromClause
from PosAccum -> JSSemi -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
annot
(|>) PosAccum
pacc (JSImportDeclarationBare JSAnnot
annot String
m JSSemi
s) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
m PosAccum -> JSSemi -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
instance RenderJS JSImportClause where
|> :: PosAccum -> JSImportClause -> PosAccum
(|>) PosAccum
pacc (JSImportClauseDefault JSIdent
x) = PosAccum
pacc PosAccum -> JSIdent -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
x
(|>) PosAccum
pacc (JSImportClauseNameSpace JSImportNameSpace
x) = PosAccum
pacc PosAccum -> JSImportNameSpace -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSImportNameSpace
x
(|>) PosAccum
pacc (JSImportClauseNamed JSImportsNamed
x) = PosAccum
pacc PosAccum -> JSImportsNamed -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSImportsNamed
x
(|>) PosAccum
pacc (JSImportClauseDefaultNameSpace JSIdent
x1 JSAnnot
annot JSImportNameSpace
x2) = PosAccum
pacc PosAccum -> JSIdent -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
x1 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"," PosAccum -> JSImportNameSpace -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSImportNameSpace
x2
(|>) PosAccum
pacc (JSImportClauseDefaultNamed JSIdent
x1 JSAnnot
annot JSImportsNamed
x2) = PosAccum
pacc PosAccum -> JSIdent -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
x1 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"," PosAccum -> JSImportsNamed -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
from PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"from" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
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 PosAccum -> JSBinOp -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSBinOp
star PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"as" PosAccum -> JSIdent -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
lb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"{" PosAccum -> JSCommaList JSImportSpecifier -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSImportSpecifier
xs PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
rb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"}"
instance RenderJS JSImportSpecifier where
|> :: PosAccum -> JSImportSpecifier -> PosAccum
(|>) PosAccum
pacc (JSImportSpecifier JSIdent
x1) = PosAccum
pacc PosAccum -> JSIdent -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
x1
(|>) PosAccum
pacc (JSImportSpecifierAs JSIdent
x1 JSAnnot
annot JSIdent
x2) = PosAccum
pacc PosAccum -> JSIdent -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
x1 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"as" PosAccum -> JSIdent -> PosAccum
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 PosAccum -> JSStatement -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSStatement
x1 PosAccum -> JSSemi -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
s
(|>) PosAccum
pacc (JSExportLocals JSExportClause
xs JSSemi
semi) = PosAccum
pacc PosAccum -> JSExportClause -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExportClause
xs PosAccum -> JSSemi -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSSemi
semi
(|>) PosAccum
pacc (JSExportFrom JSExportClause
xs JSFromClause
from JSSemi
semi) = PosAccum
pacc PosAccum -> JSExportClause -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExportClause
xs PosAccum -> JSFromClause -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSFromClause
from PosAccum -> JSSemi -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"{" PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"}"
(|>) PosAccum
pacc (JSExportClause JSAnnot
alb JSCommaList JSExportSpecifier
s JSAnnot
arb) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
alb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"{" PosAccum -> JSCommaList JSExportSpecifier -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList JSExportSpecifier
s PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
arb PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"}"
instance RenderJS JSExportSpecifier where
|> :: PosAccum -> JSExportSpecifier -> PosAccum
(|>) PosAccum
pacc (JSExportSpecifier JSIdent
i) = PosAccum
pacc PosAccum -> JSIdent -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
i
(|>) PosAccum
pacc (JSExportSpecifierAs JSIdent
x1 JSAnnot
annot JSIdent
x2) = PosAccum
pacc PosAccum -> JSIdent -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSIdent
x1 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
annot PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"as" PosAccum -> JSIdent -> PosAccum
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 PosAccum -> JSCommaList a -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList a
pl PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"," PosAccum -> a -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> a
i
(|>) PosAccum
pacc (JSLOne a
i) = PosAccum
pacc PosAccum -> a -> PosAccum
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 PosAccum -> JSCommaList a -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSCommaList a
xs PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
","
(|>) PosAccum
pacc (JSCTLNone JSCommaList a
xs) = PosAccum
pacc PosAccum -> JSCommaList a -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a PosAccum -> String -> PosAccum
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 PosAccum -> JSExpression -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"=" PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
x
(|>) PosAccum
pacc JSVarInitializer
JSVarInitNone = PosAccum
pacc
instance RenderJS [JSTemplatePart] where
|> :: PosAccum -> [JSTemplatePart] -> PosAccum
(|>) = (PosAccum -> JSTemplatePart -> PosAccum)
-> PosAccum -> [JSTemplatePart] -> PosAccum
forall b a. (b -> a -> b) -> b -> [a] -> b
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' PosAccum -> JSTemplatePart -> PosAccum
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 PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
e PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a PosAccum -> String -> PosAccum
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 PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"extends" PosAccum -> JSExpression -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSExpression
e
(|>) PosAccum
pacc JSClassHeritage
JSExtendsNone = PosAccum
pacc
instance RenderJS [JSClassElement] where
|> :: PosAccum -> [JSClassElement] -> PosAccum
(|>) = (PosAccum -> JSClassElement -> PosAccum)
-> PosAccum -> [JSClassElement] -> PosAccum
forall b a. (b -> a -> b) -> b -> [a] -> b
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' PosAccum -> JSClassElement -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
(|>)
instance RenderJS JSClassElement where
|> :: PosAccum -> JSClassElement -> PosAccum
(|>) PosAccum
pacc (JSClassInstanceMethod JSMethodDefinition
m) = PosAccum
pacc PosAccum -> JSMethodDefinition -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSMethodDefinition
m
(|>) PosAccum
pacc (JSClassStaticMethod JSAnnot
a JSMethodDefinition
m) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
"static" PosAccum -> JSMethodDefinition -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSMethodDefinition
m
(|>) PosAccum
pacc (JSClassSemi JSAnnot
a) = PosAccum
pacc PosAccum -> JSAnnot -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> JSAnnot
a PosAccum -> String -> PosAccum
forall a. RenderJS a => PosAccum -> a -> PosAccum
|> String
";"