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