difftreelog
refactor support new jrsonnet features in rowan parser
in: master
43 files changed
crates/jrsonnet-rowan-parser/jsonnet.ungramdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/jsonnet.ungram
+++ b/crates/jrsonnet-rowan-parser/jsonnet.ungram
@@ -5,32 +5,47 @@
SourceFile = Expr
-ExprBinary =
- lhs:LhsExpr
- BinaryOperator
- rhs:Expr
-ExprUnary =
- UnaryOperator
- rhs:Expr
-ExprSlice =
- Expr
- SliceDesc
-ExprIndex =
- Expr
+SuffixIndex =
+ '?'?
'.'
index:Name
-ExprIndexExpr =
- base:LhsExpr
+SuffixIndexExpr =
+ ('?' '.')?
'['
index:Expr
']'
-ExprApply =
- Expr
+SuffixSlice =
+ SliceDesc
+SuffixApply =
ArgsDesc
'tailstrict'?
+Suffix =
+ SuffixIndex
+| SuffixIndexExpr
+| SuffixSlice
+| SuffixApply
+
+StmtLocal =
+ 'local'
+ (Bind (',' Bind)* ','?)
+ ';'
+StmtAssert =
+ Assertion
+ ';'
+Stmt =
+ StmtLocal
+| StmtAssert
+
+ExprBinary =
+ lhs:Expr
+ BinaryOperator
+ rhs:Expr
+ExprUnary =
+ UnaryOperator
+ rhs:Expr
ExprObjExtend =
- LhsExpr
Expr
+ Expr
ExprParened =
'('
Expr
@@ -79,29 +94,18 @@
ParamsDesc
')'
Expr
-ExprAssert =
- Assertion
- ';'
- Expr
ExprError =
'error'
Expr
-StmtLocal =
- 'local'
- (Bind (',' Bind)* ','?)
- ';'
-
Expr =
- StmtLocal*
+ Stmt*
ExprBase
+ Suffix*
+
ExprBase =
ExprBinary
| ExprUnary
-| ExprSlice
-| ExprIndex
-| ExprIndexExpr
-| ExprApply
| ExprObjExtend
| ExprParened
| ExprString
@@ -114,11 +118,10 @@
| ExprVar
| ExprIfThenElse
| ExprFunction
-| ExprAssert
| ExprError
BinaryOperator =
- '||' | '&&'
+ '||' | '??' | '&&'
| '|' | '^' | '&'
| '==' | '!=' | '<' | '>' | '<=' | '>=' | 'in'
| '<<' | '>>'
@@ -242,7 +245,7 @@
ForSpec =
'for'
- bind:Name
+ bind:Destruct
'in'
Expr
IfSpec =
@@ -278,7 +281,7 @@
Assertion =
'assert'
- condition:LhsExpr
+ condition:Expr
(
':'
message:Expr
@@ -336,7 +339,6 @@
// Aliases used to resolve node type conflicts
TrueExpr=Expr
FalseExpr=Expr
-LhsExpr=Expr
// Trivia - tokens which will be implicitly skipped for parser
Trivia =
crates/jrsonnet-rowan-parser/src/generated/nodes.rsdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/generated/nodes.rs
+++ b/crates/jrsonnet-rowan-parser/src/generated/nodes.rs
@@ -23,61 +23,70 @@
pub(crate) syntax: SyntaxNode,
}
impl Expr {
- pub fn stmt_locals(&self) -> AstChildren<StmtLocal> {
+ pub fn stmts(&self) -> AstChildren<Stmt> {
support::children(&self.syntax)
}
pub fn expr_base(&self) -> Option<ExprBase> {
support::child(&self.syntax)
}
+ pub fn suffixs(&self) -> AstChildren<Suffix> {
+ support::children(&self.syntax)
+ }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct ExprBinary {
+pub struct SuffixIndex {
pub(crate) syntax: SyntaxNode,
}
-impl ExprBinary {
- pub fn lhs(&self) -> Option<LhsExpr> {
- support::child(&self.syntax)
+impl SuffixIndex {
+ pub fn question_mark_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T![?])
}
- pub fn binary_operator(&self) -> Option<BinaryOperator> {
- support::token_child(&self.syntax)
+ pub fn dot_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T![.])
}
- pub fn rhs(&self) -> Option<Expr> {
+ pub fn index(&self) -> Option<Name> {
support::child(&self.syntax)
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct LhsExpr {
+pub struct Name {
pub(crate) syntax: SyntaxNode,
}
-impl LhsExpr {
- pub fn expr(&self) -> Option<Expr> {
- support::child(&self.syntax)
+impl Name {
+ pub fn ident_lit(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, IDENT)
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct ExprUnary {
+pub struct SuffixIndexExpr {
pub(crate) syntax: SyntaxNode,
}
-impl ExprUnary {
- pub fn unary_operator(&self) -> Option<UnaryOperator> {
- support::token_child(&self.syntax)
+impl SuffixIndexExpr {
+ pub fn question_mark_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T![?])
}
- pub fn rhs(&self) -> Option<Expr> {
+ pub fn dot_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T![.])
+ }
+ pub fn l_brack_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T!['['])
+ }
+ pub fn index(&self) -> Option<Expr> {
support::child(&self.syntax)
}
+ pub fn r_brack_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T![']'])
+ }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct ExprSlice {
+pub struct SuffixSlice {
pub(crate) syntax: SyntaxNode,
}
-impl ExprSlice {
- pub fn expr(&self) -> Option<Expr> {
- support::child(&self.syntax)
- }
+impl SuffixSlice {
pub fn slice_desc(&self) -> Option<SliceDesc> {
support::child(&self.syntax)
}
@@ -109,79 +118,108 @@
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct ExprIndex {
+pub struct SuffixApply {
pub(crate) syntax: SyntaxNode,
}
-impl ExprIndex {
- pub fn expr(&self) -> Option<Expr> {
+impl SuffixApply {
+ pub fn args_desc(&self) -> Option<ArgsDesc> {
support::child(&self.syntax)
}
- pub fn dot_token(&self) -> Option<SyntaxToken> {
- support::token(&self.syntax, T![.])
+ pub fn tailstrict_kw_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T![tailstrict])
+ }
+}
+
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
+pub struct ArgsDesc {
+ pub(crate) syntax: SyntaxNode,
+}
+impl ArgsDesc {
+ pub fn l_paren_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T!['('])
+ }
+ pub fn args(&self) -> AstChildren<Arg> {
+ support::children(&self.syntax)
}
- pub fn index(&self) -> Option<Name> {
- support::child(&self.syntax)
+ pub fn r_paren_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T![')'])
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct Name {
+pub struct StmtLocal {
pub(crate) syntax: SyntaxNode,
}
-impl Name {
- pub fn ident_lit(&self) -> Option<SyntaxToken> {
- support::token(&self.syntax, IDENT)
+impl StmtLocal {
+ pub fn local_kw_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T![local])
+ }
+ pub fn binds(&self) -> AstChildren<Bind> {
+ support::children(&self.syntax)
+ }
+ pub fn semi_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T![;])
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct ExprIndexExpr {
+pub struct StmtAssert {
pub(crate) syntax: SyntaxNode,
}
-impl ExprIndexExpr {
- pub fn base(&self) -> Option<LhsExpr> {
+impl StmtAssert {
+ pub fn assertion(&self) -> Option<Assertion> {
support::child(&self.syntax)
}
- pub fn l_brack_token(&self) -> Option<SyntaxToken> {
- support::token(&self.syntax, T!['['])
+ pub fn semi_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T![;])
}
- pub fn index(&self) -> Option<Expr> {
+}
+
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
+pub struct Assertion {
+ pub(crate) syntax: SyntaxNode,
+}
+impl Assertion {
+ pub fn assert_kw_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T![assert])
+ }
+ pub fn condition(&self) -> Option<Expr> {
support::child(&self.syntax)
}
- pub fn r_brack_token(&self) -> Option<SyntaxToken> {
- support::token(&self.syntax, T![']'])
+ pub fn colon_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T![:])
+ }
+ pub fn message(&self) -> Option<Expr> {
+ support::child(&self.syntax)
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct ExprApply {
+pub struct ExprBinary {
pub(crate) syntax: SyntaxNode,
}
-impl ExprApply {
- pub fn expr(&self) -> Option<Expr> {
+impl ExprBinary {
+ pub fn lhs(&self) -> Option<Expr> {
support::child(&self.syntax)
}
- pub fn args_desc(&self) -> Option<ArgsDesc> {
- support::child(&self.syntax)
+ pub fn binary_operator(&self) -> Option<BinaryOperator> {
+ support::token_child(&self.syntax)
}
- pub fn tailstrict_kw_token(&self) -> Option<SyntaxToken> {
- support::token(&self.syntax, T![tailstrict])
+ pub fn rhs(&self) -> Option<Expr> {
+ support::child(&self.syntax)
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct ArgsDesc {
+pub struct ExprUnary {
pub(crate) syntax: SyntaxNode,
}
-impl ArgsDesc {
- pub fn l_paren_token(&self) -> Option<SyntaxToken> {
- support::token(&self.syntax, T!['('])
- }
- pub fn args(&self) -> AstChildren<Arg> {
- support::children(&self.syntax)
+impl ExprUnary {
+ pub fn unary_operator(&self) -> Option<UnaryOperator> {
+ support::token_child(&self.syntax)
}
- pub fn r_paren_token(&self) -> Option<SyntaxToken> {
- support::token(&self.syntax, T![')'])
+ pub fn rhs(&self) -> Option<Expr> {
+ support::child(&self.syntax)
}
}
@@ -190,9 +228,6 @@
pub(crate) syntax: SyntaxNode,
}
impl ExprObjExtend {
- pub fn lhs_expr(&self) -> Option<LhsExpr> {
- support::child(&self.syntax)
- }
pub fn expr(&self) -> Option<Expr> {
support::child(&self.syntax)
}
@@ -395,45 +430,10 @@
}
pub fn r_paren_token(&self) -> Option<SyntaxToken> {
support::token(&self.syntax, T![')'])
- }
-}
-
-#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct ExprAssert {
- pub(crate) syntax: SyntaxNode,
-}
-impl ExprAssert {
- pub fn assertion(&self) -> Option<Assertion> {
- support::child(&self.syntax)
- }
- pub fn semi_token(&self) -> Option<SyntaxToken> {
- support::token(&self.syntax, T![;])
- }
- pub fn expr(&self) -> Option<Expr> {
- support::child(&self.syntax)
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct Assertion {
- pub(crate) syntax: SyntaxNode,
-}
-impl Assertion {
- pub fn assert_kw_token(&self) -> Option<SyntaxToken> {
- support::token(&self.syntax, T![assert])
- }
- pub fn condition(&self) -> Option<LhsExpr> {
- support::child(&self.syntax)
- }
- pub fn colon_token(&self) -> Option<SyntaxToken> {
- support::token(&self.syntax, T![:])
- }
- pub fn message(&self) -> Option<Expr> {
- support::child(&self.syntax)
- }
-}
-
-#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ExprError {
pub(crate) syntax: SyntaxNode,
}
@@ -447,22 +447,6 @@
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct StmtLocal {
- pub(crate) syntax: SyntaxNode,
-}
-impl StmtLocal {
- pub fn local_kw_token(&self) -> Option<SyntaxToken> {
- support::token(&self.syntax, T![local])
- }
- pub fn binds(&self) -> AstChildren<Bind> {
- support::children(&self.syntax)
- }
- pub fn semi_token(&self) -> Option<SyntaxToken> {
- support::token(&self.syntax, T![;])
- }
-}
-
-#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct SliceDescEnd {
pub(crate) syntax: SyntaxNode,
}
@@ -641,7 +625,7 @@
pub fn for_kw_token(&self) -> Option<SyntaxToken> {
support::token(&self.syntax, T![for])
}
- pub fn bind(&self) -> Option<Name> {
+ pub fn bind(&self) -> Option<Destruct> {
support::child(&self.syntax)
}
pub fn in_kw_token(&self) -> Option<SyntaxToken> {
@@ -820,6 +804,26 @@
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
+pub enum Suffix {
+ SuffixIndex(SuffixIndex),
+ SuffixIndexExpr(SuffixIndexExpr),
+ SuffixSlice(SuffixSlice),
+ SuffixApply(SuffixApply),
+}
+
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
+pub enum Bind {
+ BindDestruct(BindDestruct),
+ BindFunction(BindFunction),
+}
+
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
+pub enum Stmt {
+ StmtLocal(StmtLocal),
+ StmtAssert(StmtAssert),
+}
+
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum ObjBody {
ObjBodyComp(ObjBodyComp),
ObjBodyMemberList(ObjBodyMemberList),
@@ -829,22 +833,12 @@
pub enum CompSpec {
ForSpec(ForSpec),
IfSpec(IfSpec),
-}
-
-#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub enum Bind {
- BindDestruct(BindDestruct),
- BindFunction(BindFunction),
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum ExprBase {
ExprBinary(ExprBinary),
ExprUnary(ExprUnary),
- ExprSlice(ExprSlice),
- ExprIndex(ExprIndex),
- ExprIndexExpr(ExprIndexExpr),
- ExprApply(ExprApply),
ExprObjExtend(ExprObjExtend),
ExprParened(ExprParened),
ExprString(ExprString),
@@ -857,7 +851,6 @@
ExprVar(ExprVar),
ExprIfThenElse(ExprIfThenElse),
ExprFunction(ExprFunction),
- ExprAssert(ExprAssert),
ExprError(ExprError),
}
@@ -905,6 +898,7 @@
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum BinaryOperatorKind {
Or,
+ NullCoaelse,
And,
BitOr,
BitXor,
@@ -1078,9 +1072,9 @@
&self.syntax
}
}
-impl AstNode for ExprBinary {
+impl AstNode for SuffixIndex {
fn can_cast(kind: SyntaxKind) -> bool {
- kind == EXPR_BINARY
+ kind == SUFFIX_INDEX
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
@@ -1093,9 +1087,9 @@
&self.syntax
}
}
-impl AstNode for LhsExpr {
+impl AstNode for Name {
fn can_cast(kind: SyntaxKind) -> bool {
- kind == LHS_EXPR
+ kind == NAME
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
@@ -1108,9 +1102,9 @@
&self.syntax
}
}
-impl AstNode for ExprUnary {
+impl AstNode for SuffixIndexExpr {
fn can_cast(kind: SyntaxKind) -> bool {
- kind == EXPR_UNARY
+ kind == SUFFIX_INDEX_EXPR
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
@@ -1123,9 +1117,9 @@
&self.syntax
}
}
-impl AstNode for ExprSlice {
+impl AstNode for SuffixSlice {
fn can_cast(kind: SyntaxKind) -> bool {
- kind == EXPR_SLICE
+ kind == SUFFIX_SLICE
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
@@ -1153,9 +1147,9 @@
&self.syntax
}
}
-impl AstNode for ExprIndex {
+impl AstNode for SuffixApply {
fn can_cast(kind: SyntaxKind) -> bool {
- kind == EXPR_INDEX
+ kind == SUFFIX_APPLY
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
@@ -1168,9 +1162,9 @@
&self.syntax
}
}
-impl AstNode for Name {
+impl AstNode for ArgsDesc {
fn can_cast(kind: SyntaxKind) -> bool {
- kind == NAME
+ kind == ARGS_DESC
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
@@ -1183,9 +1177,9 @@
&self.syntax
}
}
-impl AstNode for ExprIndexExpr {
+impl AstNode for StmtLocal {
fn can_cast(kind: SyntaxKind) -> bool {
- kind == EXPR_INDEX_EXPR
+ kind == STMT_LOCAL
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
@@ -1198,9 +1192,39 @@
&self.syntax
}
}
-impl AstNode for ExprApply {
+impl AstNode for StmtAssert {
+ fn can_cast(kind: SyntaxKind) -> bool {
+ kind == STMT_ASSERT
+ }
+ fn cast(syntax: SyntaxNode) -> Option<Self> {
+ if Self::can_cast(syntax.kind()) {
+ Some(Self { syntax })
+ } else {
+ None
+ }
+ }
+ fn syntax(&self) -> &SyntaxNode {
+ &self.syntax
+ }
+}
+impl AstNode for Assertion {
+ fn can_cast(kind: SyntaxKind) -> bool {
+ kind == ASSERTION
+ }
+ fn cast(syntax: SyntaxNode) -> Option<Self> {
+ if Self::can_cast(syntax.kind()) {
+ Some(Self { syntax })
+ } else {
+ None
+ }
+ }
+ fn syntax(&self) -> &SyntaxNode {
+ &self.syntax
+ }
+}
+impl AstNode for ExprBinary {
fn can_cast(kind: SyntaxKind) -> bool {
- kind == EXPR_APPLY
+ kind == EXPR_BINARY
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
@@ -1213,9 +1237,9 @@
&self.syntax
}
}
-impl AstNode for ArgsDesc {
+impl AstNode for ExprUnary {
fn can_cast(kind: SyntaxKind) -> bool {
- kind == ARGS_DESC
+ kind == EXPR_UNARY
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
@@ -1441,21 +1465,6 @@
impl AstNode for ParamsDesc {
fn can_cast(kind: SyntaxKind) -> bool {
kind == PARAMS_DESC
- }
- fn cast(syntax: SyntaxNode) -> Option<Self> {
- if Self::can_cast(syntax.kind()) {
- Some(Self { syntax })
- } else {
- None
- }
- }
- fn syntax(&self) -> &SyntaxNode {
- &self.syntax
- }
-}
-impl AstNode for ExprAssert {
- fn can_cast(kind: SyntaxKind) -> bool {
- kind == EXPR_ASSERT
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
@@ -1468,21 +1477,6 @@
&self.syntax
}
}
-impl AstNode for Assertion {
- fn can_cast(kind: SyntaxKind) -> bool {
- kind == ASSERTION
- }
- fn cast(syntax: SyntaxNode) -> Option<Self> {
- if Self::can_cast(syntax.kind()) {
- Some(Self { syntax })
- } else {
- None
- }
- }
- fn syntax(&self) -> &SyntaxNode {
- &self.syntax
- }
-}
impl AstNode for ExprError {
fn can_cast(kind: SyntaxKind) -> bool {
kind == EXPR_ERROR
@@ -1498,21 +1492,6 @@
&self.syntax
}
}
-impl AstNode for StmtLocal {
- fn can_cast(kind: SyntaxKind) -> bool {
- kind == STMT_LOCAL
- }
- fn cast(syntax: SyntaxNode) -> Option<Self> {
- if Self::can_cast(syntax.kind()) {
- Some(Self { syntax })
- } else {
- None
- }
- }
- fn syntax(&self) -> &SyntaxNode {
- &self.syntax
- }
-}
impl AstNode for SliceDescEnd {
fn can_cast(kind: SyntaxKind) -> bool {
kind == SLICE_DESC_END
@@ -1873,6 +1852,116 @@
&self.syntax
}
}
+impl From<SuffixIndex> for Suffix {
+ fn from(node: SuffixIndex) -> Suffix {
+ Suffix::SuffixIndex(node)
+ }
+}
+impl From<SuffixIndexExpr> for Suffix {
+ fn from(node: SuffixIndexExpr) -> Suffix {
+ Suffix::SuffixIndexExpr(node)
+ }
+}
+impl From<SuffixSlice> for Suffix {
+ fn from(node: SuffixSlice) -> Suffix {
+ Suffix::SuffixSlice(node)
+ }
+}
+impl From<SuffixApply> for Suffix {
+ fn from(node: SuffixApply) -> Suffix {
+ Suffix::SuffixApply(node)
+ }
+}
+impl AstNode for Suffix {
+ fn can_cast(kind: SyntaxKind) -> bool {
+ match kind {
+ SUFFIX_INDEX | SUFFIX_INDEX_EXPR | SUFFIX_SLICE | SUFFIX_APPLY => true,
+ _ => false,
+ }
+ }
+ fn cast(syntax: SyntaxNode) -> Option<Self> {
+ let res = match syntax.kind() {
+ SUFFIX_INDEX => Suffix::SuffixIndex(SuffixIndex { syntax }),
+ SUFFIX_INDEX_EXPR => Suffix::SuffixIndexExpr(SuffixIndexExpr { syntax }),
+ SUFFIX_SLICE => Suffix::SuffixSlice(SuffixSlice { syntax }),
+ SUFFIX_APPLY => Suffix::SuffixApply(SuffixApply { syntax }),
+ _ => return None,
+ };
+ Some(res)
+ }
+ fn syntax(&self) -> &SyntaxNode {
+ match self {
+ Suffix::SuffixIndex(it) => &it.syntax,
+ Suffix::SuffixIndexExpr(it) => &it.syntax,
+ Suffix::SuffixSlice(it) => &it.syntax,
+ Suffix::SuffixApply(it) => &it.syntax,
+ }
+ }
+}
+impl From<BindDestruct> for Bind {
+ fn from(node: BindDestruct) -> Bind {
+ Bind::BindDestruct(node)
+ }
+}
+impl From<BindFunction> for Bind {
+ fn from(node: BindFunction) -> Bind {
+ Bind::BindFunction(node)
+ }
+}
+impl AstNode for Bind {
+ fn can_cast(kind: SyntaxKind) -> bool {
+ match kind {
+ BIND_DESTRUCT | BIND_FUNCTION => true,
+ _ => false,
+ }
+ }
+ fn cast(syntax: SyntaxNode) -> Option<Self> {
+ let res = match syntax.kind() {
+ BIND_DESTRUCT => Bind::BindDestruct(BindDestruct { syntax }),
+ BIND_FUNCTION => Bind::BindFunction(BindFunction { syntax }),
+ _ => return None,
+ };
+ Some(res)
+ }
+ fn syntax(&self) -> &SyntaxNode {
+ match self {
+ Bind::BindDestruct(it) => &it.syntax,
+ Bind::BindFunction(it) => &it.syntax,
+ }
+ }
+}
+impl From<StmtLocal> for Stmt {
+ fn from(node: StmtLocal) -> Stmt {
+ Stmt::StmtLocal(node)
+ }
+}
+impl From<StmtAssert> for Stmt {
+ fn from(node: StmtAssert) -> Stmt {
+ Stmt::StmtAssert(node)
+ }
+}
+impl AstNode for Stmt {
+ fn can_cast(kind: SyntaxKind) -> bool {
+ match kind {
+ STMT_LOCAL | STMT_ASSERT => true,
+ _ => false,
+ }
+ }
+ fn cast(syntax: SyntaxNode) -> Option<Self> {
+ let res = match syntax.kind() {
+ STMT_LOCAL => Stmt::StmtLocal(StmtLocal { syntax }),
+ STMT_ASSERT => Stmt::StmtAssert(StmtAssert { syntax }),
+ _ => return None,
+ };
+ Some(res)
+ }
+ fn syntax(&self) -> &SyntaxNode {
+ match self {
+ Stmt::StmtLocal(it) => &it.syntax,
+ Stmt::StmtAssert(it) => &it.syntax,
+ }
+ }
+}
impl From<ObjBodyComp> for ObjBody {
fn from(node: ObjBodyComp) -> ObjBody {
ObjBody::ObjBodyComp(node)
@@ -1935,40 +2024,8 @@
CompSpec::ForSpec(it) => &it.syntax,
CompSpec::IfSpec(it) => &it.syntax,
}
- }
-}
-impl From<BindDestruct> for Bind {
- fn from(node: BindDestruct) -> Bind {
- Bind::BindDestruct(node)
- }
-}
-impl From<BindFunction> for Bind {
- fn from(node: BindFunction) -> Bind {
- Bind::BindFunction(node)
}
}
-impl AstNode for Bind {
- fn can_cast(kind: SyntaxKind) -> bool {
- match kind {
- BIND_DESTRUCT | BIND_FUNCTION => true,
- _ => false,
- }
- }
- fn cast(syntax: SyntaxNode) -> Option<Self> {
- let res = match syntax.kind() {
- BIND_DESTRUCT => Bind::BindDestruct(BindDestruct { syntax }),
- BIND_FUNCTION => Bind::BindFunction(BindFunction { syntax }),
- _ => return None,
- };
- Some(res)
- }
- fn syntax(&self) -> &SyntaxNode {
- match self {
- Bind::BindDestruct(it) => &it.syntax,
- Bind::BindFunction(it) => &it.syntax,
- }
- }
-}
impl From<ExprBinary> for ExprBase {
fn from(node: ExprBinary) -> ExprBase {
ExprBase::ExprBinary(node)
@@ -1977,28 +2034,8 @@
impl From<ExprUnary> for ExprBase {
fn from(node: ExprUnary) -> ExprBase {
ExprBase::ExprUnary(node)
- }
-}
-impl From<ExprSlice> for ExprBase {
- fn from(node: ExprSlice) -> ExprBase {
- ExprBase::ExprSlice(node)
}
}
-impl From<ExprIndex> for ExprBase {
- fn from(node: ExprIndex) -> ExprBase {
- ExprBase::ExprIndex(node)
- }
-}
-impl From<ExprIndexExpr> for ExprBase {
- fn from(node: ExprIndexExpr) -> ExprBase {
- ExprBase::ExprIndexExpr(node)
- }
-}
-impl From<ExprApply> for ExprBase {
- fn from(node: ExprApply) -> ExprBase {
- ExprBase::ExprApply(node)
- }
-}
impl From<ExprObjExtend> for ExprBase {
fn from(node: ExprObjExtend) -> ExprBase {
ExprBase::ExprObjExtend(node)
@@ -2057,11 +2094,6 @@
impl From<ExprFunction> for ExprBase {
fn from(node: ExprFunction) -> ExprBase {
ExprBase::ExprFunction(node)
- }
-}
-impl From<ExprAssert> for ExprBase {
- fn from(node: ExprAssert) -> ExprBase {
- ExprBase::ExprAssert(node)
}
}
impl From<ExprError> for ExprBase {
@@ -2072,10 +2104,9 @@
impl AstNode for ExprBase {
fn can_cast(kind: SyntaxKind) -> bool {
match kind {
- EXPR_BINARY | EXPR_UNARY | EXPR_SLICE | EXPR_INDEX | EXPR_INDEX_EXPR | EXPR_APPLY
- | EXPR_OBJ_EXTEND | EXPR_PARENED | EXPR_STRING | EXPR_NUMBER | EXPR_LITERAL
- | EXPR_ARRAY | EXPR_OBJECT | EXPR_ARRAY_COMP | EXPR_IMPORT | EXPR_VAR
- | EXPR_IF_THEN_ELSE | EXPR_FUNCTION | EXPR_ASSERT | EXPR_ERROR => true,
+ EXPR_BINARY | EXPR_UNARY | EXPR_OBJ_EXTEND | EXPR_PARENED | EXPR_STRING
+ | EXPR_NUMBER | EXPR_LITERAL | EXPR_ARRAY | EXPR_OBJECT | EXPR_ARRAY_COMP
+ | EXPR_IMPORT | EXPR_VAR | EXPR_IF_THEN_ELSE | EXPR_FUNCTION | EXPR_ERROR => true,
_ => false,
}
}
@@ -2083,10 +2114,6 @@
let res = match syntax.kind() {
EXPR_BINARY => ExprBase::ExprBinary(ExprBinary { syntax }),
EXPR_UNARY => ExprBase::ExprUnary(ExprUnary { syntax }),
- EXPR_SLICE => ExprBase::ExprSlice(ExprSlice { syntax }),
- EXPR_INDEX => ExprBase::ExprIndex(ExprIndex { syntax }),
- EXPR_INDEX_EXPR => ExprBase::ExprIndexExpr(ExprIndexExpr { syntax }),
- EXPR_APPLY => ExprBase::ExprApply(ExprApply { syntax }),
EXPR_OBJ_EXTEND => ExprBase::ExprObjExtend(ExprObjExtend { syntax }),
EXPR_PARENED => ExprBase::ExprParened(ExprParened { syntax }),
EXPR_STRING => ExprBase::ExprString(ExprString { syntax }),
@@ -2099,7 +2126,6 @@
EXPR_VAR => ExprBase::ExprVar(ExprVar { syntax }),
EXPR_IF_THEN_ELSE => ExprBase::ExprIfThenElse(ExprIfThenElse { syntax }),
EXPR_FUNCTION => ExprBase::ExprFunction(ExprFunction { syntax }),
- EXPR_ASSERT => ExprBase::ExprAssert(ExprAssert { syntax }),
EXPR_ERROR => ExprBase::ExprError(ExprError { syntax }),
_ => return None,
};
@@ -2109,10 +2135,6 @@
match self {
ExprBase::ExprBinary(it) => &it.syntax,
ExprBase::ExprUnary(it) => &it.syntax,
- ExprBase::ExprSlice(it) => &it.syntax,
- ExprBase::ExprIndex(it) => &it.syntax,
- ExprBase::ExprIndexExpr(it) => &it.syntax,
- ExprBase::ExprApply(it) => &it.syntax,
ExprBase::ExprObjExtend(it) => &it.syntax,
ExprBase::ExprParened(it) => &it.syntax,
ExprBase::ExprString(it) => &it.syntax,
@@ -2125,7 +2147,6 @@
ExprBase::ExprVar(it) => &it.syntax,
ExprBase::ExprIfThenElse(it) => &it.syntax,
ExprBase::ExprFunction(it) => &it.syntax,
- ExprBase::ExprAssert(it) => &it.syntax,
ExprBase::ExprError(it) => &it.syntax,
}
}
@@ -2344,14 +2365,16 @@
impl BinaryOperatorKind {
fn can_cast(kind: SyntaxKind) -> bool {
match kind {
- OR | AND | BIT_OR | BIT_XOR | BIT_AND | EQ | NE | LT | GT | LE | GE | IN_KW | LHS
- | RHS | PLUS | MINUS | MUL | DIV | MODULO | META_OBJECT_APPLY | ERROR_NO_OPERATOR => true,
+ OR | NULL_COAELSE | AND | BIT_OR | BIT_XOR | BIT_AND | EQ | NE | LT | GT | LE | GE
+ | IN_KW | LHS | RHS | PLUS | MINUS | MUL | DIV | MODULO | META_OBJECT_APPLY
+ | ERROR_NO_OPERATOR => true,
_ => false,
}
}
pub fn cast(kind: SyntaxKind) -> Option<Self> {
let res = match kind {
OR => Self::Or,
+ NULL_COAELSE => Self::NullCoaelse,
AND => Self::And,
BIT_OR => Self::BitOr,
BIT_XOR => Self::BitXor,
@@ -2742,21 +2765,31 @@
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for ObjBody {
+impl std::fmt::Display for Suffix {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ std::fmt::Display::fmt(self.syntax(), f)
+ }
+}
+impl std::fmt::Display for Bind {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for CompSpec {
+impl std::fmt::Display for Stmt {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for Bind {
+impl std::fmt::Display for ObjBody {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
+impl std::fmt::Display for CompSpec {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ std::fmt::Display::fmt(self.syntax(), f)
+ }
+}
impl std::fmt::Display for ExprBase {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
@@ -2797,22 +2830,22 @@
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for ExprBinary {
+impl std::fmt::Display for SuffixIndex {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for LhsExpr {
+impl std::fmt::Display for Name {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for ExprUnary {
+impl std::fmt::Display for SuffixIndexExpr {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for ExprSlice {
+impl std::fmt::Display for SuffixSlice {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
@@ -2822,31 +2855,41 @@
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for ExprIndex {
+impl std::fmt::Display for SuffixApply {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for Name {
+impl std::fmt::Display for ArgsDesc {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for ExprIndexExpr {
+impl std::fmt::Display for StmtLocal {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for ExprApply {
+impl std::fmt::Display for StmtAssert {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for ArgsDesc {
+impl std::fmt::Display for Assertion {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
+impl std::fmt::Display for ExprBinary {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ std::fmt::Display::fmt(self.syntax(), f)
+ }
+}
+impl std::fmt::Display for ExprUnary {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ std::fmt::Display::fmt(self.syntax(), f)
+ }
+}
impl std::fmt::Display for ExprObjExtend {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
@@ -2918,26 +2961,11 @@
}
}
impl std::fmt::Display for ParamsDesc {
- fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
- std::fmt::Display::fmt(self.syntax(), f)
- }
-}
-impl std::fmt::Display for ExprAssert {
- fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
- std::fmt::Display::fmt(self.syntax(), f)
- }
-}
-impl std::fmt::Display for Assertion {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
impl std::fmt::Display for ExprError {
- fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
- std::fmt::Display::fmt(self.syntax(), f)
- }
-}
-impl std::fmt::Display for StmtLocal {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
crates/jrsonnet-rowan-parser/src/generated/syntax_kinds.rsdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/generated/syntax_kinds.rs
+++ b/crates/jrsonnet-rowan-parser/src/generated/syntax_kinds.rs
@@ -19,6 +19,8 @@
EOF,
#[token("||")]
OR,
+ #[token("??")]
+ NULL_COAELSE,
#[token("&&")]
AND,
#[token("|")]
@@ -137,6 +139,8 @@
ERROR_COMMENT_UNTERMINATED,
#[token("tailstrict")]
TAILSTRICT_KW,
+ #[token("local")]
+ LOCAL_KW,
#[token("importstr")]
IMPORTSTR_KW,
#[token("importbin")]
@@ -153,8 +157,6 @@
FUNCTION_KW,
#[token("error")]
ERROR_KW,
- #[token("local")]
- LOCAL_KW,
#[token("in")]
IN_KW,
META_OBJECT_APPLY,
@@ -181,16 +183,18 @@
LEXING_ERROR,
SOURCE_FILE,
EXPR,
- EXPR_BINARY,
- LHS_EXPR,
- EXPR_UNARY,
- EXPR_SLICE,
- SLICE_DESC,
- EXPR_INDEX,
+ SUFFIX_INDEX,
NAME,
- EXPR_INDEX_EXPR,
- EXPR_APPLY,
+ SUFFIX_INDEX_EXPR,
+ SUFFIX_SLICE,
+ SLICE_DESC,
+ SUFFIX_APPLY,
ARGS_DESC,
+ STMT_LOCAL,
+ STMT_ASSERT,
+ ASSERTION,
+ EXPR_BINARY,
+ EXPR_UNARY,
EXPR_OBJ_EXTEND,
EXPR_PARENED,
EXPR_LITERAL,
@@ -206,10 +210,7 @@
FALSE_EXPR,
EXPR_FUNCTION,
PARAMS_DESC,
- EXPR_ASSERT,
- ASSERTION,
EXPR_ERROR,
- STMT_LOCAL,
SLICE_DESC_END,
SLICE_DESC_STEP,
ARG,
@@ -234,9 +235,11 @@
DESTRUCT_OBJECT_FIELD,
DESTRUCT_REST,
DESTRUCT_ARRAY_ELEMENT,
+ SUFFIX,
+ BIND,
+ STMT,
OBJ_BODY,
COMP_SPEC,
- BIND,
EXPR_BASE,
MEMBER_COMP,
MEMBER,
@@ -259,21 +262,21 @@
impl SyntaxKind {
pub fn is_keyword(self) -> bool {
match self {
- OR | AND | BIT_OR | BIT_XOR | BIT_AND | EQ | NE | LT | GT | LE | GE | LHS | RHS
- | PLUS | MINUS | MUL | DIV | MODULO | NOT | BIT_NOT | L_BRACK | R_BRACK | L_PAREN
- | R_PAREN | L_BRACE | R_BRACE | COLON | COLONCOLON | COLONCOLONCOLON | SEMI | DOT
- | DOTDOTDOT | COMMA | DOLLAR | ASSIGN | QUESTION_MARK | TAILSTRICT_KW
- | IMPORTSTR_KW | IMPORTBIN_KW | IMPORT_KW | IF_KW | THEN_KW | ELSE_KW | FUNCTION_KW
- | ERROR_KW | LOCAL_KW | IN_KW | NULL_KW | TRUE_KW | FALSE_KW | SELF_KW | SUPER_KW
- | FOR_KW | ASSERT_KW => true,
+ OR | NULL_COAELSE | AND | BIT_OR | BIT_XOR | BIT_AND | EQ | NE | LT | GT | LE | GE
+ | LHS | RHS | PLUS | MINUS | MUL | DIV | MODULO | NOT | BIT_NOT | L_BRACK | R_BRACK
+ | L_PAREN | R_PAREN | L_BRACE | R_BRACE | COLON | COLONCOLON | COLONCOLONCOLON
+ | SEMI | DOT | DOTDOTDOT | COMMA | DOLLAR | ASSIGN | QUESTION_MARK | TAILSTRICT_KW
+ | LOCAL_KW | IMPORTSTR_KW | IMPORTBIN_KW | IMPORT_KW | IF_KW | THEN_KW | ELSE_KW
+ | FUNCTION_KW | ERROR_KW | IN_KW | NULL_KW | TRUE_KW | FALSE_KW | SELF_KW
+ | SUPER_KW | FOR_KW | ASSERT_KW => true,
_ => false,
}
}
pub fn is_enum(self) -> bool {
match self {
- OBJ_BODY | COMP_SPEC | BIND | EXPR_BASE | MEMBER_COMP | MEMBER | FIELD_NAME
- | DESTRUCT | DESTRUCT_ARRAY_PART | BINARY_OPERATOR | UNARY_OPERATOR | LITERAL
- | TEXT | NUMBER | IMPORT_KIND | VISIBILITY | TRIVIA | CUSTOM_ERROR => true,
+ SUFFIX | BIND | STMT | OBJ_BODY | COMP_SPEC | EXPR_BASE | MEMBER_COMP | MEMBER
+ | FIELD_NAME | DESTRUCT | DESTRUCT_ARRAY_PART | BINARY_OPERATOR | UNARY_OPERATOR
+ | LITERAL | TEXT | NUMBER | IMPORT_KIND | VISIBILITY | TRIVIA | CUSTOM_ERROR => true,
_ => false,
}
}
@@ -286,5 +289,5 @@
}
}
#[macro_export]
-macro_rules ! T { [||] => { $ crate :: SyntaxKind :: OR } ; [&&] => { $ crate :: SyntaxKind :: AND } ; [|] => { $ crate :: SyntaxKind :: BIT_OR } ; [^] => { $ crate :: SyntaxKind :: BIT_XOR } ; [&] => { $ crate :: SyntaxKind :: BIT_AND } ; [==] => { $ crate :: SyntaxKind :: EQ } ; [!=] => { $ crate :: SyntaxKind :: NE } ; [<] => { $ crate :: SyntaxKind :: LT } ; [>] => { $ crate :: SyntaxKind :: GT } ; [<=] => { $ crate :: SyntaxKind :: LE } ; [>=] => { $ crate :: SyntaxKind :: GE } ; [<<] => { $ crate :: SyntaxKind :: LHS } ; [>>] => { $ crate :: SyntaxKind :: RHS } ; [+] => { $ crate :: SyntaxKind :: PLUS } ; [-] => { $ crate :: SyntaxKind :: MINUS } ; [*] => { $ crate :: SyntaxKind :: MUL } ; [/] => { $ crate :: SyntaxKind :: DIV } ; [%] => { $ crate :: SyntaxKind :: MODULO } ; [!] => { $ crate :: SyntaxKind :: NOT } ; [~] => { $ crate :: SyntaxKind :: BIT_NOT } ; ['['] => { $ crate :: SyntaxKind :: L_BRACK } ; [']'] => { $ crate :: SyntaxKind :: R_BRACK } ; ['('] => { $ crate :: SyntaxKind :: L_PAREN } ; [')'] => { $ crate :: SyntaxKind :: R_PAREN } ; ['{'] => { $ crate :: SyntaxKind :: L_BRACE } ; ['}'] => { $ crate :: SyntaxKind :: R_BRACE } ; [:] => { $ crate :: SyntaxKind :: COLON } ; [::] => { $ crate :: SyntaxKind :: COLONCOLON } ; [:::] => { $ crate :: SyntaxKind :: COLONCOLONCOLON } ; [;] => { $ crate :: SyntaxKind :: SEMI } ; [.] => { $ crate :: SyntaxKind :: DOT } ; [...] => { $ crate :: SyntaxKind :: DOTDOTDOT } ; [,] => { $ crate :: SyntaxKind :: COMMA } ; ['$'] => { $ crate :: SyntaxKind :: DOLLAR } ; [=] => { $ crate :: SyntaxKind :: ASSIGN } ; [?] => { $ crate :: SyntaxKind :: QUESTION_MARK } ; [tailstrict] => { $ crate :: SyntaxKind :: TAILSTRICT_KW } ; [importstr] => { $ crate :: SyntaxKind :: IMPORTSTR_KW } ; [importbin] => { $ crate :: SyntaxKind :: IMPORTBIN_KW } ; [import] => { $ crate :: SyntaxKind :: IMPORT_KW } ; [if] => { $ crate :: SyntaxKind :: IF_KW } ; [then] => { $ crate :: SyntaxKind :: THEN_KW } ; [else] => { $ crate :: SyntaxKind :: ELSE_KW } ; [function] => { $ crate :: SyntaxKind :: FUNCTION_KW } ; [error] => { $ crate :: SyntaxKind :: ERROR_KW } ; [local] => { $ crate :: SyntaxKind :: LOCAL_KW } ; [in] => { $ crate :: SyntaxKind :: IN_KW } ; [null] => { $ crate :: SyntaxKind :: NULL_KW } ; [true] => { $ crate :: SyntaxKind :: TRUE_KW } ; [false] => { $ crate :: SyntaxKind :: FALSE_KW } ; [self] => { $ crate :: SyntaxKind :: SELF_KW } ; [super] => { $ crate :: SyntaxKind :: SUPER_KW } ; [for] => { $ crate :: SyntaxKind :: FOR_KW } ; [assert] => { $ crate :: SyntaxKind :: ASSERT_KW } }
+macro_rules ! T { [||] => { $ crate :: SyntaxKind :: OR } ; [??] => { $ crate :: SyntaxKind :: NULL_COAELSE } ; [&&] => { $ crate :: SyntaxKind :: AND } ; [|] => { $ crate :: SyntaxKind :: BIT_OR } ; [^] => { $ crate :: SyntaxKind :: BIT_XOR } ; [&] => { $ crate :: SyntaxKind :: BIT_AND } ; [==] => { $ crate :: SyntaxKind :: EQ } ; [!=] => { $ crate :: SyntaxKind :: NE } ; [<] => { $ crate :: SyntaxKind :: LT } ; [>] => { $ crate :: SyntaxKind :: GT } ; [<=] => { $ crate :: SyntaxKind :: LE } ; [>=] => { $ crate :: SyntaxKind :: GE } ; [<<] => { $ crate :: SyntaxKind :: LHS } ; [>>] => { $ crate :: SyntaxKind :: RHS } ; [+] => { $ crate :: SyntaxKind :: PLUS } ; [-] => { $ crate :: SyntaxKind :: MINUS } ; [*] => { $ crate :: SyntaxKind :: MUL } ; [/] => { $ crate :: SyntaxKind :: DIV } ; [%] => { $ crate :: SyntaxKind :: MODULO } ; [!] => { $ crate :: SyntaxKind :: NOT } ; [~] => { $ crate :: SyntaxKind :: BIT_NOT } ; ['['] => { $ crate :: SyntaxKind :: L_BRACK } ; [']'] => { $ crate :: SyntaxKind :: R_BRACK } ; ['('] => { $ crate :: SyntaxKind :: L_PAREN } ; [')'] => { $ crate :: SyntaxKind :: R_PAREN } ; ['{'] => { $ crate :: SyntaxKind :: L_BRACE } ; ['}'] => { $ crate :: SyntaxKind :: R_BRACE } ; [:] => { $ crate :: SyntaxKind :: COLON } ; [::] => { $ crate :: SyntaxKind :: COLONCOLON } ; [:::] => { $ crate :: SyntaxKind :: COLONCOLONCOLON } ; [;] => { $ crate :: SyntaxKind :: SEMI } ; [.] => { $ crate :: SyntaxKind :: DOT } ; [...] => { $ crate :: SyntaxKind :: DOTDOTDOT } ; [,] => { $ crate :: SyntaxKind :: COMMA } ; ['$'] => { $ crate :: SyntaxKind :: DOLLAR } ; [=] => { $ crate :: SyntaxKind :: ASSIGN } ; [?] => { $ crate :: SyntaxKind :: QUESTION_MARK } ; [tailstrict] => { $ crate :: SyntaxKind :: TAILSTRICT_KW } ; [local] => { $ crate :: SyntaxKind :: LOCAL_KW } ; [importstr] => { $ crate :: SyntaxKind :: IMPORTSTR_KW } ; [importbin] => { $ crate :: SyntaxKind :: IMPORTBIN_KW } ; [import] => { $ crate :: SyntaxKind :: IMPORT_KW } ; [if] => { $ crate :: SyntaxKind :: IF_KW } ; [then] => { $ crate :: SyntaxKind :: THEN_KW } ; [else] => { $ crate :: SyntaxKind :: ELSE_KW } ; [function] => { $ crate :: SyntaxKind :: FUNCTION_KW } ; [error] => { $ crate :: SyntaxKind :: ERROR_KW } ; [in] => { $ crate :: SyntaxKind :: IN_KW } ; [null] => { $ crate :: SyntaxKind :: NULL_KW } ; [true] => { $ crate :: SyntaxKind :: TRUE_KW } ; [false] => { $ crate :: SyntaxKind :: FALSE_KW } ; [self] => { $ crate :: SyntaxKind :: SELF_KW } ; [super] => { $ crate :: SyntaxKind :: SUPER_KW } ; [for] => { $ crate :: SyntaxKind :: FOR_KW } ; [assert] => { $ crate :: SyntaxKind :: ASSERT_KW } }
pub use T;
crates/jrsonnet-rowan-parser/src/lib.rsdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/lib.rs
+++ b/crates/jrsonnet-rowan-parser/src/lib.rs
@@ -23,6 +23,11 @@
pub use language::*;
pub use token_set::SyntaxKindSet;
+use self::{
+ ast::support,
+ generated::nodes::{Expr, ExprBinary, ExprObjExtend},
+};
+
pub fn parse(input: &str) -> (SourceFile, Vec<LocatedSyntaxError>) {
let lexemes = lex(input);
let kinds = lexemes
@@ -42,3 +47,25 @@
parse.errors,
)
}
+impl ExprBinary {
+ pub fn lhs_work(&self) -> Option<Expr> {
+ support::child(self.syntax())
+ }
+ pub fn rhs_work(&self) -> Option<Expr> {
+ let mut children = support::children(self.syntax());
+ // skip lhs
+ children.next()?;
+ children.next()
+ }
+}
+impl ExprObjExtend {
+ pub fn lhs_work(&self) -> Option<Expr> {
+ support::child(self.syntax())
+ }
+ pub fn rhs_work(&self) -> Option<Expr> {
+ let mut children = support::children(self.syntax());
+ // skip lhs
+ children.next()?;
+ children.next()
+ }
+}
crates/jrsonnet-rowan-parser/src/parser.rsdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/parser.rs
+++ b/crates/jrsonnet-rowan-parser/src/parser.rs
@@ -293,30 +293,38 @@
}
fn expr(p: &mut Parser) -> CompletedMarker {
- while p.at(T![local]) {
+ let m = p.start();
+ while p.at(T![local]) || p.at(T![assert]) {
let m = p.start();
- p.bump();
- loop {
- if p.at(T![;]) {
- p.bump();
+ if p.at(T![local]) {
+ p.bump();
+ loop {
+ if p.at(T![;]) {
+ p.bump();
+ break;
+ }
+ bind(p);
+
+ if p.at(T![,]) {
+ p.bump();
+ continue;
+ }
+ p.expect(T![;]);
break;
}
- bind(p);
-
- if p.at(T![,]) {
- p.bump();
- continue;
- }
+ m.complete(p, STMT_LOCAL);
+ } else {
+ assertion(p);
p.expect(T![;]);
- break;
+ m.complete(p, STMT_ASSERT);
}
- m.complete(p, STMT_LOCAL);
}
match expr_binding_power(p, 0) {
Ok(m) => m,
Err(m) => m,
- }
+ };
+ m.complete(p, EXPR)
}
fn expr_binding_power(
p: &mut Parser,
@@ -337,8 +345,10 @@
p.bump();
}
- let m = lhs.wrap(p, LHS_EXPR).precede(p);
- let parsed_rhs = expr_binding_power(p, right_binding_power).is_ok();
+ let m = lhs.wrap(p, EXPR).precede(p);
+ let parsed_rhs = expr_binding_power(p, right_binding_power)
+ .map(|v| v.precede(p).complete(p, EXPR))
+ .is_ok();
lhs = m.complete(
p,
if op == BinaryOperatorKind::MetaObjectApply {
@@ -361,7 +371,7 @@
if p.at(T![for]) {
let m = p.start();
p.bump();
- name(p);
+ destruct(p);
p.expect(T![in]);
expr(p);
m.complete(p, FOR_SPEC)
@@ -420,7 +430,7 @@
fn assertion(p: &mut Parser) {
let m = p.start();
p.bump_assert(T![assert]);
- expr(p).wrap(p, LHS_EXPR);
+ expr(p);
if p.at(T![:]) {
p.bump();
expr(p);
@@ -504,7 +514,7 @@
for errored in compspecs {
errored.wrap_error(
p,
- "compspec may only be used if there is only one array element",
+ "compspec may only be used if there is only one object element",
);
}
m.complete(p, OBJ_BODY_MEMBER_LIST);
@@ -612,8 +622,8 @@
p.expect(T![']']);
break;
}
- elems += 1;
expr(p);
+ elems += 1;
while p.at_ts(COMPSPEC) {
compspecs.push(compspec(p));
}
@@ -679,32 +689,47 @@
true
}
-fn lhs(p: &mut Parser) -> Result<CompletedMarker, CompletedMarker> {
- let mut lhs = lhs_basic(p)?;
-
+fn suffix(p: &mut Parser) {
loop {
- if p.at(T![.]) {
- let m = lhs.precede(p);
+ let start = p.start();
+ let _marker: CompletedMarker = if p.at(T![?]) {
p.bump();
+ p.expect(T![.]);
+ if p.at(IDENT) {
+ name(p);
+ start.complete(p, SUFFIX_INDEX)
+ } else if p.at(T!['[']) {
+ p.bump();
+ expr(p);
+ p.expect(T![']']);
+ start.complete(p, SUFFIX_INDEX_EXPR)
+ } else {
+ start.complete_missing(p, ExpectedSyntax::Named("index"))
+ }
+ } else if p.at(T![.]) {
+ p.bump();
name(p);
- lhs = m.complete(p, EXPR_INDEX);
+ start.complete(p, SUFFIX_INDEX)
} else if p.at(T!['[']) {
if slice_desc_or_index(p) {
- lhs = lhs.precede(p).complete(p, EXPR_SLICE);
+ start.complete(p, SUFFIX_SLICE)
} else {
- lhs = lhs
- .wrap(p, LHS_EXPR)
- .precede(p)
- .complete(p, EXPR_INDEX_EXPR);
+ start.complete(p, SUFFIX_INDEX_EXPR)
}
} else if p.at(T!['(']) {
- let m = lhs.precede(p);
args_desc(p);
- lhs = m.complete(p, EXPR_APPLY);
+ start.complete(p, SUFFIX_APPLY)
} else {
+ start.forget(p);
break;
- }
+ };
}
+}
+
+fn lhs(p: &mut Parser) -> Result<CompletedMarker, CompletedMarker> {
+ let lhs = lhs_basic(p)?;
+
+ suffix(p);
Ok(lhs)
}
@@ -885,12 +910,6 @@
p.bump();
expr(p);
m.complete(p, EXPR_ERROR)
- } else if p.at(T![assert]) {
- let m = p.start();
- assertion(p);
- p.expect(T![;]);
- expr(p);
- m.complete(p, EXPR_ASSERT)
} else if p.at(T![import]) || p.at(T![importstr]) || p.at(T![importbin]) {
let m = p.start();
p.bump();
crates/jrsonnet-rowan-parser/src/precedence.rsdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/precedence.rs
+++ b/crates/jrsonnet-rowan-parser/src/precedence.rs
@@ -13,6 +13,7 @@
Self::BitXor => (8, 9),
Self::BitOr => (6, 7),
Self::And => (4, 5),
+ Self::NullCoaelse => (2, 3),
Self::Or => (2, 3),
Self::ErrorNoOperator => (0, 1),
}
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec.snap
@@ -3,32 +3,39 @@
expression: "[a for a in [1, 2, 3]]\n"
---
SOURCE_FILE@0..23
- EXPR_ARRAY_COMP@0..22
- L_BRACK@0..1 "["
- EXPR_VAR@1..2
- NAME@1..2
- IDENT@1..2 "a"
- WHITESPACE@2..3 " "
- FOR_SPEC@3..21
- FOR_KW@3..6 "for"
- WHITESPACE@6..7 " "
- NAME@7..8
- IDENT@7..8 "a"
- WHITESPACE@8..9 " "
- IN_KW@9..11 "in"
- WHITESPACE@11..12 " "
- EXPR_ARRAY@12..21
- L_BRACK@12..13 "["
- EXPR_NUMBER@13..14
- FLOAT@13..14 "1"
- COMMA@14..15 ","
- WHITESPACE@15..16 " "
- EXPR_NUMBER@16..17
- FLOAT@16..17 "2"
- COMMA@17..18 ","
- WHITESPACE@18..19 " "
- EXPR_NUMBER@19..20
- FLOAT@19..20 "3"
- R_BRACK@20..21 "]"
- R_BRACK@21..22 "]"
+ EXPR@0..22
+ EXPR_ARRAY_COMP@0..22
+ L_BRACK@0..1 "["
+ EXPR@1..2
+ EXPR_VAR@1..2
+ NAME@1..2
+ IDENT@1..2 "a"
+ WHITESPACE@2..3 " "
+ FOR_SPEC@3..21
+ FOR_KW@3..6 "for"
+ WHITESPACE@6..7 " "
+ DESTRUCT_FULL@7..8
+ NAME@7..8
+ IDENT@7..8 "a"
+ WHITESPACE@8..9 " "
+ IN_KW@9..11 "in"
+ WHITESPACE@11..12 " "
+ EXPR@12..21
+ EXPR_ARRAY@12..21
+ L_BRACK@12..13 "["
+ EXPR@13..14
+ EXPR_NUMBER@13..14
+ FLOAT@13..14 "1"
+ COMMA@14..15 ","
+ WHITESPACE@15..16 " "
+ EXPR@16..17
+ EXPR_NUMBER@16..17
+ FLOAT@16..17 "2"
+ COMMA@17..18 ","
+ WHITESPACE@18..19 " "
+ EXPR@19..20
+ EXPR_NUMBER@19..20
+ FLOAT@19..20 "3"
+ R_BRACK@20..21 "]"
+ R_BRACK@21..22 "]"
WHITESPACE@22..23 "\n"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_comma.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_comma.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_comma.snap
@@ -3,33 +3,40 @@
expression: "[a, for a in [1, 2, 3]]\n"
---
SOURCE_FILE@0..24
- EXPR_ARRAY_COMP@0..23
- L_BRACK@0..1 "["
- EXPR_VAR@1..2
- NAME@1..2
- IDENT@1..2 "a"
- COMMA@2..3 ","
- WHITESPACE@3..4 " "
- FOR_SPEC@4..22
- FOR_KW@4..7 "for"
- WHITESPACE@7..8 " "
- NAME@8..9
- IDENT@8..9 "a"
- WHITESPACE@9..10 " "
- IN_KW@10..12 "in"
- WHITESPACE@12..13 " "
- EXPR_ARRAY@13..22
- L_BRACK@13..14 "["
- EXPR_NUMBER@14..15
- FLOAT@14..15 "1"
- COMMA@15..16 ","
- WHITESPACE@16..17 " "
- EXPR_NUMBER@17..18
- FLOAT@17..18 "2"
- COMMA@18..19 ","
- WHITESPACE@19..20 " "
- EXPR_NUMBER@20..21
- FLOAT@20..21 "3"
- R_BRACK@21..22 "]"
- R_BRACK@22..23 "]"
+ EXPR@0..23
+ EXPR_ARRAY_COMP@0..23
+ L_BRACK@0..1 "["
+ EXPR@1..2
+ EXPR_VAR@1..2
+ NAME@1..2
+ IDENT@1..2 "a"
+ COMMA@2..3 ","
+ WHITESPACE@3..4 " "
+ FOR_SPEC@4..22
+ FOR_KW@4..7 "for"
+ WHITESPACE@7..8 " "
+ DESTRUCT_FULL@8..9
+ NAME@8..9
+ IDENT@8..9 "a"
+ WHITESPACE@9..10 " "
+ IN_KW@10..12 "in"
+ WHITESPACE@12..13 " "
+ EXPR@13..22
+ EXPR_ARRAY@13..22
+ L_BRACK@13..14 "["
+ EXPR@14..15
+ EXPR_NUMBER@14..15
+ FLOAT@14..15 "1"
+ COMMA@15..16 ","
+ WHITESPACE@16..17 " "
+ EXPR@17..18
+ EXPR_NUMBER@17..18
+ FLOAT@17..18 "2"
+ COMMA@18..19 ","
+ WHITESPACE@19..20 " "
+ EXPR@20..21
+ EXPR_NUMBER@20..21
+ FLOAT@20..21 "3"
+ R_BRACK@21..22 "]"
+ R_BRACK@22..23 "]"
WHITESPACE@23..24 "\n"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_incompatible_with_multiple_elems.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_incompatible_with_multiple_elems.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_incompatible_with_multiple_elems.snap
@@ -3,40 +3,48 @@
expression: "[a for a in [1, 2, 3], b]\n"
---
SOURCE_FILE@0..26
- EXPR_ARRAY@0..25
- L_BRACK@0..1 "["
- EXPR_VAR@1..2
- NAME@1..2
- IDENT@1..2 "a"
- WHITESPACE@2..3 " "
- ERROR_CUSTOM@3..21
- FOR_SPEC@3..21
- FOR_KW@3..6 "for"
- WHITESPACE@6..7 " "
- NAME@7..8
- IDENT@7..8 "a"
- WHITESPACE@8..9 " "
- IN_KW@9..11 "in"
- WHITESPACE@11..12 " "
- EXPR_ARRAY@12..21
- L_BRACK@12..13 "["
- EXPR_NUMBER@13..14
- FLOAT@13..14 "1"
- COMMA@14..15 ","
- WHITESPACE@15..16 " "
- EXPR_NUMBER@16..17
- FLOAT@16..17 "2"
- COMMA@17..18 ","
- WHITESPACE@18..19 " "
- EXPR_NUMBER@19..20
- FLOAT@19..20 "3"
- R_BRACK@20..21 "]"
- COMMA@21..22 ","
- WHITESPACE@22..23 " "
- EXPR_VAR@23..24
- NAME@23..24
- IDENT@23..24 "b"
- R_BRACK@24..25 "]"
+ EXPR@0..25
+ EXPR_ARRAY@0..25
+ L_BRACK@0..1 "["
+ EXPR@1..2
+ EXPR_VAR@1..2
+ NAME@1..2
+ IDENT@1..2 "a"
+ WHITESPACE@2..3 " "
+ ERROR_CUSTOM@3..21
+ FOR_SPEC@3..21
+ FOR_KW@3..6 "for"
+ WHITESPACE@6..7 " "
+ DESTRUCT_FULL@7..8
+ NAME@7..8
+ IDENT@7..8 "a"
+ WHITESPACE@8..9 " "
+ IN_KW@9..11 "in"
+ WHITESPACE@11..12 " "
+ EXPR@12..21
+ EXPR_ARRAY@12..21
+ L_BRACK@12..13 "["
+ EXPR@13..14
+ EXPR_NUMBER@13..14
+ FLOAT@13..14 "1"
+ COMMA@14..15 ","
+ WHITESPACE@15..16 " "
+ EXPR@16..17
+ EXPR_NUMBER@16..17
+ FLOAT@16..17 "2"
+ COMMA@17..18 ","
+ WHITESPACE@18..19 " "
+ EXPR@19..20
+ EXPR_NUMBER@19..20
+ FLOAT@19..20 "3"
+ R_BRACK@20..21 "]"
+ COMMA@21..22 ","
+ WHITESPACE@22..23 " "
+ EXPR@23..24
+ EXPR_VAR@23..24
+ NAME@23..24
+ IDENT@23..24 "b"
+ R_BRACK@24..25 "]"
WHITESPACE@25..26 "\n"
===
LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one array element" }, range: 3..21 }
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_incompatible_with_multiple_elems_w.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_incompatible_with_multiple_elems_w.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_incompatible_with_multiple_elems_w.snap
@@ -3,46 +3,55 @@
expression: "[a, b, for a in [1, 2, 3], c]\n"
---
SOURCE_FILE@0..30
- EXPR_ARRAY@0..29
- L_BRACK@0..1 "["
- EXPR_VAR@1..2
- NAME@1..2
- IDENT@1..2 "a"
- COMMA@2..3 ","
- WHITESPACE@3..4 " "
- EXPR_VAR@4..5
- NAME@4..5
- IDENT@4..5 "b"
- COMMA@5..6 ","
- WHITESPACE@6..7 " "
- ERROR_CUSTOM@7..25
- FOR_SPEC@7..25
- FOR_KW@7..10 "for"
- WHITESPACE@10..11 " "
- NAME@11..12
- IDENT@11..12 "a"
- WHITESPACE@12..13 " "
- IN_KW@13..15 "in"
- WHITESPACE@15..16 " "
- EXPR_ARRAY@16..25
- L_BRACK@16..17 "["
- EXPR_NUMBER@17..18
- FLOAT@17..18 "1"
- COMMA@18..19 ","
- WHITESPACE@19..20 " "
- EXPR_NUMBER@20..21
- FLOAT@20..21 "2"
- COMMA@21..22 ","
- WHITESPACE@22..23 " "
- EXPR_NUMBER@23..24
- FLOAT@23..24 "3"
- R_BRACK@24..25 "]"
- COMMA@25..26 ","
- WHITESPACE@26..27 " "
- EXPR_VAR@27..28
- NAME@27..28
- IDENT@27..28 "c"
- R_BRACK@28..29 "]"
+ EXPR@0..29
+ EXPR_ARRAY@0..29
+ L_BRACK@0..1 "["
+ EXPR@1..2
+ EXPR_VAR@1..2
+ NAME@1..2
+ IDENT@1..2 "a"
+ COMMA@2..3 ","
+ WHITESPACE@3..4 " "
+ EXPR@4..5
+ EXPR_VAR@4..5
+ NAME@4..5
+ IDENT@4..5 "b"
+ COMMA@5..6 ","
+ WHITESPACE@6..7 " "
+ ERROR_CUSTOM@7..25
+ FOR_SPEC@7..25
+ FOR_KW@7..10 "for"
+ WHITESPACE@10..11 " "
+ DESTRUCT_FULL@11..12
+ NAME@11..12
+ IDENT@11..12 "a"
+ WHITESPACE@12..13 " "
+ IN_KW@13..15 "in"
+ WHITESPACE@15..16 " "
+ EXPR@16..25
+ EXPR_ARRAY@16..25
+ L_BRACK@16..17 "["
+ EXPR@17..18
+ EXPR_NUMBER@17..18
+ FLOAT@17..18 "1"
+ COMMA@18..19 ","
+ WHITESPACE@19..20 " "
+ EXPR@20..21
+ EXPR_NUMBER@20..21
+ FLOAT@20..21 "2"
+ COMMA@21..22 ","
+ WHITESPACE@22..23 " "
+ EXPR@23..24
+ EXPR_NUMBER@23..24
+ FLOAT@23..24 "3"
+ R_BRACK@24..25 "]"
+ COMMA@25..26 ","
+ WHITESPACE@26..27 " "
+ EXPR@27..28
+ EXPR_VAR@27..28
+ NAME@27..28
+ IDENT@27..28 "c"
+ R_BRACK@28..29 "]"
WHITESPACE@29..30 "\n"
===
LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one array element" }, range: 7..25 }
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_no_elems.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_no_elems.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_no_elems.snap
@@ -3,31 +3,38 @@
expression: "[for a in [1, 2, 3]]\n"
---
SOURCE_FILE@0..21
- EXPR_ARRAY_COMP@0..20
- L_BRACK@0..1 "["
- ERROR_MISSING_TOKEN@1..1
- FOR_SPEC@1..19
- FOR_KW@1..4 "for"
- WHITESPACE@4..5 " "
- NAME@5..6
- IDENT@5..6 "a"
- WHITESPACE@6..7 " "
- IN_KW@7..9 "in"
- WHITESPACE@9..10 " "
- EXPR_ARRAY@10..19
- L_BRACK@10..11 "["
- EXPR_NUMBER@11..12
- FLOAT@11..12 "1"
- COMMA@12..13 ","
- WHITESPACE@13..14 " "
- EXPR_NUMBER@14..15
- FLOAT@14..15 "2"
- COMMA@15..16 ","
- WHITESPACE@16..17 " "
- EXPR_NUMBER@17..18
- FLOAT@17..18 "3"
- R_BRACK@18..19 "]"
- R_BRACK@19..20 "]"
+ EXPR@0..20
+ EXPR_ARRAY_COMP@0..20
+ L_BRACK@0..1 "["
+ EXPR@1..1
+ ERROR_MISSING_TOKEN@1..1
+ FOR_SPEC@1..19
+ FOR_KW@1..4 "for"
+ WHITESPACE@4..5 " "
+ DESTRUCT_FULL@5..6
+ NAME@5..6
+ IDENT@5..6 "a"
+ WHITESPACE@6..7 " "
+ IN_KW@7..9 "in"
+ WHITESPACE@9..10 " "
+ EXPR@10..19
+ EXPR_ARRAY@10..19
+ L_BRACK@10..11 "["
+ EXPR@11..12
+ EXPR_NUMBER@11..12
+ FLOAT@11..12 "1"
+ COMMA@12..13 ","
+ WHITESPACE@13..14 " "
+ EXPR@14..15
+ EXPR_NUMBER@14..15
+ FLOAT@14..15 "2"
+ COMMA@15..16 ","
+ WHITESPACE@16..17 " "
+ EXPR@17..18
+ EXPR_NUMBER@17..18
+ FLOAT@17..18 "3"
+ R_BRACK@18..19 "]"
+ R_BRACK@19..20 "]"
WHITESPACE@20..21 "\n"
===
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 1..1 }
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__continue_after_total_failure.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__continue_after_total_failure.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__continue_after_total_failure.snap
@@ -3,26 +3,29 @@
expression: "local intr = $intrinsic(test);\n\nlocal a = 1, b = 2, c = a + b;\n\n[c]\n"
---
SOURCE_FILE@0..68
- STMT_LOCAL@0..23
- LOCAL_KW@0..5 "local"
- WHITESPACE@5..6 " "
- BIND_DESTRUCT@6..14
- DESTRUCT_FULL@6..10
- NAME@6..10
- IDENT@6..10 "intr"
- WHITESPACE@10..11 " "
- ASSIGN@11..12 "="
- WHITESPACE@12..13 " "
- EXPR_LITERAL@13..14
- DOLLAR@13..14 "$"
- ERROR_UNEXPECTED_TOKEN@14..23
- IDENT@14..23 "intrinsic"
- EXPR_PARENED@23..29
- L_PAREN@23..24 "("
- EXPR_VAR@24..28
- NAME@24..28
- IDENT@24..28 "test"
- R_PAREN@28..29 ")"
+ EXPR@0..29
+ STMT_LOCAL@0..23
+ LOCAL_KW@0..5 "local"
+ WHITESPACE@5..6 " "
+ BIND_DESTRUCT@6..14
+ DESTRUCT_FULL@6..10
+ NAME@6..10
+ IDENT@6..10 "intr"
+ WHITESPACE@10..11 " "
+ ASSIGN@11..12 "="
+ WHITESPACE@12..13 " "
+ EXPR@13..14
+ EXPR_LITERAL@13..14
+ DOLLAR@13..14 "$"
+ ERROR_UNEXPECTED_TOKEN@14..23
+ IDENT@14..23 "intrinsic"
+ EXPR_PARENED@23..29
+ L_PAREN@23..24 "("
+ EXPR@24..28
+ EXPR_VAR@24..28
+ NAME@24..28
+ IDENT@24..28 "test"
+ R_PAREN@28..29 ")"
ERROR_CUSTOM@29..67
SEMI@29..30 ";"
WHITESPACE@30..32 "\n\n"
@@ -58,14 +61,14 @@
R_BRACK@66..67 "]"
WHITESPACE@67..68 "\n"
===
-LocatedSyntaxError { error: Unexpected { expected: Unnamed(SyntaxKindSet([L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA])), found: IDENT }, range: 14..23 }
+LocatedSyntaxError { error: Unexpected { expected: Unnamed(SyntaxKindSet([L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA, QUESTION_MARK])), found: IDENT }, range: 14..23 }
LocatedSyntaxError { error: Custom { error: "unexpected tokens after end" }, range: 29..67 }
===
x syntax error
,-[1:1]
1 | ,-> local intr = $intrinsic(test);
: || ^^^^|^^^^
- : || `-- expected L_BRACK, L_PAREN, L_BRACE, SEMI, DOT or COMMA, found IDENT
+ : || `-- expected L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA or QUESTION_MARK, found IDENT
2 | |
3 | | local a = 1, b = 2, c = a + b;
4 | |
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__destruct.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__destruct.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__destruct.snap
@@ -3,252 +3,263 @@
expression: "local [a, b, c] = arr;\nlocal [a, ...] = arr_rest;\nlocal [..., a] = rest_arr;\nlocal [...] = rest_in_arr;\nlocal [a, ...n] = arr_rest_n;\nlocal [...n, a] = rest_arr_n;\nlocal [...n] = rest_in_arr_n;\n\nlocal {a, b, c} = obj;\nlocal {a, b, c, ...} = obj_rest;\nlocal {a, b, c, ...n} = obj_rest_n;\n\nnull\n"
---
SOURCE_FILE@0..293
- STMT_LOCAL@0..22
- LOCAL_KW@0..5 "local"
- WHITESPACE@5..6 " "
- BIND_DESTRUCT@6..21
- DESTRUCT_ARRAY@6..15
- L_BRACK@6..7 "["
- DESTRUCT_FULL@7..8
- NAME@7..8
- IDENT@7..8 "a"
- COMMA@8..9 ","
- WHITESPACE@9..10 " "
- DESTRUCT_FULL@10..11
- NAME@10..11
- IDENT@10..11 "b"
- COMMA@11..12 ","
- WHITESPACE@12..13 " "
- DESTRUCT_FULL@13..14
- NAME@13..14
- IDENT@13..14 "c"
- R_BRACK@14..15 "]"
- WHITESPACE@15..16 " "
- ASSIGN@16..17 "="
- WHITESPACE@17..18 " "
- EXPR_VAR@18..21
- NAME@18..21
- IDENT@18..21 "arr"
- SEMI@21..22 ";"
- WHITESPACE@22..23 "\n"
- STMT_LOCAL@23..49
- LOCAL_KW@23..28 "local"
- WHITESPACE@28..29 " "
- BIND_DESTRUCT@29..48
- DESTRUCT_ARRAY@29..37
- L_BRACK@29..30 "["
- DESTRUCT_FULL@30..31
- NAME@30..31
- IDENT@30..31 "a"
- COMMA@31..32 ","
- WHITESPACE@32..33 " "
- DESTRUCT_REST@33..36
- DOTDOTDOT@33..36 "..."
- R_BRACK@36..37 "]"
- WHITESPACE@37..38 " "
- ASSIGN@38..39 "="
- WHITESPACE@39..40 " "
- EXPR_VAR@40..48
- NAME@40..48
- IDENT@40..48 "arr_rest"
- SEMI@48..49 ";"
- WHITESPACE@49..50 "\n"
- STMT_LOCAL@50..76
- LOCAL_KW@50..55 "local"
- WHITESPACE@55..56 " "
- BIND_DESTRUCT@56..75
- DESTRUCT_ARRAY@56..64
- L_BRACK@56..57 "["
- DESTRUCT_REST@57..60
- DOTDOTDOT@57..60 "..."
- COMMA@60..61 ","
- WHITESPACE@61..62 " "
- DESTRUCT_FULL@62..63
- NAME@62..63
- IDENT@62..63 "a"
- R_BRACK@63..64 "]"
- WHITESPACE@64..65 " "
- ASSIGN@65..66 "="
- WHITESPACE@66..67 " "
- EXPR_VAR@67..75
- NAME@67..75
- IDENT@67..75 "rest_arr"
- SEMI@75..76 ";"
- WHITESPACE@76..77 "\n"
- STMT_LOCAL@77..103
- LOCAL_KW@77..82 "local"
- WHITESPACE@82..83 " "
- BIND_DESTRUCT@83..102
- DESTRUCT_ARRAY@83..88
- L_BRACK@83..84 "["
- DESTRUCT_REST@84..87
- DOTDOTDOT@84..87 "..."
- R_BRACK@87..88 "]"
- WHITESPACE@88..89 " "
- ASSIGN@89..90 "="
- WHITESPACE@90..91 " "
- EXPR_VAR@91..102
- NAME@91..102
- IDENT@91..102 "rest_in_arr"
- SEMI@102..103 ";"
- WHITESPACE@103..104 "\n"
- STMT_LOCAL@104..133
- LOCAL_KW@104..109 "local"
- WHITESPACE@109..110 " "
- BIND_DESTRUCT@110..132
- DESTRUCT_ARRAY@110..119
- L_BRACK@110..111 "["
- DESTRUCT_FULL@111..112
- NAME@111..112
- IDENT@111..112 "a"
- COMMA@112..113 ","
- WHITESPACE@113..114 " "
- DESTRUCT_REST@114..118
- DOTDOTDOT@114..117 "..."
- IDENT@117..118 "n"
- R_BRACK@118..119 "]"
- WHITESPACE@119..120 " "
- ASSIGN@120..121 "="
- WHITESPACE@121..122 " "
- EXPR_VAR@122..132
- NAME@122..132
- IDENT@122..132 "arr_rest_n"
- SEMI@132..133 ";"
- WHITESPACE@133..134 "\n"
- STMT_LOCAL@134..163
- LOCAL_KW@134..139 "local"
- WHITESPACE@139..140 " "
- BIND_DESTRUCT@140..162
- DESTRUCT_ARRAY@140..149
- L_BRACK@140..141 "["
- DESTRUCT_REST@141..145
- DOTDOTDOT@141..144 "..."
- IDENT@144..145 "n"
- COMMA@145..146 ","
- WHITESPACE@146..147 " "
- DESTRUCT_FULL@147..148
- NAME@147..148
- IDENT@147..148 "a"
- R_BRACK@148..149 "]"
- WHITESPACE@149..150 " "
- ASSIGN@150..151 "="
- WHITESPACE@151..152 " "
- EXPR_VAR@152..162
- NAME@152..162
- IDENT@152..162 "rest_arr_n"
- SEMI@162..163 ";"
- WHITESPACE@163..164 "\n"
- STMT_LOCAL@164..193
- LOCAL_KW@164..169 "local"
- WHITESPACE@169..170 " "
- BIND_DESTRUCT@170..192
- DESTRUCT_ARRAY@170..176
- L_BRACK@170..171 "["
- DESTRUCT_REST@171..175
- DOTDOTDOT@171..174 "..."
- IDENT@174..175 "n"
- R_BRACK@175..176 "]"
- WHITESPACE@176..177 " "
- ASSIGN@177..178 "="
- WHITESPACE@178..179 " "
- EXPR_VAR@179..192
- NAME@179..192
- IDENT@179..192 "rest_in_arr_n"
- SEMI@192..193 ";"
- WHITESPACE@193..195 "\n\n"
- STMT_LOCAL@195..217
- LOCAL_KW@195..200 "local"
- WHITESPACE@200..201 " "
- BIND_DESTRUCT@201..216
- DESTRUCT_OBJECT@201..210
- L_BRACE@201..202 "{"
- DESTRUCT_OBJECT_FIELD@202..203
- NAME@202..203
- IDENT@202..203 "a"
- COMMA@203..204 ","
- WHITESPACE@204..205 " "
- DESTRUCT_OBJECT_FIELD@205..206
- NAME@205..206
- IDENT@205..206 "b"
- COMMA@206..207 ","
- WHITESPACE@207..208 " "
- DESTRUCT_OBJECT_FIELD@208..209
- NAME@208..209
- IDENT@208..209 "c"
- R_BRACE@209..210 "}"
- WHITESPACE@210..211 " "
- ASSIGN@211..212 "="
- WHITESPACE@212..213 " "
- EXPR_VAR@213..216
- NAME@213..216
- IDENT@213..216 "obj"
- SEMI@216..217 ";"
- WHITESPACE@217..218 "\n"
- STMT_LOCAL@218..250
- LOCAL_KW@218..223 "local"
- WHITESPACE@223..224 " "
- BIND_DESTRUCT@224..249
- DESTRUCT_OBJECT@224..238
- L_BRACE@224..225 "{"
- DESTRUCT_OBJECT_FIELD@225..226
- NAME@225..226
- IDENT@225..226 "a"
- COMMA@226..227 ","
- WHITESPACE@227..228 " "
- DESTRUCT_OBJECT_FIELD@228..229
- NAME@228..229
- IDENT@228..229 "b"
- COMMA@229..230 ","
- WHITESPACE@230..231 " "
- DESTRUCT_OBJECT_FIELD@231..232
- NAME@231..232
- IDENT@231..232 "c"
- COMMA@232..233 ","
- WHITESPACE@233..234 " "
- DESTRUCT_REST@234..237
- DOTDOTDOT@234..237 "..."
- R_BRACE@237..238 "}"
- WHITESPACE@238..239 " "
- ASSIGN@239..240 "="
- WHITESPACE@240..241 " "
- EXPR_VAR@241..249
- NAME@241..249
- IDENT@241..249 "obj_rest"
- SEMI@249..250 ";"
- WHITESPACE@250..251 "\n"
- STMT_LOCAL@251..286
- LOCAL_KW@251..256 "local"
- WHITESPACE@256..257 " "
- BIND_DESTRUCT@257..285
- DESTRUCT_OBJECT@257..272
- L_BRACE@257..258 "{"
- DESTRUCT_OBJECT_FIELD@258..259
- NAME@258..259
- IDENT@258..259 "a"
- COMMA@259..260 ","
- WHITESPACE@260..261 " "
- DESTRUCT_OBJECT_FIELD@261..262
- NAME@261..262
- IDENT@261..262 "b"
- COMMA@262..263 ","
- WHITESPACE@263..264 " "
- DESTRUCT_OBJECT_FIELD@264..265
- NAME@264..265
- IDENT@264..265 "c"
- COMMA@265..266 ","
- WHITESPACE@266..267 " "
- DESTRUCT_REST@267..271
- DOTDOTDOT@267..270 "..."
- IDENT@270..271 "n"
- R_BRACE@271..272 "}"
- WHITESPACE@272..273 " "
- ASSIGN@273..274 "="
- WHITESPACE@274..275 " "
- EXPR_VAR@275..285
- NAME@275..285
- IDENT@275..285 "obj_rest_n"
- SEMI@285..286 ";"
- WHITESPACE@286..288 "\n\n"
- EXPR_LITERAL@288..292
- NULL_KW@288..292 "null"
+ EXPR@0..292
+ STMT_LOCAL@0..22
+ LOCAL_KW@0..5 "local"
+ WHITESPACE@5..6 " "
+ BIND_DESTRUCT@6..21
+ DESTRUCT_ARRAY@6..15
+ L_BRACK@6..7 "["
+ DESTRUCT_FULL@7..8
+ NAME@7..8
+ IDENT@7..8 "a"
+ COMMA@8..9 ","
+ WHITESPACE@9..10 " "
+ DESTRUCT_FULL@10..11
+ NAME@10..11
+ IDENT@10..11 "b"
+ COMMA@11..12 ","
+ WHITESPACE@12..13 " "
+ DESTRUCT_FULL@13..14
+ NAME@13..14
+ IDENT@13..14 "c"
+ R_BRACK@14..15 "]"
+ WHITESPACE@15..16 " "
+ ASSIGN@16..17 "="
+ WHITESPACE@17..18 " "
+ EXPR@18..21
+ EXPR_VAR@18..21
+ NAME@18..21
+ IDENT@18..21 "arr"
+ SEMI@21..22 ";"
+ WHITESPACE@22..23 "\n"
+ STMT_LOCAL@23..49
+ LOCAL_KW@23..28 "local"
+ WHITESPACE@28..29 " "
+ BIND_DESTRUCT@29..48
+ DESTRUCT_ARRAY@29..37
+ L_BRACK@29..30 "["
+ DESTRUCT_FULL@30..31
+ NAME@30..31
+ IDENT@30..31 "a"
+ COMMA@31..32 ","
+ WHITESPACE@32..33 " "
+ DESTRUCT_REST@33..36
+ DOTDOTDOT@33..36 "..."
+ R_BRACK@36..37 "]"
+ WHITESPACE@37..38 " "
+ ASSIGN@38..39 "="
+ WHITESPACE@39..40 " "
+ EXPR@40..48
+ EXPR_VAR@40..48
+ NAME@40..48
+ IDENT@40..48 "arr_rest"
+ SEMI@48..49 ";"
+ WHITESPACE@49..50 "\n"
+ STMT_LOCAL@50..76
+ LOCAL_KW@50..55 "local"
+ WHITESPACE@55..56 " "
+ BIND_DESTRUCT@56..75
+ DESTRUCT_ARRAY@56..64
+ L_BRACK@56..57 "["
+ DESTRUCT_REST@57..60
+ DOTDOTDOT@57..60 "..."
+ COMMA@60..61 ","
+ WHITESPACE@61..62 " "
+ DESTRUCT_FULL@62..63
+ NAME@62..63
+ IDENT@62..63 "a"
+ R_BRACK@63..64 "]"
+ WHITESPACE@64..65 " "
+ ASSIGN@65..66 "="
+ WHITESPACE@66..67 " "
+ EXPR@67..75
+ EXPR_VAR@67..75
+ NAME@67..75
+ IDENT@67..75 "rest_arr"
+ SEMI@75..76 ";"
+ WHITESPACE@76..77 "\n"
+ STMT_LOCAL@77..103
+ LOCAL_KW@77..82 "local"
+ WHITESPACE@82..83 " "
+ BIND_DESTRUCT@83..102
+ DESTRUCT_ARRAY@83..88
+ L_BRACK@83..84 "["
+ DESTRUCT_REST@84..87
+ DOTDOTDOT@84..87 "..."
+ R_BRACK@87..88 "]"
+ WHITESPACE@88..89 " "
+ ASSIGN@89..90 "="
+ WHITESPACE@90..91 " "
+ EXPR@91..102
+ EXPR_VAR@91..102
+ NAME@91..102
+ IDENT@91..102 "rest_in_arr"
+ SEMI@102..103 ";"
+ WHITESPACE@103..104 "\n"
+ STMT_LOCAL@104..133
+ LOCAL_KW@104..109 "local"
+ WHITESPACE@109..110 " "
+ BIND_DESTRUCT@110..132
+ DESTRUCT_ARRAY@110..119
+ L_BRACK@110..111 "["
+ DESTRUCT_FULL@111..112
+ NAME@111..112
+ IDENT@111..112 "a"
+ COMMA@112..113 ","
+ WHITESPACE@113..114 " "
+ DESTRUCT_REST@114..118
+ DOTDOTDOT@114..117 "..."
+ IDENT@117..118 "n"
+ R_BRACK@118..119 "]"
+ WHITESPACE@119..120 " "
+ ASSIGN@120..121 "="
+ WHITESPACE@121..122 " "
+ EXPR@122..132
+ EXPR_VAR@122..132
+ NAME@122..132
+ IDENT@122..132 "arr_rest_n"
+ SEMI@132..133 ";"
+ WHITESPACE@133..134 "\n"
+ STMT_LOCAL@134..163
+ LOCAL_KW@134..139 "local"
+ WHITESPACE@139..140 " "
+ BIND_DESTRUCT@140..162
+ DESTRUCT_ARRAY@140..149
+ L_BRACK@140..141 "["
+ DESTRUCT_REST@141..145
+ DOTDOTDOT@141..144 "..."
+ IDENT@144..145 "n"
+ COMMA@145..146 ","
+ WHITESPACE@146..147 " "
+ DESTRUCT_FULL@147..148
+ NAME@147..148
+ IDENT@147..148 "a"
+ R_BRACK@148..149 "]"
+ WHITESPACE@149..150 " "
+ ASSIGN@150..151 "="
+ WHITESPACE@151..152 " "
+ EXPR@152..162
+ EXPR_VAR@152..162
+ NAME@152..162
+ IDENT@152..162 "rest_arr_n"
+ SEMI@162..163 ";"
+ WHITESPACE@163..164 "\n"
+ STMT_LOCAL@164..193
+ LOCAL_KW@164..169 "local"
+ WHITESPACE@169..170 " "
+ BIND_DESTRUCT@170..192
+ DESTRUCT_ARRAY@170..176
+ L_BRACK@170..171 "["
+ DESTRUCT_REST@171..175
+ DOTDOTDOT@171..174 "..."
+ IDENT@174..175 "n"
+ R_BRACK@175..176 "]"
+ WHITESPACE@176..177 " "
+ ASSIGN@177..178 "="
+ WHITESPACE@178..179 " "
+ EXPR@179..192
+ EXPR_VAR@179..192
+ NAME@179..192
+ IDENT@179..192 "rest_in_arr_n"
+ SEMI@192..193 ";"
+ WHITESPACE@193..195 "\n\n"
+ STMT_LOCAL@195..217
+ LOCAL_KW@195..200 "local"
+ WHITESPACE@200..201 " "
+ BIND_DESTRUCT@201..216
+ DESTRUCT_OBJECT@201..210
+ L_BRACE@201..202 "{"
+ DESTRUCT_OBJECT_FIELD@202..203
+ NAME@202..203
+ IDENT@202..203 "a"
+ COMMA@203..204 ","
+ WHITESPACE@204..205 " "
+ DESTRUCT_OBJECT_FIELD@205..206
+ NAME@205..206
+ IDENT@205..206 "b"
+ COMMA@206..207 ","
+ WHITESPACE@207..208 " "
+ DESTRUCT_OBJECT_FIELD@208..209
+ NAME@208..209
+ IDENT@208..209 "c"
+ R_BRACE@209..210 "}"
+ WHITESPACE@210..211 " "
+ ASSIGN@211..212 "="
+ WHITESPACE@212..213 " "
+ EXPR@213..216
+ EXPR_VAR@213..216
+ NAME@213..216
+ IDENT@213..216 "obj"
+ SEMI@216..217 ";"
+ WHITESPACE@217..218 "\n"
+ STMT_LOCAL@218..250
+ LOCAL_KW@218..223 "local"
+ WHITESPACE@223..224 " "
+ BIND_DESTRUCT@224..249
+ DESTRUCT_OBJECT@224..238
+ L_BRACE@224..225 "{"
+ DESTRUCT_OBJECT_FIELD@225..226
+ NAME@225..226
+ IDENT@225..226 "a"
+ COMMA@226..227 ","
+ WHITESPACE@227..228 " "
+ DESTRUCT_OBJECT_FIELD@228..229
+ NAME@228..229
+ IDENT@228..229 "b"
+ COMMA@229..230 ","
+ WHITESPACE@230..231 " "
+ DESTRUCT_OBJECT_FIELD@231..232
+ NAME@231..232
+ IDENT@231..232 "c"
+ COMMA@232..233 ","
+ WHITESPACE@233..234 " "
+ DESTRUCT_REST@234..237
+ DOTDOTDOT@234..237 "..."
+ R_BRACE@237..238 "}"
+ WHITESPACE@238..239 " "
+ ASSIGN@239..240 "="
+ WHITESPACE@240..241 " "
+ EXPR@241..249
+ EXPR_VAR@241..249
+ NAME@241..249
+ IDENT@241..249 "obj_rest"
+ SEMI@249..250 ";"
+ WHITESPACE@250..251 "\n"
+ STMT_LOCAL@251..286
+ LOCAL_KW@251..256 "local"
+ WHITESPACE@256..257 " "
+ BIND_DESTRUCT@257..285
+ DESTRUCT_OBJECT@257..272
+ L_BRACE@257..258 "{"
+ DESTRUCT_OBJECT_FIELD@258..259
+ NAME@258..259
+ IDENT@258..259 "a"
+ COMMA@259..260 ","
+ WHITESPACE@260..261 " "
+ DESTRUCT_OBJECT_FIELD@261..262
+ NAME@261..262
+ IDENT@261..262 "b"
+ COMMA@262..263 ","
+ WHITESPACE@263..264 " "
+ DESTRUCT_OBJECT_FIELD@264..265
+ NAME@264..265
+ IDENT@264..265 "c"
+ COMMA@265..266 ","
+ WHITESPACE@266..267 " "
+ DESTRUCT_REST@267..271
+ DOTDOTDOT@267..270 "..."
+ IDENT@270..271 "n"
+ R_BRACE@271..272 "}"
+ WHITESPACE@272..273 " "
+ ASSIGN@273..274 "="
+ WHITESPACE@274..275 " "
+ EXPR@275..285
+ EXPR_VAR@275..285
+ NAME@275..285
+ IDENT@275..285 "obj_rest_n"
+ SEMI@285..286 ";"
+ WHITESPACE@286..288 "\n\n"
+ EXPR_LITERAL@288..292
+ NULL_KW@288..292 "null"
WHITESPACE@292..293 "\n"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__empty.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__empty.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__empty.snap
@@ -4,7 +4,8 @@
---
SOURCE_FILE@0..1
WHITESPACE@0..1 " "
- ERROR_MISSING_TOKEN@1..1
+ EXPR@1..1
+ ERROR_MISSING_TOKEN@1..1
===
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 1..1 }
===
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function.snap
@@ -3,37 +3,40 @@
expression: "function(a, b = 1) a + b\n"
---
SOURCE_FILE@0..25
- EXPR_FUNCTION@0..24
- FUNCTION_KW@0..8 "function"
- PARAMS_DESC@8..18
- L_PAREN@8..9 "("
- PARAM@9..10
- DESTRUCT_FULL@9..10
- NAME@9..10
- IDENT@9..10 "a"
- COMMA@10..11 ","
- WHITESPACE@11..12 " "
- PARAM@12..17
- DESTRUCT_FULL@12..13
- NAME@12..13
- IDENT@12..13 "b"
- WHITESPACE@13..14 " "
- ASSIGN@14..15 "="
- WHITESPACE@15..16 " "
- EXPR_NUMBER@16..17
- FLOAT@16..17 "1"
- R_PAREN@17..18 ")"
- WHITESPACE@18..19 " "
- EXPR_BINARY@19..24
- LHS_EXPR@19..20
- EXPR_VAR@19..20
- NAME@19..20
- IDENT@19..20 "a"
- WHITESPACE@20..21 " "
- PLUS@21..22 "+"
- WHITESPACE@22..23 " "
- EXPR_VAR@23..24
- NAME@23..24
- IDENT@23..24 "b"
+ EXPR@0..24
+ EXPR_FUNCTION@0..24
+ FUNCTION_KW@0..8 "function"
+ PARAMS_DESC@8..18
+ L_PAREN@8..9 "("
+ PARAM@9..10
+ DESTRUCT_FULL@9..10
+ NAME@9..10
+ IDENT@9..10 "a"
+ COMMA@10..11 ","
+ WHITESPACE@11..12 " "
+ PARAM@12..17
+ DESTRUCT_FULL@12..13
+ NAME@12..13
+ IDENT@12..13 "b"
+ WHITESPACE@13..14 " "
+ ASSIGN@14..15 "="
+ WHITESPACE@15..16 " "
+ EXPR@16..17
+ EXPR_NUMBER@16..17
+ FLOAT@16..17 "1"
+ R_PAREN@17..18 ")"
+ WHITESPACE@18..19 " "
+ EXPR@19..24
+ EXPR_BINARY@19..24
+ EXPR@19..20
+ EXPR_VAR@19..20
+ NAME@19..20
+ IDENT@19..20 "a"
+ WHITESPACE@20..21 " "
+ PLUS@21..22 "+"
+ WHITESPACE@22..23 " "
+ EXPR@23..24
+ EXPR_VAR@23..24
+ NAME@23..24
+ IDENT@23..24 "b"
WHITESPACE@24..25 "\n"
-
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_body.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_body.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_body.snap
@@ -3,23 +3,25 @@
expression: "function(a, b)\n"
---
SOURCE_FILE@0..15
- EXPR_FUNCTION@0..15
- FUNCTION_KW@0..8 "function"
- PARAMS_DESC@8..14
- L_PAREN@8..9 "("
- PARAM@9..10
- DESTRUCT_FULL@9..10
- NAME@9..10
- IDENT@9..10 "a"
- COMMA@10..11 ","
- WHITESPACE@11..12 " "
- PARAM@12..13
- DESTRUCT_FULL@12..13
- NAME@12..13
- IDENT@12..13 "b"
- R_PAREN@13..14 ")"
- WHITESPACE@14..15 "\n"
- ERROR_MISSING_TOKEN@15..15
+ EXPR@0..15
+ EXPR_FUNCTION@0..15
+ FUNCTION_KW@0..8 "function"
+ PARAMS_DESC@8..14
+ L_PAREN@8..9 "("
+ PARAM@9..10
+ DESTRUCT_FULL@9..10
+ NAME@9..10
+ IDENT@9..10 "a"
+ COMMA@10..11 ","
+ WHITESPACE@11..12 " "
+ PARAM@12..13
+ DESTRUCT_FULL@12..13
+ NAME@12..13
+ IDENT@12..13 "b"
+ R_PAREN@13..14 ")"
+ WHITESPACE@14..15 "\n"
+ EXPR@15..15
+ ERROR_MISSING_TOKEN@15..15
===
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 15..15 }
===
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_no_value.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_no_value.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_no_value.snap
@@ -3,37 +3,41 @@
expression: "function(a, b = ) a + b\n"
---
SOURCE_FILE@0..24
- EXPR_FUNCTION@0..23
- FUNCTION_KW@0..8 "function"
- PARAMS_DESC@8..17
- L_PAREN@8..9 "("
- PARAM@9..10
- DESTRUCT_FULL@9..10
- NAME@9..10
- IDENT@9..10 "a"
- COMMA@10..11 ","
- WHITESPACE@11..12 " "
- PARAM@12..16
- DESTRUCT_FULL@12..13
- NAME@12..13
- IDENT@12..13 "b"
- WHITESPACE@13..14 " "
- ASSIGN@14..15 "="
- WHITESPACE@15..16 " "
- ERROR_MISSING_TOKEN@16..16
- R_PAREN@16..17 ")"
- WHITESPACE@17..18 " "
- EXPR_BINARY@18..23
- LHS_EXPR@18..19
- EXPR_VAR@18..19
- NAME@18..19
- IDENT@18..19 "a"
- WHITESPACE@19..20 " "
- PLUS@20..21 "+"
- WHITESPACE@21..22 " "
- EXPR_VAR@22..23
- NAME@22..23
- IDENT@22..23 "b"
+ EXPR@0..23
+ EXPR_FUNCTION@0..23
+ FUNCTION_KW@0..8 "function"
+ PARAMS_DESC@8..17
+ L_PAREN@8..9 "("
+ PARAM@9..10
+ DESTRUCT_FULL@9..10
+ NAME@9..10
+ IDENT@9..10 "a"
+ COMMA@10..11 ","
+ WHITESPACE@11..12 " "
+ PARAM@12..16
+ DESTRUCT_FULL@12..13
+ NAME@12..13
+ IDENT@12..13 "b"
+ WHITESPACE@13..14 " "
+ ASSIGN@14..15 "="
+ WHITESPACE@15..16 " "
+ EXPR@16..16
+ ERROR_MISSING_TOKEN@16..16
+ R_PAREN@16..17 ")"
+ WHITESPACE@17..18 " "
+ EXPR@18..23
+ EXPR_BINARY@18..23
+ EXPR@18..19
+ EXPR_VAR@18..19
+ NAME@18..19
+ IDENT@18..19 "a"
+ WHITESPACE@19..20 " "
+ PLUS@20..21 "+"
+ WHITESPACE@21..22 " "
+ EXPR@22..23
+ EXPR_VAR@22..23
+ NAME@22..23
+ IDENT@22..23 "b"
WHITESPACE@23..24 "\n"
===
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 16..16 }
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_rparen.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_rparen.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_rparen.snap
@@ -3,23 +3,25 @@
expression: "function(a, b\n"
---
SOURCE_FILE@0..14
- EXPR_FUNCTION@0..14
- FUNCTION_KW@0..8 "function"
- PARAMS_DESC@8..14
- L_PAREN@8..9 "("
- PARAM@9..10
- DESTRUCT_FULL@9..10
- NAME@9..10
- IDENT@9..10 "a"
- COMMA@10..11 ","
- WHITESPACE@11..12 " "
- PARAM@12..13
- DESTRUCT_FULL@12..13
- NAME@12..13
- IDENT@12..13 "b"
- WHITESPACE@13..14 "\n"
- ERROR_MISSING_TOKEN@14..14
- ERROR_MISSING_TOKEN@14..14
+ EXPR@0..14
+ EXPR_FUNCTION@0..14
+ FUNCTION_KW@0..8 "function"
+ PARAMS_DESC@8..14
+ L_PAREN@8..9 "("
+ PARAM@9..10
+ DESTRUCT_FULL@9..10
+ NAME@9..10
+ IDENT@9..10 "a"
+ COMMA@10..11 ","
+ WHITESPACE@11..12 " "
+ PARAM@12..13
+ DESTRUCT_FULL@12..13
+ NAME@12..13
+ IDENT@12..13 "b"
+ WHITESPACE@13..14 "\n"
+ ERROR_MISSING_TOKEN@14..14
+ EXPR@14..14
+ ERROR_MISSING_TOKEN@14..14
===
LocatedSyntaxError { error: Missing { expected: Unnamed(SyntaxKindSet([R_PAREN, COMMA, ASSIGN])) }, range: 14..14 }
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 14..14 }
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_method.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_method.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_method.snap
@@ -3,50 +3,53 @@
expression: "local\n\ta(x) = x,\n\ta = function(x) x,\n; c\n"
---
SOURCE_FILE@0..41
- STMT_LOCAL@0..38
- LOCAL_KW@0..5 "local"
- WHITESPACE@5..7 "\n\t"
- BIND_FUNCTION@7..15
- NAME@7..8
- IDENT@7..8 "a"
- PARAMS_DESC@8..11
- L_PAREN@8..9 "("
- PARAM@9..10
- DESTRUCT_FULL@9..10
- NAME@9..10
- IDENT@9..10 "x"
- R_PAREN@10..11 ")"
- WHITESPACE@11..12 " "
- ASSIGN@12..13 "="
- WHITESPACE@13..14 " "
- EXPR_VAR@14..15
- NAME@14..15
- IDENT@14..15 "x"
- COMMA@15..16 ","
- WHITESPACE@16..18 "\n\t"
- BIND_FUNCTION@18..35
- NAME@18..19
- IDENT@18..19 "a"
- WHITESPACE@19..20 " "
- ASSIGN@20..21 "="
- WHITESPACE@21..22 " "
- FUNCTION_KW@22..30 "function"
- PARAMS_DESC@30..33
- L_PAREN@30..31 "("
- PARAM@31..32
- DESTRUCT_FULL@31..32
- NAME@31..32
- IDENT@31..32 "x"
- R_PAREN@32..33 ")"
- WHITESPACE@33..34 " "
- EXPR_VAR@34..35
- NAME@34..35
- IDENT@34..35 "x"
- COMMA@35..36 ","
- WHITESPACE@36..37 "\n"
- SEMI@37..38 ";"
- WHITESPACE@38..39 " "
- EXPR_VAR@39..40
- NAME@39..40
- IDENT@39..40 "c"
+ EXPR@0..40
+ STMT_LOCAL@0..38
+ LOCAL_KW@0..5 "local"
+ WHITESPACE@5..7 "\n\t"
+ BIND_FUNCTION@7..15
+ NAME@7..8
+ IDENT@7..8 "a"
+ PARAMS_DESC@8..11
+ L_PAREN@8..9 "("
+ PARAM@9..10
+ DESTRUCT_FULL@9..10
+ NAME@9..10
+ IDENT@9..10 "x"
+ R_PAREN@10..11 ")"
+ WHITESPACE@11..12 " "
+ ASSIGN@12..13 "="
+ WHITESPACE@13..14 " "
+ EXPR@14..15
+ EXPR_VAR@14..15
+ NAME@14..15
+ IDENT@14..15 "x"
+ COMMA@15..16 ","
+ WHITESPACE@16..18 "\n\t"
+ BIND_FUNCTION@18..35
+ NAME@18..19
+ IDENT@18..19 "a"
+ WHITESPACE@19..20 " "
+ ASSIGN@20..21 "="
+ WHITESPACE@21..22 " "
+ FUNCTION_KW@22..30 "function"
+ PARAMS_DESC@30..33
+ L_PAREN@30..31 "("
+ PARAM@31..32
+ DESTRUCT_FULL@31..32
+ NAME@31..32
+ IDENT@31..32 "x"
+ R_PAREN@32..33 ")"
+ WHITESPACE@33..34 " "
+ EXPR@34..35
+ EXPR_VAR@34..35
+ NAME@34..35
+ IDENT@34..35 "x"
+ COMMA@35..36 ","
+ WHITESPACE@36..37 "\n"
+ SEMI@37..38 ";"
+ WHITESPACE@38..39 " "
+ EXPR_VAR@39..40
+ NAME@39..40
+ IDENT@39..40 "c"
WHITESPACE@40..41 "\n"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_no_value_recovery.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_no_value_recovery.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_no_value_recovery.snap
@@ -3,37 +3,40 @@
expression: "local a =\nlocal b = 3;\n1\n"
---
SOURCE_FILE@0..25
- STMT_LOCAL@0..25
- LOCAL_KW@0..5 "local"
- WHITESPACE@5..6 " "
- BIND_DESTRUCT@6..24
- DESTRUCT_FULL@6..7
- NAME@6..7
- IDENT@6..7 "a"
- WHITESPACE@7..8 " "
- ASSIGN@8..9 "="
- WHITESPACE@9..10 "\n"
- STMT_LOCAL@10..22
- LOCAL_KW@10..15 "local"
- WHITESPACE@15..16 " "
- BIND_DESTRUCT@16..21
- DESTRUCT_FULL@16..17
- NAME@16..17
- IDENT@16..17 "b"
- WHITESPACE@17..18 " "
- ASSIGN@18..19 "="
- WHITESPACE@19..20 " "
- EXPR_NUMBER@20..21
- FLOAT@20..21 "3"
- SEMI@21..22 ";"
- WHITESPACE@22..23 "\n"
- EXPR_NUMBER@23..24
- FLOAT@23..24 "1"
- WHITESPACE@24..25 "\n"
+ EXPR@0..25
+ STMT_LOCAL@0..25
+ LOCAL_KW@0..5 "local"
+ WHITESPACE@5..6 " "
+ BIND_DESTRUCT@6..24
+ DESTRUCT_FULL@6..7
+ NAME@6..7
+ IDENT@6..7 "a"
+ WHITESPACE@7..8 " "
+ ASSIGN@8..9 "="
+ WHITESPACE@9..10 "\n"
+ EXPR@10..24
+ STMT_LOCAL@10..22
+ LOCAL_KW@10..15 "local"
+ WHITESPACE@15..16 " "
+ BIND_DESTRUCT@16..21
+ DESTRUCT_FULL@16..17
+ NAME@16..17
+ IDENT@16..17 "b"
+ WHITESPACE@17..18 " "
+ ASSIGN@18..19 "="
+ WHITESPACE@19..20 " "
+ EXPR@20..21
+ EXPR_NUMBER@20..21
+ FLOAT@20..21 "3"
+ SEMI@21..22 ";"
+ WHITESPACE@22..23 "\n"
+ EXPR_NUMBER@23..24
+ FLOAT@23..24 "1"
+ WHITESPACE@24..25 "\n"
+ ERROR_MISSING_TOKEN@25..25
ERROR_MISSING_TOKEN@25..25
- ERROR_MISSING_TOKEN@25..25
===
-LocatedSyntaxError { error: Missing { expected: Unnamed(SyntaxKindSet([L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA])) }, range: 25..25 }
+LocatedSyntaxError { error: Missing { expected: Unnamed(SyntaxKindSet([L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA, QUESTION_MARK])) }, range: 25..25 }
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 25..25 }
===
x syntax error
@@ -42,5 +45,5 @@
3 | 1
: ^^
: |`-- missing expression
- : `-- missing L_BRACK, L_PAREN, L_BRACE, SEMI, DOT or COMMA
+ : `-- missing L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA or QUESTION_MARK
`----
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_novalue.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_novalue.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_novalue.snap
@@ -3,19 +3,21 @@
expression: "local a =\n"
---
SOURCE_FILE@0..10
- STMT_LOCAL@0..10
- LOCAL_KW@0..5 "local"
- WHITESPACE@5..6 " "
- BIND_DESTRUCT@6..10
- DESTRUCT_FULL@6..7
- NAME@6..7
- IDENT@6..7 "a"
- WHITESPACE@7..8 " "
- ASSIGN@8..9 "="
- WHITESPACE@9..10 "\n"
+ EXPR@0..10
+ STMT_LOCAL@0..10
+ LOCAL_KW@0..5 "local"
+ WHITESPACE@5..6 " "
+ BIND_DESTRUCT@6..10
+ DESTRUCT_FULL@6..7
+ NAME@6..7
+ IDENT@6..7 "a"
+ WHITESPACE@7..8 " "
+ ASSIGN@8..9 "="
+ WHITESPACE@9..10 "\n"
+ EXPR@10..10
+ ERROR_MISSING_TOKEN@10..10
ERROR_MISSING_TOKEN@10..10
ERROR_MISSING_TOKEN@10..10
- ERROR_MISSING_TOKEN@10..10
===
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 10..10 }
LocatedSyntaxError { error: Missing { expected: Unnamed(SyntaxKindSet([SEMI, COMMA])) }, range: 10..10 }
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__named_before_positional.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__named_before_positional.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__named_before_positional.snap
@@ -3,57 +3,65 @@
expression: "a(1, 2, b=4, 3, 5, k = 12, 6)\n"
---
SOURCE_FILE@0..30
- EXPR_APPLY@0..29
+ EXPR@0..29
EXPR_VAR@0..1
NAME@0..1
IDENT@0..1 "a"
- ARGS_DESC@1..29
- L_PAREN@1..2 "("
- ARG@2..3
- EXPR_NUMBER@2..3
- FLOAT@2..3 "1"
- COMMA@3..4 ","
- WHITESPACE@4..5 " "
- ARG@5..6
- EXPR_NUMBER@5..6
- FLOAT@5..6 "2"
- COMMA@6..7 ","
- WHITESPACE@7..8 " "
- ARG@8..11
- NAME@8..9
- IDENT@8..9 "b"
- ASSIGN@9..10 "="
- EXPR_NUMBER@10..11
- FLOAT@10..11 "4"
- COMMA@11..12 ","
- WHITESPACE@12..13 " "
- ERROR_CUSTOM@13..14
- ARG@13..14
- EXPR_NUMBER@13..14
- FLOAT@13..14 "3"
- COMMA@14..15 ","
- WHITESPACE@15..16 " "
- ERROR_CUSTOM@16..17
- ARG@16..17
- EXPR_NUMBER@16..17
- FLOAT@16..17 "5"
- COMMA@17..18 ","
- WHITESPACE@18..19 " "
- ARG@19..25
- NAME@19..20
- IDENT@19..20 "k"
- WHITESPACE@20..21 " "
- ASSIGN@21..22 "="
- WHITESPACE@22..23 " "
- EXPR_NUMBER@23..25
- FLOAT@23..25 "12"
- COMMA@25..26 ","
- WHITESPACE@26..27 " "
- ERROR_CUSTOM@27..28
- ARG@27..28
- EXPR_NUMBER@27..28
- FLOAT@27..28 "6"
- R_PAREN@28..29 ")"
+ SUFFIX_APPLY@1..29
+ ARGS_DESC@1..29
+ L_PAREN@1..2 "("
+ ARG@2..3
+ EXPR@2..3
+ EXPR_NUMBER@2..3
+ FLOAT@2..3 "1"
+ COMMA@3..4 ","
+ WHITESPACE@4..5 " "
+ ARG@5..6
+ EXPR@5..6
+ EXPR_NUMBER@5..6
+ FLOAT@5..6 "2"
+ COMMA@6..7 ","
+ WHITESPACE@7..8 " "
+ ARG@8..11
+ NAME@8..9
+ IDENT@8..9 "b"
+ ASSIGN@9..10 "="
+ EXPR@10..11
+ EXPR_NUMBER@10..11
+ FLOAT@10..11 "4"
+ COMMA@11..12 ","
+ WHITESPACE@12..13 " "
+ ERROR_CUSTOM@13..14
+ ARG@13..14
+ EXPR@13..14
+ EXPR_NUMBER@13..14
+ FLOAT@13..14 "3"
+ COMMA@14..15 ","
+ WHITESPACE@15..16 " "
+ ERROR_CUSTOM@16..17
+ ARG@16..17
+ EXPR@16..17
+ EXPR_NUMBER@16..17
+ FLOAT@16..17 "5"
+ COMMA@17..18 ","
+ WHITESPACE@18..19 " "
+ ARG@19..25
+ NAME@19..20
+ IDENT@19..20 "k"
+ WHITESPACE@20..21 " "
+ ASSIGN@21..22 "="
+ WHITESPACE@22..23 " "
+ EXPR@23..25
+ EXPR_NUMBER@23..25
+ FLOAT@23..25 "12"
+ COMMA@25..26 ","
+ WHITESPACE@26..27 " "
+ ERROR_CUSTOM@27..28
+ ARG@27..28
+ EXPR@27..28
+ EXPR_NUMBER@27..28
+ FLOAT@27..28 "6"
+ R_PAREN@28..29 ")"
WHITESPACE@29..30 "\n"
===
LocatedSyntaxError { error: Custom { error: "can't use positional arguments after named" }, range: 13..14 }
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_lhs.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_lhs.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_lhs.snap
@@ -3,7 +3,8 @@
expression: "+ 2\n"
---
SOURCE_FILE@0..4
- ERROR_MISSING_TOKEN@0..0
+ EXPR@0..0
+ ERROR_MISSING_TOKEN@0..0
ERROR_CUSTOM@0..3
PLUS@0..1 "+"
WHITESPACE@1..2 " "
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_operator.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_operator.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_operator.snap
@@ -3,8 +3,9 @@
expression: "2 2\n"
---
SOURCE_FILE@0..4
- EXPR_NUMBER@0..1
- FLOAT@0..1 "2"
+ EXPR@0..1
+ EXPR_NUMBER@0..1
+ FLOAT@0..1 "2"
WHITESPACE@1..2 " "
ERROR_CUSTOM@2..3
FLOAT@2..3 "2"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_rhs.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_rhs.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_rhs.snap
@@ -3,15 +3,16 @@
expression: "a +\n"
---
SOURCE_FILE@0..4
- EXPR_BINARY@0..4
- LHS_EXPR@0..1
- EXPR_VAR@0..1
- NAME@0..1
- IDENT@0..1 "a"
- WHITESPACE@1..2 " "
- PLUS@2..3 "+"
- WHITESPACE@3..4 "\n"
- ERROR_MISSING_TOKEN@4..4
+ EXPR@0..4
+ EXPR_BINARY@0..4
+ EXPR@0..1
+ EXPR_VAR@0..1
+ NAME@0..1
+ IDENT@0..1 "a"
+ WHITESPACE@1..2 " "
+ PLUS@2..3 "+"
+ WHITESPACE@3..4 "\n"
+ ERROR_MISSING_TOKEN@4..4
===
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 4..4 }
===
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec.snap
@@ -3,37 +3,44 @@
expression: "{a:1 for a in [1, 2, 3]}\n"
---
SOURCE_FILE@0..25
- EXPR_OBJECT@0..24
- OBJ_BODY_COMP@0..24
- L_BRACE@0..1 "{"
- MEMBER_FIELD_NORMAL@1..4
- FIELD_NAME_FIXED@1..2
- NAME@1..2
- IDENT@1..2 "a"
- COLON@2..3 ":"
- EXPR_NUMBER@3..4
- FLOAT@3..4 "1"
- WHITESPACE@4..5 " "
- FOR_SPEC@5..23
- FOR_KW@5..8 "for"
- WHITESPACE@8..9 " "
- NAME@9..10
- IDENT@9..10 "a"
- WHITESPACE@10..11 " "
- IN_KW@11..13 "in"
- WHITESPACE@13..14 " "
- EXPR_ARRAY@14..23
- L_BRACK@14..15 "["
- EXPR_NUMBER@15..16
- FLOAT@15..16 "1"
- COMMA@16..17 ","
- WHITESPACE@17..18 " "
- EXPR_NUMBER@18..19
- FLOAT@18..19 "2"
- COMMA@19..20 ","
- WHITESPACE@20..21 " "
- EXPR_NUMBER@21..22
- FLOAT@21..22 "3"
- R_BRACK@22..23 "]"
- R_BRACE@23..24 "}"
+ EXPR@0..24
+ EXPR_OBJECT@0..24
+ OBJ_BODY_COMP@0..24
+ L_BRACE@0..1 "{"
+ MEMBER_FIELD_NORMAL@1..4
+ FIELD_NAME_FIXED@1..2
+ NAME@1..2
+ IDENT@1..2 "a"
+ COLON@2..3 ":"
+ EXPR@3..4
+ EXPR_NUMBER@3..4
+ FLOAT@3..4 "1"
+ WHITESPACE@4..5 " "
+ FOR_SPEC@5..23
+ FOR_KW@5..8 "for"
+ WHITESPACE@8..9 " "
+ DESTRUCT_FULL@9..10
+ NAME@9..10
+ IDENT@9..10 "a"
+ WHITESPACE@10..11 " "
+ IN_KW@11..13 "in"
+ WHITESPACE@13..14 " "
+ EXPR@14..23
+ EXPR_ARRAY@14..23
+ L_BRACK@14..15 "["
+ EXPR@15..16
+ EXPR_NUMBER@15..16
+ FLOAT@15..16 "1"
+ COMMA@16..17 ","
+ WHITESPACE@17..18 " "
+ EXPR@18..19
+ EXPR_NUMBER@18..19
+ FLOAT@18..19 "2"
+ COMMA@19..20 ","
+ WHITESPACE@20..21 " "
+ EXPR@21..22
+ EXPR_NUMBER@21..22
+ FLOAT@21..22 "3"
+ R_BRACK@22..23 "]"
+ R_BRACE@23..24 "}"
WHITESPACE@24..25 "\n"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_comma.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_comma.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_comma.snap
@@ -3,38 +3,45 @@
expression: "{a:1, for a in [1, 2, 3]}\n"
---
SOURCE_FILE@0..26
- EXPR_OBJECT@0..25
- OBJ_BODY_COMP@0..25
- L_BRACE@0..1 "{"
- MEMBER_FIELD_NORMAL@1..4
- FIELD_NAME_FIXED@1..2
- NAME@1..2
- IDENT@1..2 "a"
- COLON@2..3 ":"
- EXPR_NUMBER@3..4
- FLOAT@3..4 "1"
- COMMA@4..5 ","
- WHITESPACE@5..6 " "
- FOR_SPEC@6..24
- FOR_KW@6..9 "for"
- WHITESPACE@9..10 " "
- NAME@10..11
- IDENT@10..11 "a"
- WHITESPACE@11..12 " "
- IN_KW@12..14 "in"
- WHITESPACE@14..15 " "
- EXPR_ARRAY@15..24
- L_BRACK@15..16 "["
- EXPR_NUMBER@16..17
- FLOAT@16..17 "1"
- COMMA@17..18 ","
- WHITESPACE@18..19 " "
- EXPR_NUMBER@19..20
- FLOAT@19..20 "2"
- COMMA@20..21 ","
- WHITESPACE@21..22 " "
- EXPR_NUMBER@22..23
- FLOAT@22..23 "3"
- R_BRACK@23..24 "]"
- R_BRACE@24..25 "}"
+ EXPR@0..25
+ EXPR_OBJECT@0..25
+ OBJ_BODY_COMP@0..25
+ L_BRACE@0..1 "{"
+ MEMBER_FIELD_NORMAL@1..4
+ FIELD_NAME_FIXED@1..2
+ NAME@1..2
+ IDENT@1..2 "a"
+ COLON@2..3 ":"
+ EXPR@3..4
+ EXPR_NUMBER@3..4
+ FLOAT@3..4 "1"
+ COMMA@4..5 ","
+ WHITESPACE@5..6 " "
+ FOR_SPEC@6..24
+ FOR_KW@6..9 "for"
+ WHITESPACE@9..10 " "
+ DESTRUCT_FULL@10..11
+ NAME@10..11
+ IDENT@10..11 "a"
+ WHITESPACE@11..12 " "
+ IN_KW@12..14 "in"
+ WHITESPACE@14..15 " "
+ EXPR@15..24
+ EXPR_ARRAY@15..24
+ L_BRACK@15..16 "["
+ EXPR@16..17
+ EXPR_NUMBER@16..17
+ FLOAT@16..17 "1"
+ COMMA@17..18 ","
+ WHITESPACE@18..19 " "
+ EXPR@19..20
+ EXPR_NUMBER@19..20
+ FLOAT@19..20 "2"
+ COMMA@20..21 ","
+ WHITESPACE@21..22 " "
+ EXPR@22..23
+ EXPR_NUMBER@22..23
+ FLOAT@22..23 "3"
+ R_BRACK@23..24 "]"
+ R_BRACE@24..25 "}"
WHITESPACE@25..26 "\n"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_asserts.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_asserts.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_asserts.snap
@@ -3,48 +3,55 @@
expression: "{assert 1, a: 1 for a in [1,2,3]}\n"
---
SOURCE_FILE@0..34
- EXPR_OBJECT@0..33
- OBJ_BODY_COMP@0..33
- L_BRACE@0..1 "{"
- ERROR_CUSTOM@1..9
- MEMBER_ASSERT_STMT@1..9
- ASSERTION@1..9
- ASSERT_KW@1..7 "assert"
- WHITESPACE@7..8 " "
- LHS_EXPR@8..9
- EXPR_NUMBER@8..9
- FLOAT@8..9 "1"
- COMMA@9..10 ","
- WHITESPACE@10..11 " "
- MEMBER_FIELD_NORMAL@11..15
- FIELD_NAME_FIXED@11..12
- NAME@11..12
- IDENT@11..12 "a"
- COLON@12..13 ":"
- WHITESPACE@13..14 " "
- EXPR_NUMBER@14..15
- FLOAT@14..15 "1"
- WHITESPACE@15..16 " "
- FOR_SPEC@16..32
- FOR_KW@16..19 "for"
- WHITESPACE@19..20 " "
- NAME@20..21
- IDENT@20..21 "a"
- WHITESPACE@21..22 " "
- IN_KW@22..24 "in"
- WHITESPACE@24..25 " "
- EXPR_ARRAY@25..32
- L_BRACK@25..26 "["
- EXPR_NUMBER@26..27
- FLOAT@26..27 "1"
- COMMA@27..28 ","
- EXPR_NUMBER@28..29
- FLOAT@28..29 "2"
- COMMA@29..30 ","
- EXPR_NUMBER@30..31
- FLOAT@30..31 "3"
- R_BRACK@31..32 "]"
- R_BRACE@32..33 "}"
+ EXPR@0..33
+ EXPR_OBJECT@0..33
+ OBJ_BODY_COMP@0..33
+ L_BRACE@0..1 "{"
+ ERROR_CUSTOM@1..9
+ MEMBER_ASSERT_STMT@1..9
+ ASSERTION@1..9
+ ASSERT_KW@1..7 "assert"
+ WHITESPACE@7..8 " "
+ EXPR@8..9
+ EXPR_NUMBER@8..9
+ FLOAT@8..9 "1"
+ COMMA@9..10 ","
+ WHITESPACE@10..11 " "
+ MEMBER_FIELD_NORMAL@11..15
+ FIELD_NAME_FIXED@11..12
+ NAME@11..12
+ IDENT@11..12 "a"
+ COLON@12..13 ":"
+ WHITESPACE@13..14 " "
+ EXPR@14..15
+ EXPR_NUMBER@14..15
+ FLOAT@14..15 "1"
+ WHITESPACE@15..16 " "
+ FOR_SPEC@16..32
+ FOR_KW@16..19 "for"
+ WHITESPACE@19..20 " "
+ DESTRUCT_FULL@20..21
+ NAME@20..21
+ IDENT@20..21 "a"
+ WHITESPACE@21..22 " "
+ IN_KW@22..24 "in"
+ WHITESPACE@24..25 " "
+ EXPR@25..32
+ EXPR_ARRAY@25..32
+ L_BRACK@25..26 "["
+ EXPR@26..27
+ EXPR_NUMBER@26..27
+ FLOAT@26..27 "1"
+ COMMA@27..28 ","
+ EXPR@28..29
+ EXPR_NUMBER@28..29
+ FLOAT@28..29 "2"
+ COMMA@29..30 ","
+ EXPR@30..31
+ EXPR_NUMBER@30..31
+ FLOAT@30..31 "3"
+ R_BRACK@31..32 "]"
+ R_BRACE@32..33 "}"
WHITESPACE@33..34 "\n"
===
LocatedSyntaxError { error: Custom { error: "asserts can't be used in object comprehensions" }, range: 1..9 }
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_multiple_elems.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_multiple_elems.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_multiple_elems.snap
@@ -3,56 +3,64 @@
expression: "{a:1 for a in [1, 2, 3], b:1}\n"
---
SOURCE_FILE@0..30
- EXPR_OBJECT@0..29
- OBJ_BODY_MEMBER_LIST@0..29
- L_BRACE@0..1 "{"
- MEMBER_FIELD_NORMAL@1..4
- FIELD_NAME_FIXED@1..2
- NAME@1..2
- IDENT@1..2 "a"
- COLON@2..3 ":"
- EXPR_NUMBER@3..4
- FLOAT@3..4 "1"
- WHITESPACE@4..5 " "
- ERROR_CUSTOM@5..23
- FOR_SPEC@5..23
- FOR_KW@5..8 "for"
- WHITESPACE@8..9 " "
- NAME@9..10
- IDENT@9..10 "a"
- WHITESPACE@10..11 " "
- IN_KW@11..13 "in"
- WHITESPACE@13..14 " "
- EXPR_ARRAY@14..23
- L_BRACK@14..15 "["
- EXPR_NUMBER@15..16
- FLOAT@15..16 "1"
- COMMA@16..17 ","
- WHITESPACE@17..18 " "
- EXPR_NUMBER@18..19
- FLOAT@18..19 "2"
- COMMA@19..20 ","
- WHITESPACE@20..21 " "
- EXPR_NUMBER@21..22
- FLOAT@21..22 "3"
- R_BRACK@22..23 "]"
- COMMA@23..24 ","
- WHITESPACE@24..25 " "
- MEMBER_FIELD_NORMAL@25..28
- FIELD_NAME_FIXED@25..26
- NAME@25..26
- IDENT@25..26 "b"
- COLON@26..27 ":"
- EXPR_NUMBER@27..28
- FLOAT@27..28 "1"
- R_BRACE@28..29 "}"
+ EXPR@0..29
+ EXPR_OBJECT@0..29
+ OBJ_BODY_MEMBER_LIST@0..29
+ L_BRACE@0..1 "{"
+ MEMBER_FIELD_NORMAL@1..4
+ FIELD_NAME_FIXED@1..2
+ NAME@1..2
+ IDENT@1..2 "a"
+ COLON@2..3 ":"
+ EXPR@3..4
+ EXPR_NUMBER@3..4
+ FLOAT@3..4 "1"
+ WHITESPACE@4..5 " "
+ ERROR_CUSTOM@5..23
+ FOR_SPEC@5..23
+ FOR_KW@5..8 "for"
+ WHITESPACE@8..9 " "
+ DESTRUCT_FULL@9..10
+ NAME@9..10
+ IDENT@9..10 "a"
+ WHITESPACE@10..11 " "
+ IN_KW@11..13 "in"
+ WHITESPACE@13..14 " "
+ EXPR@14..23
+ EXPR_ARRAY@14..23
+ L_BRACK@14..15 "["
+ EXPR@15..16
+ EXPR_NUMBER@15..16
+ FLOAT@15..16 "1"
+ COMMA@16..17 ","
+ WHITESPACE@17..18 " "
+ EXPR@18..19
+ EXPR_NUMBER@18..19
+ FLOAT@18..19 "2"
+ COMMA@19..20 ","
+ WHITESPACE@20..21 " "
+ EXPR@21..22
+ EXPR_NUMBER@21..22
+ FLOAT@21..22 "3"
+ R_BRACK@22..23 "]"
+ COMMA@23..24 ","
+ WHITESPACE@24..25 " "
+ MEMBER_FIELD_NORMAL@25..28
+ FIELD_NAME_FIXED@25..26
+ NAME@25..26
+ IDENT@25..26 "b"
+ COLON@26..27 ":"
+ EXPR@27..28
+ EXPR_NUMBER@27..28
+ FLOAT@27..28 "1"
+ R_BRACE@28..29 "}"
WHITESPACE@29..30 "\n"
===
-LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one array element" }, range: 5..23 }
+LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one object element" }, range: 5..23 }
===
x syntax error
,----
1 | {a:1 for a in [1, 2, 3], b:1}
: ^^^^^^^^^|^^^^^^^^
- : `-- compspec may only be used if there is only one array element
+ : `-- compspec may only be used if there is only one object element
`----
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_multiple_elems_w.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_multiple_elems_w.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_multiple_elems_w.snap
@@ -3,66 +3,75 @@
expression: "{a:1, b:1, for a in [1, 2, 3], c:1}\n"
---
SOURCE_FILE@0..36
- EXPR_OBJECT@0..35
- OBJ_BODY_MEMBER_LIST@0..35
- L_BRACE@0..1 "{"
- MEMBER_FIELD_NORMAL@1..4
- FIELD_NAME_FIXED@1..2
- NAME@1..2
- IDENT@1..2 "a"
- COLON@2..3 ":"
- EXPR_NUMBER@3..4
- FLOAT@3..4 "1"
- COMMA@4..5 ","
- WHITESPACE@5..6 " "
- MEMBER_FIELD_NORMAL@6..9
- FIELD_NAME_FIXED@6..7
- NAME@6..7
- IDENT@6..7 "b"
- COLON@7..8 ":"
- EXPR_NUMBER@8..9
- FLOAT@8..9 "1"
- COMMA@9..10 ","
- WHITESPACE@10..11 " "
- ERROR_CUSTOM@11..29
- FOR_SPEC@11..29
- FOR_KW@11..14 "for"
- WHITESPACE@14..15 " "
- NAME@15..16
- IDENT@15..16 "a"
- WHITESPACE@16..17 " "
- IN_KW@17..19 "in"
- WHITESPACE@19..20 " "
- EXPR_ARRAY@20..29
- L_BRACK@20..21 "["
- EXPR_NUMBER@21..22
- FLOAT@21..22 "1"
- COMMA@22..23 ","
- WHITESPACE@23..24 " "
- EXPR_NUMBER@24..25
- FLOAT@24..25 "2"
- COMMA@25..26 ","
- WHITESPACE@26..27 " "
- EXPR_NUMBER@27..28
- FLOAT@27..28 "3"
- R_BRACK@28..29 "]"
- COMMA@29..30 ","
- WHITESPACE@30..31 " "
- MEMBER_FIELD_NORMAL@31..34
- FIELD_NAME_FIXED@31..32
- NAME@31..32
- IDENT@31..32 "c"
- COLON@32..33 ":"
- EXPR_NUMBER@33..34
- FLOAT@33..34 "1"
- R_BRACE@34..35 "}"
+ EXPR@0..35
+ EXPR_OBJECT@0..35
+ OBJ_BODY_MEMBER_LIST@0..35
+ L_BRACE@0..1 "{"
+ MEMBER_FIELD_NORMAL@1..4
+ FIELD_NAME_FIXED@1..2
+ NAME@1..2
+ IDENT@1..2 "a"
+ COLON@2..3 ":"
+ EXPR@3..4
+ EXPR_NUMBER@3..4
+ FLOAT@3..4 "1"
+ COMMA@4..5 ","
+ WHITESPACE@5..6 " "
+ MEMBER_FIELD_NORMAL@6..9
+ FIELD_NAME_FIXED@6..7
+ NAME@6..7
+ IDENT@6..7 "b"
+ COLON@7..8 ":"
+ EXPR@8..9
+ EXPR_NUMBER@8..9
+ FLOAT@8..9 "1"
+ COMMA@9..10 ","
+ WHITESPACE@10..11 " "
+ ERROR_CUSTOM@11..29
+ FOR_SPEC@11..29
+ FOR_KW@11..14 "for"
+ WHITESPACE@14..15 " "
+ DESTRUCT_FULL@15..16
+ NAME@15..16
+ IDENT@15..16 "a"
+ WHITESPACE@16..17 " "
+ IN_KW@17..19 "in"
+ WHITESPACE@19..20 " "
+ EXPR@20..29
+ EXPR_ARRAY@20..29
+ L_BRACK@20..21 "["
+ EXPR@21..22
+ EXPR_NUMBER@21..22
+ FLOAT@21..22 "1"
+ COMMA@22..23 ","
+ WHITESPACE@23..24 " "
+ EXPR@24..25
+ EXPR_NUMBER@24..25
+ FLOAT@24..25 "2"
+ COMMA@25..26 ","
+ WHITESPACE@26..27 " "
+ EXPR@27..28
+ EXPR_NUMBER@27..28
+ FLOAT@27..28 "3"
+ R_BRACK@28..29 "]"
+ COMMA@29..30 ","
+ WHITESPACE@30..31 " "
+ MEMBER_FIELD_NORMAL@31..34
+ FIELD_NAME_FIXED@31..32
+ NAME@31..32
+ IDENT@31..32 "c"
+ COLON@32..33 ":"
+ EXPR@33..34
+ EXPR_NUMBER@33..34
+ FLOAT@33..34 "1"
+ R_BRACE@34..35 "}"
WHITESPACE@35..36 "\n"
===
-LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one array element" }, range: 11..29 }
+LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one object element" }, range: 11..29 }
===
x syntax error
,----
1 | {a:1, b:1, for a in [1, 2, 3], c:1}
: ^^^^^^^^^|^^^^^^^^
- : `-- compspec may only be used if there is only one array element
+ : `-- compspec may only be used if there is only one object element
`----
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_no_elems.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_no_elems.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_no_elems.snap
@@ -3,32 +3,38 @@
expression: "{for a in [1, 2, 3]}\n"
---
SOURCE_FILE@0..21
- EXPR_OBJECT@0..20
- OBJ_BODY_COMP@0..20
- L_BRACE@0..1 "{"
- ERROR_MISSING_TOKEN@1..1
- FOR_SPEC@1..19
- FOR_KW@1..4 "for"
- WHITESPACE@4..5 " "
- NAME@5..6
- IDENT@5..6 "a"
- WHITESPACE@6..7 " "
- IN_KW@7..9 "in"
- WHITESPACE@9..10 " "
- EXPR_ARRAY@10..19
- L_BRACK@10..11 "["
- EXPR_NUMBER@11..12
- FLOAT@11..12 "1"
- COMMA@12..13 ","
- WHITESPACE@13..14 " "
- EXPR_NUMBER@14..15
- FLOAT@14..15 "2"
- COMMA@15..16 ","
- WHITESPACE@16..17 " "
- EXPR_NUMBER@17..18
- FLOAT@17..18 "3"
- R_BRACK@18..19 "]"
- R_BRACE@19..20 "}"
+ EXPR@0..20
+ EXPR_OBJECT@0..20
+ OBJ_BODY_COMP@0..20
+ L_BRACE@0..1 "{"
+ ERROR_MISSING_TOKEN@1..1
+ FOR_SPEC@1..19
+ FOR_KW@1..4 "for"
+ WHITESPACE@4..5 " "
+ DESTRUCT_FULL@5..6
+ NAME@5..6
+ IDENT@5..6 "a"
+ WHITESPACE@6..7 " "
+ IN_KW@7..9 "in"
+ WHITESPACE@9..10 " "
+ EXPR@10..19
+ EXPR_ARRAY@10..19
+ L_BRACK@10..11 "["
+ EXPR@11..12
+ EXPR_NUMBER@11..12
+ FLOAT@11..12 "1"
+ COMMA@12..13 ","
+ WHITESPACE@13..14 " "
+ EXPR@14..15
+ EXPR_NUMBER@14..15
+ FLOAT@14..15 "2"
+ COMMA@15..16 ","
+ WHITESPACE@16..17 " "
+ EXPR@17..18
+ EXPR_NUMBER@17..18
+ FLOAT@17..18 "3"
+ R_BRACK@18..19 "]"
+ R_BRACE@19..20 "}"
WHITESPACE@20..21 "\n"
===
LocatedSyntaxError { error: Missing { expected: Named("field definition") }, range: 1..1 }
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_method.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_method.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_method.snap
@@ -3,47 +3,50 @@
expression: "{\n\ta(x): x,\n\ta: function(x) x,\n}\n"
---
SOURCE_FILE@0..33
- EXPR_OBJECT@0..32
- OBJ_BODY_MEMBER_LIST@0..32
- L_BRACE@0..1 "{"
- WHITESPACE@1..3 "\n\t"
- MEMBER_FIELD_METHOD@3..10
- FIELD_NAME_FIXED@3..4
- NAME@3..4
- IDENT@3..4 "a"
- PARAMS_DESC@4..7
- L_PAREN@4..5 "("
- PARAM@5..6
- DESTRUCT_FULL@5..6
- NAME@5..6
- IDENT@5..6 "x"
- R_PAREN@6..7 ")"
- COLON@7..8 ":"
- WHITESPACE@8..9 " "
- EXPR_VAR@9..10
- NAME@9..10
- IDENT@9..10 "x"
- COMMA@10..11 ","
- WHITESPACE@11..13 "\n\t"
- MEMBER_FIELD_METHOD@13..29
- FIELD_NAME_FIXED@13..14
- NAME@13..14
- IDENT@13..14 "a"
- COLON@14..15 ":"
- WHITESPACE@15..16 " "
- FUNCTION_KW@16..24 "function"
- PARAMS_DESC@24..27
- L_PAREN@24..25 "("
- PARAM@25..26
- DESTRUCT_FULL@25..26
- NAME@25..26
- IDENT@25..26 "x"
- R_PAREN@26..27 ")"
- WHITESPACE@27..28 " "
- EXPR_VAR@28..29
- NAME@28..29
- IDENT@28..29 "x"
- COMMA@29..30 ","
- WHITESPACE@30..31 "\n"
- R_BRACE@31..32 "}"
+ EXPR@0..32
+ EXPR_OBJECT@0..32
+ OBJ_BODY_MEMBER_LIST@0..32
+ L_BRACE@0..1 "{"
+ WHITESPACE@1..3 "\n\t"
+ MEMBER_FIELD_METHOD@3..10
+ FIELD_NAME_FIXED@3..4
+ NAME@3..4
+ IDENT@3..4 "a"
+ PARAMS_DESC@4..7
+ L_PAREN@4..5 "("
+ PARAM@5..6
+ DESTRUCT_FULL@5..6
+ NAME@5..6
+ IDENT@5..6 "x"
+ R_PAREN@6..7 ")"
+ COLON@7..8 ":"
+ WHITESPACE@8..9 " "
+ EXPR@9..10
+ EXPR_VAR@9..10
+ NAME@9..10
+ IDENT@9..10 "x"
+ COMMA@10..11 ","
+ WHITESPACE@11..13 "\n\t"
+ MEMBER_FIELD_METHOD@13..29
+ FIELD_NAME_FIXED@13..14
+ NAME@13..14
+ IDENT@13..14 "a"
+ COLON@14..15 ":"
+ WHITESPACE@15..16 " "
+ FUNCTION_KW@16..24 "function"
+ PARAMS_DESC@24..27
+ L_PAREN@24..25 "("
+ PARAM@25..26
+ DESTRUCT_FULL@25..26
+ NAME@25..26
+ IDENT@25..26 "x"
+ R_PAREN@26..27 ")"
+ WHITESPACE@27..28 " "
+ EXPR@28..29
+ EXPR_VAR@28..29
+ NAME@28..29
+ IDENT@28..29 "x"
+ COMMA@29..30 ","
+ WHITESPACE@30..31 "\n"
+ R_BRACE@31..32 "}"
WHITESPACE@32..33 "\n"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__plain_call.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__plain_call.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__plain_call.snap
@@ -3,51 +3,56 @@
expression: "std.substr(a, 0, std.length(b)) == b\n"
---
SOURCE_FILE@0..37
- EXPR_BINARY@0..36
- LHS_EXPR@0..31
- EXPR_APPLY@0..31
- EXPR_INDEX@0..10
- EXPR_VAR@0..3
- NAME@0..3
- IDENT@0..3 "std"
- DOT@3..4 "."
- NAME@4..10
- IDENT@4..10 "substr"
+ EXPR@0..36
+ EXPR_BINARY@0..36
+ EXPR@0..3
+ EXPR_VAR@0..3
+ NAME@0..3
+ IDENT@0..3 "std"
+ SUFFIX_INDEX@3..10
+ DOT@3..4 "."
+ NAME@4..10
+ IDENT@4..10 "substr"
+ SUFFIX_APPLY@10..31
ARGS_DESC@10..31
L_PAREN@10..11 "("
ARG@11..12
- EXPR_VAR@11..12
- NAME@11..12
- IDENT@11..12 "a"
+ EXPR@11..12
+ EXPR_VAR@11..12
+ NAME@11..12
+ IDENT@11..12 "a"
COMMA@12..13 ","
WHITESPACE@13..14 " "
ARG@14..15
- EXPR_NUMBER@14..15
- FLOAT@14..15 "0"
+ EXPR@14..15
+ EXPR_NUMBER@14..15
+ FLOAT@14..15 "0"
COMMA@15..16 ","
WHITESPACE@16..17 " "
ARG@17..30
- EXPR_APPLY@17..30
- EXPR_INDEX@17..27
- EXPR_VAR@17..20
- NAME@17..20
- IDENT@17..20 "std"
+ EXPR@17..30
+ EXPR_VAR@17..20
+ NAME@17..20
+ IDENT@17..20 "std"
+ SUFFIX_INDEX@20..27
DOT@20..21 "."
NAME@21..27
IDENT@21..27 "length"
- ARGS_DESC@27..30
- L_PAREN@27..28 "("
- ARG@28..29
- EXPR_VAR@28..29
- NAME@28..29
- IDENT@28..29 "b"
- R_PAREN@29..30 ")"
+ SUFFIX_APPLY@27..30
+ ARGS_DESC@27..30
+ L_PAREN@27..28 "("
+ ARG@28..29
+ EXPR@28..29
+ EXPR_VAR@28..29
+ NAME@28..29
+ IDENT@28..29 "b"
+ R_PAREN@29..30 ")"
R_PAREN@30..31 ")"
- WHITESPACE@31..32 " "
- EQ@32..34 "=="
- WHITESPACE@34..35 " "
- EXPR_VAR@35..36
- NAME@35..36
- IDENT@35..36 "b"
+ WHITESPACE@31..32 " "
+ EQ@32..34 "=="
+ WHITESPACE@34..35 " "
+ EXPR@35..36
+ EXPR_VAR@35..36
+ NAME@35..36
+ IDENT@35..36 "b"
WHITESPACE@36..37 "\n"
-
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__stdlib.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__stdlib.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__stdlib.snap
@@ -1,6750 +1,5686 @@
---
source: crates/jrsonnet-rowan-parser/src/tests.rs
-expression: "{\n local std = self,\n local id = std.id,\n\n thisFile:: error 'std.thisFile is deprecated, to enable its support in jrsonnet - recompile it with \"legacy-this-file\" support.\\nThis will slow down stdlib caching a bit, though',\n\n toString(a):: '' + a,\n\n lstripChars(str, chars)::\n if std.length(str) > 0 && std.member(chars, str[0]) then\n std.lstripChars(str[1:], chars)\n else\n str,\n\n rstripChars(str, chars)::\n local len = std.length(str);\n if len > 0 && std.member(chars, str[len - 1]) then\n std.rstripChars(str[:len - 1], chars)\n else\n str,\n\n stripChars(str, chars)::\n std.lstripChars(std.rstripChars(str, chars), chars),\n\n stringChars(str)::\n std.makeArray(std.length(str), function(i) str[i]),\n\n splitLimitR(str, c, maxsplits)::\n if maxsplits == -1 then\n std.splitLimit(str, c, -1)\n else\n local revStr(str) = std.join('', std.reverse(std.stringChars(str)));\n std.map(function(e) revStr(e), std.reverse(std.splitLimit(revStr(str), revStr(c), maxsplits))),\n\n split(str, c):: std.splitLimit(str, c, -1),\n\n mapWithIndex(func, arr)::\n if !std.isFunction(func) then\n error ('std.mapWithIndex first param must be function, got ' + std.type(func))\n else if !std.isArray(arr) && !std.isString(arr) then\n error ('std.mapWithIndex second param must be array, got ' + std.type(arr))\n else\n std.makeArray(std.length(arr), function(i) func(i, arr[i])),\n\n mapWithKey(func, obj)::\n if !std.isFunction(func) then\n error ('std.mapWithKey first param must be function, got ' + std.type(func))\n else if !std.isObject(obj) then\n error ('std.mapWithKey second param must be object, got ' + std.type(obj))\n else\n { [k]: func(k, obj[k]) for k in std.objectFields(obj) },\n\n lines(arr)::\n std.join('\\n', arr + ['']),\n\n deepJoin(arr)::\n if std.isString(arr) then\n arr\n else if std.isArray(arr) then\n std.join('', [std.deepJoin(x) for x in arr])\n else\n error 'Expected string or array, got %s' % std.type(arr),\n\n filterMap(filter_func, map_func, arr)::\n if !std.isFunction(filter_func) then\n error ('std.filterMap first param must be function, got ' + std.type(filter_func))\n else if !std.isFunction(map_func) then\n error ('std.filterMap second param must be function, got ' + std.type(map_func))\n else if !std.isArray(arr) then\n error ('std.filterMap third param must be array, got ' + std.type(arr))\n else\n std.map(map_func, std.filter(filter_func, arr)),\n\n assertEqual(a, b)::\n if a == b then\n true\n else\n error 'Assertion failed. ' + a + ' != ' + b,\n\n clamp(x, minVal, maxVal)::\n if x < minVal then minVal\n else if x > maxVal then maxVal\n else x,\n\n flattenArrays(arrs)::\n std.foldl(function(a, b) a + b, arrs, []),\n\n manifestIni(ini)::\n local body_lines(body) =\n std.join([], [\n local value_or_values = body[k];\n if std.isArray(value_or_values) then\n ['%s = %s' % [k, value] for value in value_or_values]\n else\n ['%s = %s' % [k, value_or_values]]\n\n for k in std.objectFields(body)\n ]);\n\n local section_lines(sname, sbody) = ['[%s]' % [sname]] + body_lines(sbody),\n main_body = if std.objectHas(ini, 'main') then body_lines(ini.main) else [],\n all_sections = [\n section_lines(k, ini.sections[k])\n for k in std.objectFields(ini.sections)\n ];\n std.join('\\n', main_body + std.flattenArrays(all_sections) + ['']),\n\n manifestToml(value):: std.manifestTomlEx(value, ' '),\n\n escapeStringPython(str)::\n std.escapeStringJson(str),\n\n escapeStringBash(str_)::\n local str = std.toString(str_);\n local trans(ch) =\n if ch == \"'\" then\n \"'\\\"'\\\"'\"\n else\n ch;\n \"'%s'\" % std.join('', [trans(ch) for ch in std.stringChars(str)]),\n\n escapeStringDollars(str_)::\n local str = std.toString(str_);\n local trans(ch) =\n if ch == '$' then\n '$$'\n else\n ch;\n std.foldl(function(a, b) a + trans(b), std.stringChars(str), ''),\n\n local xml_escapes = {\n '<': '<',\n '>': '>',\n '&': '&',\n '\"': '"',\n \"'\": ''',\n },\n\n escapeStringXML(str_)::\n local str = std.toString(str_);\n std.join('', [std.get(xml_escapes, ch, ch) for ch in std.stringChars(str)]),\n\n manifestJson(value):: std.manifestJsonEx(value, ' ') tailstrict,\n\n manifestJsonMinified(value):: std.manifestJsonEx(value, '', '', ':'),\n\n manifestYamlStream(value, indent_array_in_object=false, c_document_end=true, quote_keys=true)::\n if !std.isArray(value) then\n error 'manifestYamlStream only takes arrays, got ' + std.type(value)\n else\n '---\\n' + std.join(\n '\\n---\\n', [std.manifestYamlDoc(e, indent_array_in_object, quote_keys) for e in value]\n ) + if c_document_end then '\\n...\\n' else '\\n',\n\n manifestPython(v)::\n if std.isObject(v) then\n local fields = [\n '%s: %s' % [std.escapeStringPython(k), std.manifestPython(v[k])]\n for k in std.objectFields(v)\n ];\n '{%s}' % [std.join(', ', fields)]\n else if std.isArray(v) then\n '[%s]' % [std.join(', ', [std.manifestPython(v2) for v2 in v])]\n else if std.isString(v) then\n '%s' % [std.escapeStringPython(v)]\n else if std.isFunction(v) then\n error 'cannot manifest function'\n else if std.isNumber(v) then\n std.toString(v)\n else if v == true then\n 'True'\n else if v == false then\n 'False'\n else if v == null then\n 'None',\n\n manifestPythonVars(conf)::\n local vars = ['%s = %s' % [k, std.manifestPython(conf[k])] for k in std.objectFields(conf)];\n std.join('\\n', vars + ['']),\n\n manifestXmlJsonml(value)::\n if !std.isArray(value) then\n error 'Expected a JSONML value (an array), got %s' % std.type(value)\n else\n local aux(v) =\n if std.isString(v) then\n v\n else\n local tag = v[0];\n local has_attrs = std.length(v) > 1 && std.isObject(v[1]);\n local attrs = if has_attrs then v[1] else {};\n local children = if has_attrs then v[2:] else v[1:];\n local attrs_str =\n std.join('', [' %s=\"%s\"' % [k, attrs[k]] for k in std.objectFields(attrs)]);\n std.deepJoin(['<', tag, attrs_str, '>', [aux(x) for x in children], '</', tag, '>']);\n\n aux(value),\n\n setUnion(a, b, keyF=id)::\n // NOTE: order matters, values in `a` win\n local aux(a, b, i, j, acc) =\n if i >= std.length(a) then\n acc + b[j:]\n else if j >= std.length(b) then\n acc + a[i:]\n else\n local ak = keyF(a[i]);\n local bk = keyF(b[j]);\n if ak == bk then\n aux(a, b, i + 1, j + 1, acc + [a[i]]) tailstrict\n else if ak < bk then\n aux(a, b, i + 1, j, acc + [a[i]]) tailstrict\n else\n aux(a, b, i, j + 1, acc + [b[j]]) tailstrict;\n aux(a, b, 0, 0, []),\n\n setDiff(a, b, keyF=id)::\n local aux(a, b, i, j, acc) =\n if i >= std.length(a) then\n acc\n else if j >= std.length(b) then\n acc + a[i:]\n else\n if keyF(a[i]) == keyF(b[j]) then\n aux(a, b, i + 1, j + 1, acc) tailstrict\n else if keyF(a[i]) < keyF(b[j]) then\n aux(a, b, i + 1, j, acc + [a[i]]) tailstrict\n else\n aux(a, b, i, j + 1, acc) tailstrict;\n aux(a, b, 0, 0, []) tailstrict,\n\n mergePatch(target, patch)::\n if std.isObject(patch) then\n local target_object =\n if std.isObject(target) then target else {};\n\n local target_fields =\n if std.isObject(target_object) then std.objectFields(target_object) else [];\n\n local null_fields = [k for k in std.objectFields(patch) if patch[k] == null];\n local both_fields = std.setUnion(target_fields, std.objectFields(patch));\n\n {\n [k]:\n if !std.objectHas(patch, k) then\n target_object[k]\n else if !std.objectHas(target_object, k) then\n std.mergePatch(null, patch[k]) tailstrict\n else\n std.mergePatch(target_object[k], patch[k]) tailstrict\n for k in std.setDiff(both_fields, null_fields)\n }\n else\n patch,\n\n get(o, f, default=null, inc_hidden=true)::\n if std.objectHasEx(o, f, inc_hidden) then o[f] else default,\n\n objectFields(o)::\n std.objectFieldsEx(o, false),\n\n objectFieldsAll(o)::\n std.objectFieldsEx(o, true),\n\n objectHas(o, f)::\n std.objectHasEx(o, f, false),\n\n objectHasAll(o, f)::\n std.objectHasEx(o, f, true),\n\n objectValues(o)::\n [o[k] for k in std.objectFields(o)],\n\n objectValuesAll(o)::\n [o[k] for k in std.objectFieldsAll(o)],\n\n resolvePath(f, r)::\n local arr = std.split(f, '/');\n std.join('/', std.makeArray(std.length(arr) - 1, function(i) arr[i]) + [r]),\n\n prune(a)::\n local isContent(b) =\n if b == null then\n false\n else if std.isArray(b) then\n std.length(b) > 0\n else if std.isObject(b) then\n std.length(b) > 0\n else\n true;\n if std.isArray(a) then\n [std.prune(x) for x in a if isContent($.prune(x))]\n else if std.isObject(a) then {\n [x]: $.prune(a[x])\n for x in std.objectFields(a)\n if isContent(std.prune(a[x]))\n } else\n a,\n\n find(value, arr)::\n if !std.isArray(arr) then\n error 'find second parameter should be an array, got ' + std.type(arr)\n else\n std.filter(function(i) arr[i] == value, std.range(0, std.length(arr) - 1)),\n\n // Compat\n __compare_array(arr1, arr2)::\n assert std.isArray(arr1) && std.isArray(arr2);\n std.__compare(arr1, arr2),\n __array_less(arr1, arr2):: std.__compare_array(arr1, arr2) == -1,\n __array_greater(arr1, arr2):: std.__compare_array(arr1, arr2) == 1,\n __array_less_or_equal(arr1, arr2):: std.__compare_array(arr1, arr2) <= 0,\n __array_greater_or_equal(arr1, arr2):: std.__compare_array(arr1, arr2) >= 0,\n}\n"
+expression: "{\n local std = self,\n local id = std.id,\n\n thisFile:: error 'std.thisFile is deprecated, to enable its support in jrsonnet - recompile it with \"legacy-this-file\" support.\\nThis will slow down stdlib caching a bit, though',\n\n lstripChars(str, chars)::\n if std.length(str) > 0 && std.member(chars, str[0]) then\n std.lstripChars(str[1:], chars)\n else\n str,\n\n rstripChars(str, chars)::\n local len = std.length(str);\n if len > 0 && std.member(chars, str[len - 1]) then\n std.rstripChars(str[:len - 1], chars)\n else\n str,\n\n stripChars(str, chars)::\n std.lstripChars(std.rstripChars(str, chars), chars),\n\n splitLimitR(str, c, maxsplits)::\n if maxsplits == -1 then\n std.splitLimit(str, c, -1)\n else\n local revStr(str) = std.join('', std.reverse(std.stringChars(str)));\n std.map(function(e) revStr(e), std.reverse(std.splitLimit(revStr(str), revStr(c), maxsplits))),\n\n split(str, c):: std.splitLimit(str, c, -1),\n\n mapWithIndex(func, arr)::\n if !std.isFunction(func) then\n error ('std.mapWithIndex first param must be function, got ' + std.type(func))\n else if !std.isArray(arr) && !std.isString(arr) then\n error ('std.mapWithIndex second param must be array, got ' + std.type(arr))\n else\n std.makeArray(std.length(arr), function(i) func(i, arr[i])),\n\n mapWithKey(func, obj)::\n if !std.isFunction(func) then\n error ('std.mapWithKey first param must be function, got ' + std.type(func))\n else if !std.isObject(obj) then\n error ('std.mapWithKey second param must be object, got ' + std.type(obj))\n else\n { [k]: func(k, obj[k]) for k in std.objectFields(obj) },\n\n lines(arr)::\n std.join('\\n', arr + ['']),\n\n deepJoin(arr)::\n if std.isString(arr) then\n arr\n else if std.isArray(arr) then\n std.join('', [std.deepJoin(x) for x in arr])\n else\n error 'Expected string or array, got %s' % std.type(arr),\n\n assertEqual(a, b)::\n if a == b then\n true\n else\n error 'Assertion failed. ' + a + ' != ' + b,\n\n clamp(x, minVal, maxVal)::\n if x < minVal then minVal\n else if x > maxVal then maxVal\n else x,\n\n manifestIni(ini)::\n local body_lines(body) =\n std.join([], [\n local value_or_values = body[k];\n if std.isArray(value_or_values) then\n ['%s = %s' % [k, value] for value in value_or_values]\n else\n ['%s = %s' % [k, value_or_values]]\n\n for k in std.objectFields(body)\n ]);\n\n local section_lines(sname, sbody) = ['[%s]' % [sname]] + body_lines(sbody),\n main_body = if std.objectHas(ini, 'main') then body_lines(ini.main) else [],\n all_sections = [\n section_lines(k, ini.sections[k])\n for k in std.objectFields(ini.sections)\n ];\n std.join('\\n', main_body + std.flattenArrays(all_sections) + ['']),\n\n manifestToml(value):: std.manifestTomlEx(value, ' '),\n\n escapeStringPython(str)::\n std.escapeStringJson(str),\n\n escapeStringBash(str_)::\n local str = std.toString(str_);\n local trans(ch) =\n if ch == \"'\" then\n \"'\\\"'\\\"'\"\n else\n ch;\n \"'%s'\" % std.join('', [trans(ch) for ch in std.stringChars(str)]),\n\n escapeStringDollars(str_)::\n local str = std.toString(str_);\n local trans(ch) =\n if ch == '$' then\n '$$'\n else\n ch;\n std.foldl(function(a, b) a + trans(b), std.stringChars(str), ''),\n\n local xml_escapes = {\n '<': '<',\n '>': '>',\n '&': '&',\n '\"': '"',\n \"'\": ''',\n },\n\n escapeStringXML(str_)::\n local str = std.toString(str_);\n std.join('', [std.get(xml_escapes, ch, ch) for ch in std.stringChars(str)]),\n\n manifestJson(value):: std.manifestJsonEx(value, ' ') tailstrict,\n\n manifestJsonMinified(value):: std.manifestJsonEx(value, '', '', ':'),\n\n manifestYamlStream(value, indent_array_in_object=false, c_document_end=true, quote_keys=true)::\n if !std.isArray(value) then\n error 'manifestYamlStream only takes arrays, got ' + std.type(value)\n else\n '---\\n' + std.join(\n '\\n---\\n', [std.manifestYamlDoc(e, indent_array_in_object, quote_keys) for e in value]\n ) + if c_document_end then '\\n...\\n' else '\\n',\n\n manifestPython(v)::\n if std.isObject(v) then\n local fields = [\n '%s: %s' % [std.escapeStringPython(k), std.manifestPython(v[k])]\n for k in std.objectFields(v)\n ];\n '{%s}' % [std.join(', ', fields)]\n else if std.isArray(v) then\n '[%s]' % [std.join(', ', [std.manifestPython(v2) for v2 in v])]\n else if std.isString(v) then\n '%s' % [std.escapeStringPython(v)]\n else if std.isFunction(v) then\n error 'cannot manifest function'\n else if std.isNumber(v) then\n std.toString(v)\n else if v == true then\n 'True'\n else if v == false then\n 'False'\n else if v == null then\n 'None',\n\n manifestPythonVars(conf)::\n local vars = ['%s = %s' % [k, std.manifestPython(conf[k])] for k in std.objectFields(conf)];\n std.join('\\n', vars + ['']),\n\n manifestXmlJsonml(value)::\n if !std.isArray(value) then\n error 'Expected a JSONML value (an array), got %s' % std.type(value)\n else\n local aux(v) =\n if std.isString(v) then\n v\n else\n local tag = v[0];\n local has_attrs = std.length(v) > 1 && std.isObject(v[1]);\n local attrs = if has_attrs then v[1] else {};\n local children = if has_attrs then v[2:] else v[1:];\n local attrs_str =\n std.join('', [' %s=\"%s\"' % [k, attrs[k]] for k in std.objectFields(attrs)]);\n std.deepJoin(['<', tag, attrs_str, '>', [aux(x) for x in children], '</', tag, '>']);\n\n aux(value),\n\n mergePatch(target, patch)::\n if std.isObject(patch) then\n local target_object =\n if std.isObject(target) then target else {};\n\n local target_fields =\n if std.isObject(target_object) then std.objectFields(target_object) else [];\n\n local null_fields = [k for k in std.objectFields(patch) if patch[k] == null];\n local both_fields = std.setUnion(target_fields, std.objectFields(patch));\n\n {\n [k]:\n if !std.objectHas(patch, k) then\n target_object[k]\n else if !std.objectHas(target_object, k) then\n std.mergePatch(null, patch[k]) tailstrict\n else\n std.mergePatch(target_object[k], patch[k]) tailstrict\n for k in std.setDiff(both_fields, null_fields)\n }\n else\n patch,\n\n get(o, f, default=null, inc_hidden=true)::\n if std.objectHasEx(o, f, inc_hidden) then o[f] else default,\n\n resolvePath(f, r)::\n local arr = std.split(f, '/');\n std.join('/', std.makeArray(std.length(arr) - 1, function(i) arr[i]) + [r]),\n\n prune(a)::\n local isContent(b) =\n if b == null then\n false\n else if std.isArray(b) then\n std.length(b) > 0\n else if std.isObject(b) then\n std.length(b) > 0\n else\n true;\n if std.isArray(a) then\n [std.prune(x) for x in a if isContent($.prune(x))]\n else if std.isObject(a) then {\n [x]: $.prune(a[x])\n for x in std.objectFields(a)\n if isContent(std.prune(a[x]))\n } else\n a,\n\n find(value, arr)::\n if !std.isArray(arr) then\n error 'find second parameter should be an array, got ' + std.type(arr)\n else\n std.filter(function(i) arr[i] == value, std.range(0, std.length(arr) - 1)),\n\n // Compat\n __compare_array(arr1, arr2)::\n assert std.isArray(arr1) && std.isArray(arr2);\n std.__compare(arr1, arr2),\n __array_less(arr1, arr2):: std.__compare_array(arr1, arr2) == -1,\n __array_greater(arr1, arr2):: std.__compare_array(arr1, arr2) == 1,\n __array_less_or_equal(arr1, arr2):: std.__compare_array(arr1, arr2) <= 0,\n __array_greater_or_equal(arr1, arr2):: std.__compare_array(arr1, arr2) >= 0,\n}\n"
---
-SOURCE_FILE@0..9860
- EXPR_OBJECT@0..9859
- OBJ_BODY_MEMBER_LIST@0..9859
- L_BRACE@0..1 "{"
- WHITESPACE@1..4 "\n "
- MEMBER_BIND_STMT@4..20
- OBJ_LOCAL@4..20
- LOCAL_KW@4..9 "local"
- WHITESPACE@9..10 " "
- BIND_DESTRUCT@10..20
- DESTRUCT_FULL@10..13
- NAME@10..13
- IDENT@10..13 "std"
- WHITESPACE@13..14 " "
- ASSIGN@14..15 "="
- WHITESPACE@15..16 " "
- EXPR_LITERAL@16..20
- SELF_KW@16..20 "self"
- COMMA@20..21 ","
- WHITESPACE@21..24 "\n "
- MEMBER_BIND_STMT@24..41
- OBJ_LOCAL@24..41
- LOCAL_KW@24..29 "local"
- WHITESPACE@29..30 " "
- BIND_DESTRUCT@30..41
- DESTRUCT_FULL@30..32
- NAME@30..32
- IDENT@30..32 "id"
- WHITESPACE@32..33 " "
- ASSIGN@33..34 "="
- WHITESPACE@34..35 " "
- EXPR_INDEX@35..41
- EXPR_VAR@35..38
- NAME@35..38
- IDENT@35..38 "std"
- DOT@38..39 "."
- NAME@39..41
- IDENT@39..41 "id"
- COMMA@41..42 ","
- WHITESPACE@42..46 "\n\n "
- MEMBER_FIELD_NORMAL@46..224
- FIELD_NAME_FIXED@46..54
- NAME@46..54
- IDENT@46..54 "thisFile"
- COLONCOLON@54..56 "::"
- WHITESPACE@56..57 " "
- EXPR_ERROR@57..224
- ERROR_KW@57..62 "error"
- WHITESPACE@62..63 " "
- EXPR_STRING@63..224
- STRING_SINGLE@63..224 "'std.thisFile is depr ..."
- COMMA@224..225 ","
- WHITESPACE@225..229 "\n\n "
- MEMBER_FIELD_METHOD@229..249
- FIELD_NAME_FIXED@229..237
- NAME@229..237
- IDENT@229..237 "toString"
- PARAMS_DESC@237..240
- L_PAREN@237..238 "("
- PARAM@238..239
- DESTRUCT_FULL@238..239
- NAME@238..239
- IDENT@238..239 "a"
- R_PAREN@239..240 ")"
- COLONCOLON@240..242 "::"
- WHITESPACE@242..243 " "
- EXPR_BINARY@243..249
- LHS_EXPR@243..245
- EXPR_STRING@243..245
- STRING_SINGLE@243..245 "''"
- WHITESPACE@245..246 " "
- PLUS@246..247 "+"
- WHITESPACE@247..248 " "
- EXPR_VAR@248..249
- NAME@248..249
- IDENT@248..249 "a"
- COMMA@249..250 ","
- WHITESPACE@250..254 "\n\n "
- MEMBER_FIELD_METHOD@254..397
- FIELD_NAME_FIXED@254..265
- NAME@254..265
- IDENT@254..265 "lstripChars"
- PARAMS_DESC@265..277
- L_PAREN@265..266 "("
- PARAM@266..269
- DESTRUCT_FULL@266..269
- NAME@266..269
- IDENT@266..269 "str"
- COMMA@269..270 ","
- WHITESPACE@270..271 " "
- PARAM@271..276
- DESTRUCT_FULL@271..276
- NAME@271..276
- IDENT@271..276 "chars"
- R_PAREN@276..277 ")"
- COLONCOLON@277..279 "::"
- WHITESPACE@279..284 "\n "
- EXPR_IF_THEN_ELSE@284..397
- IF_KW@284..286 "if"
- WHITESPACE@286..287 " "
- EXPR_BINARY@287..335
- LHS_EXPR@287..306
- EXPR_BINARY@287..306
- LHS_EXPR@287..302
- EXPR_APPLY@287..302
- EXPR_INDEX@287..297
- EXPR_VAR@287..290
- NAME@287..290
- IDENT@287..290 "std"
- DOT@290..291 "."
- NAME@291..297
- IDENT@291..297 "length"
- ARGS_DESC@297..302
- L_PAREN@297..298 "("
- ARG@298..301
- EXPR_VAR@298..301
- NAME@298..301
- IDENT@298..301 "str"
- R_PAREN@301..302 ")"
- WHITESPACE@302..303 " "
- GT@303..304 ">"
- WHITESPACE@304..305 " "
- EXPR_NUMBER@305..306
- FLOAT@305..306 "0"
- WHITESPACE@306..307 " "
- AND@307..309 "&&"
- WHITESPACE@309..310 " "
- EXPR_APPLY@310..335
- EXPR_INDEX@310..320
- EXPR_VAR@310..313
- NAME@310..313
- IDENT@310..313 "std"
- DOT@313..314 "."
- NAME@314..320
- IDENT@314..320 "member"
- ARGS_DESC@320..335
- L_PAREN@320..321 "("
- ARG@321..326
- EXPR_VAR@321..326
- NAME@321..326
- IDENT@321..326 "chars"
- COMMA@326..327 ","
- WHITESPACE@327..328 " "
- ARG@328..334
- EXPR_INDEX_EXPR@328..334
- LHS_EXPR@328..331
- EXPR_VAR@328..331
- NAME@328..331
- IDENT@328..331 "str"
- L_BRACK@331..332 "["
- EXPR_NUMBER@332..333
- FLOAT@332..333 "0"
- R_BRACK@333..334 "]"
- R_PAREN@334..335 ")"
- WHITESPACE@335..336 " "
- THEN_KW@336..340 "then"
- WHITESPACE@340..347 "\n "
- TRUE_EXPR@347..378
- EXPR_APPLY@347..378
- EXPR_INDEX@347..362
- EXPR_VAR@347..350
- NAME@347..350
- IDENT@347..350 "std"
- DOT@350..351 "."
- NAME@351..362
- IDENT@351..362 "lstripChars"
- ARGS_DESC@362..378
- L_PAREN@362..363 "("
- ARG@363..370
- EXPR_SLICE@363..370
- EXPR_VAR@363..366
- NAME@363..366
- IDENT@363..366 "str"
- SLICE_DESC@366..370
- L_BRACK@366..367 "["
- EXPR_NUMBER@367..368
- FLOAT@367..368 "1"
- COLON@368..369 ":"
- R_BRACK@369..370 "]"
- COMMA@370..371 ","
- WHITESPACE@371..372 " "
- ARG@372..377
- EXPR_VAR@372..377
- NAME@372..377
- IDENT@372..377 "chars"
- R_PAREN@377..378 ")"
- WHITESPACE@378..383 "\n "
- ELSE_KW@383..387 "else"
- WHITESPACE@387..394 "\n "
- FALSE_EXPR@394..397
- EXPR_VAR@394..397
- NAME@394..397
- IDENT@394..397 "str"
- COMMA@397..398 ","
- WHITESPACE@398..402 "\n\n "
- MEMBER_FIELD_METHOD@402..578
- FIELD_NAME_FIXED@402..413
- NAME@402..413
- IDENT@402..413 "rstripChars"
- PARAMS_DESC@413..425
- L_PAREN@413..414 "("
- PARAM@414..417
- DESTRUCT_FULL@414..417
- NAME@414..417
- IDENT@414..417 "str"
- COMMA@417..418 ","
- WHITESPACE@418..419 " "
- PARAM@419..424
- DESTRUCT_FULL@419..424
- NAME@419..424
- IDENT@419..424 "chars"
- R_PAREN@424..425 ")"
- COLONCOLON@425..427 "::"
- WHITESPACE@427..432 "\n "
- STMT_LOCAL@432..460
- LOCAL_KW@432..437 "local"
- WHITESPACE@437..438 " "
- BIND_DESTRUCT@438..459
- DESTRUCT_FULL@438..441
- NAME@438..441
- IDENT@438..441 "len"
- WHITESPACE@441..442 " "
- ASSIGN@442..443 "="
- WHITESPACE@443..444 " "
- EXPR_APPLY@444..459
- EXPR_INDEX@444..454
- EXPR_VAR@444..447
- NAME@444..447
- IDENT@444..447 "std"
- DOT@447..448 "."
- NAME@448..454
- IDENT@448..454 "length"
- ARGS_DESC@454..459
- L_PAREN@454..455 "("
- ARG@455..458
- EXPR_VAR@455..458
- NAME@455..458
- IDENT@455..458 "str"
- R_PAREN@458..459 ")"
- SEMI@459..460 ";"
- WHITESPACE@460..465 "\n "
- EXPR_IF_THEN_ELSE@465..578
- IF_KW@465..467 "if"
- WHITESPACE@467..468 " "
- EXPR_BINARY@468..510
- LHS_EXPR@468..475
- EXPR_BINARY@468..475
- LHS_EXPR@468..471
- EXPR_VAR@468..471
- NAME@468..471
- IDENT@468..471 "len"
- WHITESPACE@471..472 " "
- GT@472..473 ">"
- WHITESPACE@473..474 " "
- EXPR_NUMBER@474..475
- FLOAT@474..475 "0"
- WHITESPACE@475..476 " "
- AND@476..478 "&&"
- WHITESPACE@478..479 " "
- EXPR_APPLY@479..510
- EXPR_INDEX@479..489
- EXPR_VAR@479..482
- NAME@479..482
- IDENT@479..482 "std"
- DOT@482..483 "."
- NAME@483..489
- IDENT@483..489 "member"
- ARGS_DESC@489..510
- L_PAREN@489..490 "("
- ARG@490..495
- EXPR_VAR@490..495
- NAME@490..495
- IDENT@490..495 "chars"
- COMMA@495..496 ","
- WHITESPACE@496..497 " "
- ARG@497..509
- EXPR_INDEX_EXPR@497..509
- LHS_EXPR@497..500
- EXPR_VAR@497..500
- NAME@497..500
- IDENT@497..500 "str"
- L_BRACK@500..501 "["
- EXPR_BINARY@501..508
- LHS_EXPR@501..504
- EXPR_VAR@501..504
- NAME@501..504
- IDENT@501..504 "len"
- WHITESPACE@504..505 " "
- MINUS@505..506 "-"
- WHITESPACE@506..507 " "
- EXPR_NUMBER@507..508
- FLOAT@507..508 "1"
- R_BRACK@508..509 "]"
- R_PAREN@509..510 ")"
- WHITESPACE@510..511 " "
- THEN_KW@511..515 "then"
- WHITESPACE@515..522 "\n "
- TRUE_EXPR@522..559
- EXPR_APPLY@522..559
- EXPR_INDEX@522..537
- EXPR_VAR@522..525
- NAME@522..525
- IDENT@522..525 "std"
- DOT@525..526 "."
- NAME@526..537
- IDENT@526..537 "rstripChars"
- ARGS_DESC@537..559
- L_PAREN@537..538 "("
- ARG@538..551
- EXPR_SLICE@538..551
- EXPR_VAR@538..541
- NAME@538..541
- IDENT@538..541 "str"
- SLICE_DESC@541..551
- L_BRACK@541..542 "["
- COLON@542..543 ":"
- SLICE_DESC_END@543..550
- EXPR_BINARY@543..550
- LHS_EXPR@543..546
- EXPR_VAR@543..546
- NAME@543..546
- IDENT@543..546 "len"
- WHITESPACE@546..547 " "
- MINUS@547..548 "-"
- WHITESPACE@548..549 " "
- EXPR_NUMBER@549..550
- FLOAT@549..550 "1"
- R_BRACK@550..551 "]"
- COMMA@551..552 ","
- WHITESPACE@552..553 " "
- ARG@553..558
- EXPR_VAR@553..558
- NAME@553..558
- IDENT@553..558 "chars"
- R_PAREN@558..559 ")"
- WHITESPACE@559..564 "\n "
- ELSE_KW@564..568 "else"
- WHITESPACE@568..575 "\n "
- FALSE_EXPR@575..578
- EXPR_VAR@575..578
- NAME@575..578
- IDENT@575..578 "str"
- COMMA@578..579 ","
- WHITESPACE@579..583 "\n\n "
- MEMBER_FIELD_METHOD@583..663
- FIELD_NAME_FIXED@583..593
- NAME@583..593
- IDENT@583..593 "stripChars"
- PARAMS_DESC@593..605
- L_PAREN@593..594 "("
- PARAM@594..597
- DESTRUCT_FULL@594..597
- NAME@594..597
- IDENT@594..597 "str"
- COMMA@597..598 ","
- WHITESPACE@598..599 " "
- PARAM@599..604
- DESTRUCT_FULL@599..604
- NAME@599..604
- IDENT@599..604 "chars"
- R_PAREN@604..605 ")"
- COLONCOLON@605..607 "::"
- WHITESPACE@607..612 "\n "
- EXPR_APPLY@612..663
- EXPR_INDEX@612..627
- EXPR_VAR@612..615
- NAME@612..615
- IDENT@612..615 "std"
- DOT@615..616 "."
- NAME@616..627
- IDENT@616..627 "lstripChars"
- ARGS_DESC@627..663
- L_PAREN@627..628 "("
- ARG@628..655
- EXPR_APPLY@628..655
- EXPR_INDEX@628..643
- EXPR_VAR@628..631
- NAME@628..631
- IDENT@628..631 "std"
- DOT@631..632 "."
- NAME@632..643
- IDENT@632..643 "rstripChars"
- ARGS_DESC@643..655
- L_PAREN@643..644 "("
- ARG@644..647
- EXPR_VAR@644..647
- NAME@644..647
- IDENT@644..647 "str"
- COMMA@647..648 ","
- WHITESPACE@648..649 " "
- ARG@649..654
- EXPR_VAR@649..654
- NAME@649..654
- IDENT@649..654 "chars"
- R_PAREN@654..655 ")"
- COMMA@655..656 ","
- WHITESPACE@656..657 " "
- ARG@657..662
- EXPR_VAR@657..662
- NAME@657..662
- IDENT@657..662 "chars"
- R_PAREN@662..663 ")"
- COMMA@663..664 ","
- WHITESPACE@664..668 "\n\n "
- MEMBER_FIELD_METHOD@668..741
- FIELD_NAME_FIXED@668..679
- NAME@668..679
- IDENT@668..679 "stringChars"
- PARAMS_DESC@679..684
- L_PAREN@679..680 "("
- PARAM@680..683
- DESTRUCT_FULL@680..683
- NAME@680..683
- IDENT@680..683 "str"
- R_PAREN@683..684 ")"
- COLONCOLON@684..686 "::"
- WHITESPACE@686..691 "\n "
- EXPR_APPLY@691..741
- EXPR_INDEX@691..704
- EXPR_VAR@691..694
- NAME@691..694
- IDENT@691..694 "std"
- DOT@694..695 "."
- NAME@695..704
- IDENT@695..704 "makeArray"
- ARGS_DESC@704..741
- L_PAREN@704..705 "("
- ARG@705..720
- EXPR_APPLY@705..720
- EXPR_INDEX@705..715
- EXPR_VAR@705..708
- NAME@705..708
- IDENT@705..708 "std"
- DOT@708..709 "."
- NAME@709..715
- IDENT@709..715 "length"
- ARGS_DESC@715..720
- L_PAREN@715..716 "("
- ARG@716..719
- EXPR_VAR@716..719
- NAME@716..719
- IDENT@716..719 "str"
- R_PAREN@719..720 ")"
- COMMA@720..721 ","
- WHITESPACE@721..722 " "
- ARG@722..740
- EXPR_FUNCTION@722..740
- FUNCTION_KW@722..730 "function"
- PARAMS_DESC@730..733
- L_PAREN@730..731 "("
- PARAM@731..732
- DESTRUCT_FULL@731..732
- NAME@731..732
- IDENT@731..732 "i"
- R_PAREN@732..733 ")"
- WHITESPACE@733..734 " "
- EXPR_INDEX_EXPR@734..740
- LHS_EXPR@734..737
- EXPR_VAR@734..737
- NAME@734..737
- IDENT@734..737 "str"
- L_BRACK@737..738 "["
- EXPR_VAR@738..739
- NAME@738..739
- IDENT@738..739 "i"
- R_BRACK@739..740 "]"
- R_PAREN@740..741 ")"
- COMMA@741..742 ","
- WHITESPACE@742..746 "\n\n "
- MEMBER_FIELD_METHOD@746..1024
- FIELD_NAME_FIXED@746..757
- NAME@746..757
- IDENT@746..757 "splitLimitR"
- PARAMS_DESC@757..776
- L_PAREN@757..758 "("
- PARAM@758..761
- DESTRUCT_FULL@758..761
- NAME@758..761
- IDENT@758..761 "str"
- COMMA@761..762 ","
- WHITESPACE@762..763 " "
- PARAM@763..764
- DESTRUCT_FULL@763..764
- NAME@763..764
- IDENT@763..764 "c"
- COMMA@764..765 ","
- WHITESPACE@765..766 " "
- PARAM@766..775
- DESTRUCT_FULL@766..775
- NAME@766..775
- IDENT@766..775 "maxsplits"
- R_PAREN@775..776 ")"
- COLONCOLON@776..778 "::"
- WHITESPACE@778..783 "\n "
- EXPR_IF_THEN_ELSE@783..1024
- IF_KW@783..785 "if"
- WHITESPACE@785..786 " "
- EXPR_BINARY@786..801
- LHS_EXPR@786..795
- EXPR_VAR@786..795
- NAME@786..795
- IDENT@786..795 "maxsplits"
- WHITESPACE@795..796 " "
- EQ@796..798 "=="
- WHITESPACE@798..799 " "
- EXPR_UNARY@799..801
- MINUS@799..800 "-"
- EXPR_NUMBER@800..801
- FLOAT@800..801 "1"
- WHITESPACE@801..802 " "
- THEN_KW@802..806 "then"
- WHITESPACE@806..813 "\n "
- TRUE_EXPR@813..839
- EXPR_APPLY@813..839
- EXPR_INDEX@813..827
- EXPR_VAR@813..816
- NAME@813..816
- IDENT@813..816 "std"
- DOT@816..817 "."
- NAME@817..827
- IDENT@817..827 "splitLimit"
- ARGS_DESC@827..839
- L_PAREN@827..828 "("
- ARG@828..831
- EXPR_VAR@828..831
- NAME@828..831
- IDENT@828..831 "str"
- COMMA@831..832 ","
- WHITESPACE@832..833 " "
- ARG@833..834
- EXPR_VAR@833..834
- NAME@833..834
- IDENT@833..834 "c"
- COMMA@834..835 ","
- WHITESPACE@835..836 " "
- ARG@836..838
- EXPR_UNARY@836..838
- MINUS@836..837 "-"
- EXPR_NUMBER@837..838
- FLOAT@837..838 "1"
- R_PAREN@838..839 ")"
- WHITESPACE@839..844 "\n "
- ELSE_KW@844..848 "else"
- WHITESPACE@848..855 "\n "
- STMT_LOCAL@855..923
- LOCAL_KW@855..860 "local"
- WHITESPACE@860..861 " "
- BIND_FUNCTION@861..922
- NAME@861..867
- IDENT@861..867 "revStr"
- PARAMS_DESC@867..872
- L_PAREN@867..868 "("
- PARAM@868..871
- DESTRUCT_FULL@868..871
- NAME@868..871
- IDENT@868..871 "str"
- R_PAREN@871..872 ")"
- WHITESPACE@872..873 " "
- ASSIGN@873..874 "="
- WHITESPACE@874..875 " "
- EXPR_APPLY@875..922
- EXPR_INDEX@875..883
- EXPR_VAR@875..878
- NAME@875..878
- IDENT@875..878 "std"
- DOT@878..879 "."
- NAME@879..883
- IDENT@879..883 "join"
- ARGS_DESC@883..922
- L_PAREN@883..884 "("
- ARG@884..886
- EXPR_STRING@884..886
- STRING_SINGLE@884..886 "''"
- COMMA@886..887 ","
- WHITESPACE@887..888 " "
- ARG@888..921
- EXPR_APPLY@888..921
- EXPR_INDEX@888..899
- EXPR_VAR@888..891
- NAME@888..891
- IDENT@888..891 "std"
- DOT@891..892 "."
- NAME@892..899
- IDENT@892..899 "reverse"
- ARGS_DESC@899..921
- L_PAREN@899..900 "("
- ARG@900..920
- EXPR_APPLY@900..920
- EXPR_INDEX@900..915
- EXPR_VAR@900..903
- NAME@900..903
- IDENT@900..903 "std"
- DOT@903..904 "."
- NAME@904..915
- IDENT@904..915 "stringChars"
- ARGS_DESC@915..920
- L_PAREN@915..916 "("
- ARG@916..919
- EXPR_VAR@916..919
- NAME@916..919
- IDENT@916..919 "str"
+SOURCE_FILE@0..7835
+ EXPR@0..7834
+ EXPR_OBJECT@0..7834
+ OBJ_BODY_MEMBER_LIST@0..7834
+ L_BRACE@0..1 "{"
+ WHITESPACE@1..4 "\n "
+ MEMBER_BIND_STMT@4..20
+ OBJ_LOCAL@4..20
+ LOCAL_KW@4..9 "local"
+ WHITESPACE@9..10 " "
+ BIND_DESTRUCT@10..20
+ DESTRUCT_FULL@10..13
+ NAME@10..13
+ IDENT@10..13 "std"
+ WHITESPACE@13..14 " "
+ ASSIGN@14..15 "="
+ WHITESPACE@15..16 " "
+ EXPR@16..20
+ EXPR_LITERAL@16..20
+ SELF_KW@16..20 "self"
+ COMMA@20..21 ","
+ WHITESPACE@21..24 "\n "
+ MEMBER_BIND_STMT@24..41
+ OBJ_LOCAL@24..41
+ LOCAL_KW@24..29 "local"
+ WHITESPACE@29..30 " "
+ BIND_DESTRUCT@30..41
+ DESTRUCT_FULL@30..32
+ NAME@30..32
+ IDENT@30..32 "id"
+ WHITESPACE@32..33 " "
+ ASSIGN@33..34 "="
+ WHITESPACE@34..35 " "
+ EXPR@35..41
+ EXPR_VAR@35..38
+ NAME@35..38
+ IDENT@35..38 "std"
+ SUFFIX_INDEX@38..41
+ DOT@38..39 "."
+ NAME@39..41
+ IDENT@39..41 "id"
+ COMMA@41..42 ","
+ WHITESPACE@42..46 "\n\n "
+ MEMBER_FIELD_NORMAL@46..224
+ FIELD_NAME_FIXED@46..54
+ NAME@46..54
+ IDENT@46..54 "thisFile"
+ COLONCOLON@54..56 "::"
+ WHITESPACE@56..57 " "
+ EXPR@57..224
+ EXPR_ERROR@57..224
+ ERROR_KW@57..62 "error"
+ WHITESPACE@62..63 " "
+ EXPR@63..224
+ EXPR_STRING@63..224
+ STRING_SINGLE@63..224 "'std.thisFile is depr ..."
+ COMMA@224..225 ","
+ WHITESPACE@225..229 "\n\n "
+ MEMBER_FIELD_METHOD@229..372
+ FIELD_NAME_FIXED@229..240
+ NAME@229..240
+ IDENT@229..240 "lstripChars"
+ PARAMS_DESC@240..252
+ L_PAREN@240..241 "("
+ PARAM@241..244
+ DESTRUCT_FULL@241..244
+ NAME@241..244
+ IDENT@241..244 "str"
+ COMMA@244..245 ","
+ WHITESPACE@245..246 " "
+ PARAM@246..251
+ DESTRUCT_FULL@246..251
+ NAME@246..251
+ IDENT@246..251 "chars"
+ R_PAREN@251..252 ")"
+ COLONCOLON@252..254 "::"
+ WHITESPACE@254..259 "\n "
+ EXPR@259..372
+ EXPR_IF_THEN_ELSE@259..372
+ IF_KW@259..261 "if"
+ WHITESPACE@261..262 " "
+ EXPR@262..310
+ EXPR_BINARY@262..310
+ EXPR@262..281
+ EXPR_BINARY@262..281
+ EXPR@262..265
+ EXPR_VAR@262..265
+ NAME@262..265
+ IDENT@262..265 "std"
+ SUFFIX_INDEX@265..272
+ DOT@265..266 "."
+ NAME@266..272
+ IDENT@266..272 "length"
+ SUFFIX_APPLY@272..277
+ ARGS_DESC@272..277
+ L_PAREN@272..273 "("
+ ARG@273..276
+ EXPR@273..276
+ EXPR_VAR@273..276
+ NAME@273..276
+ IDENT@273..276 "str"
+ R_PAREN@276..277 ")"
+ WHITESPACE@277..278 " "
+ GT@278..279 ">"
+ WHITESPACE@279..280 " "
+ EXPR@280..281
+ EXPR_NUMBER@280..281
+ FLOAT@280..281 "0"
+ WHITESPACE@281..282 " "
+ AND@282..284 "&&"
+ WHITESPACE@284..285 " "
+ EXPR@285..310
+ EXPR_VAR@285..288
+ NAME@285..288
+ IDENT@285..288 "std"
+ SUFFIX_INDEX@288..295
+ DOT@288..289 "."
+ NAME@289..295
+ IDENT@289..295 "member"
+ SUFFIX_APPLY@295..310
+ ARGS_DESC@295..310
+ L_PAREN@295..296 "("
+ ARG@296..301
+ EXPR@296..301
+ EXPR_VAR@296..301
+ NAME@296..301
+ IDENT@296..301 "chars"
+ COMMA@301..302 ","
+ WHITESPACE@302..303 " "
+ ARG@303..309
+ EXPR@303..309
+ EXPR_VAR@303..306
+ NAME@303..306
+ IDENT@303..306 "str"
+ SUFFIX_INDEX_EXPR@306..309
+ L_BRACK@306..307 "["
+ EXPR@307..308
+ EXPR_NUMBER@307..308
+ FLOAT@307..308 "0"
+ R_BRACK@308..309 "]"
+ R_PAREN@309..310 ")"
+ WHITESPACE@310..311 " "
+ THEN_KW@311..315 "then"
+ WHITESPACE@315..322 "\n "
+ TRUE_EXPR@322..353
+ EXPR@322..353
+ EXPR_VAR@322..325
+ NAME@322..325
+ IDENT@322..325 "std"
+ SUFFIX_INDEX@325..337
+ DOT@325..326 "."
+ NAME@326..337
+ IDENT@326..337 "lstripChars"
+ SUFFIX_APPLY@337..353
+ ARGS_DESC@337..353
+ L_PAREN@337..338 "("
+ ARG@338..345
+ EXPR@338..345
+ EXPR_VAR@338..341
+ NAME@338..341
+ IDENT@338..341 "str"
+ SUFFIX_SLICE@341..345
+ SLICE_DESC@341..345
+ L_BRACK@341..342 "["
+ EXPR@342..343
+ EXPR_NUMBER@342..343
+ FLOAT@342..343 "1"
+ COLON@343..344 ":"
+ R_BRACK@344..345 "]"
+ COMMA@345..346 ","
+ WHITESPACE@346..347 " "
+ ARG@347..352
+ EXPR@347..352
+ EXPR_VAR@347..352
+ NAME@347..352
+ IDENT@347..352 "chars"
+ R_PAREN@352..353 ")"
+ WHITESPACE@353..358 "\n "
+ ELSE_KW@358..362 "else"
+ WHITESPACE@362..369 "\n "
+ FALSE_EXPR@369..372
+ EXPR@369..372
+ EXPR_VAR@369..372
+ NAME@369..372
+ IDENT@369..372 "str"
+ COMMA@372..373 ","
+ WHITESPACE@373..377 "\n\n "
+ MEMBER_FIELD_METHOD@377..553
+ FIELD_NAME_FIXED@377..388
+ NAME@377..388
+ IDENT@377..388 "rstripChars"
+ PARAMS_DESC@388..400
+ L_PAREN@388..389 "("
+ PARAM@389..392
+ DESTRUCT_FULL@389..392
+ NAME@389..392
+ IDENT@389..392 "str"
+ COMMA@392..393 ","
+ WHITESPACE@393..394 " "
+ PARAM@394..399
+ DESTRUCT_FULL@394..399
+ NAME@394..399
+ IDENT@394..399 "chars"
+ R_PAREN@399..400 ")"
+ COLONCOLON@400..402 "::"
+ WHITESPACE@402..407 "\n "
+ EXPR@407..553
+ STMT_LOCAL@407..435
+ LOCAL_KW@407..412 "local"
+ WHITESPACE@412..413 " "
+ BIND_DESTRUCT@413..434
+ DESTRUCT_FULL@413..416
+ NAME@413..416
+ IDENT@413..416 "len"
+ WHITESPACE@416..417 " "
+ ASSIGN@417..418 "="
+ WHITESPACE@418..419 " "
+ EXPR@419..434
+ EXPR_VAR@419..422
+ NAME@419..422
+ IDENT@419..422 "std"
+ SUFFIX_INDEX@422..429
+ DOT@422..423 "."
+ NAME@423..429
+ IDENT@423..429 "length"
+ SUFFIX_APPLY@429..434
+ ARGS_DESC@429..434
+ L_PAREN@429..430 "("
+ ARG@430..433
+ EXPR@430..433
+ EXPR_VAR@430..433
+ NAME@430..433
+ IDENT@430..433 "str"
+ R_PAREN@433..434 ")"
+ SEMI@434..435 ";"
+ WHITESPACE@435..440 "\n "
+ EXPR_IF_THEN_ELSE@440..553
+ IF_KW@440..442 "if"
+ WHITESPACE@442..443 " "
+ EXPR@443..485
+ EXPR_BINARY@443..485
+ EXPR@443..450
+ EXPR_BINARY@443..450
+ EXPR@443..446
+ EXPR_VAR@443..446
+ NAME@443..446
+ IDENT@443..446 "len"
+ WHITESPACE@446..447 " "
+ GT@447..448 ">"
+ WHITESPACE@448..449 " "
+ EXPR@449..450
+ EXPR_NUMBER@449..450
+ FLOAT@449..450 "0"
+ WHITESPACE@450..451 " "
+ AND@451..453 "&&"
+ WHITESPACE@453..454 " "
+ EXPR@454..485
+ EXPR_VAR@454..457
+ NAME@454..457
+ IDENT@454..457 "std"
+ SUFFIX_INDEX@457..464
+ DOT@457..458 "."
+ NAME@458..464
+ IDENT@458..464 "member"
+ SUFFIX_APPLY@464..485
+ ARGS_DESC@464..485
+ L_PAREN@464..465 "("
+ ARG@465..470
+ EXPR@465..470
+ EXPR_VAR@465..470
+ NAME@465..470
+ IDENT@465..470 "chars"
+ COMMA@470..471 ","
+ WHITESPACE@471..472 " "
+ ARG@472..484
+ EXPR@472..484
+ EXPR_VAR@472..475
+ NAME@472..475
+ IDENT@472..475 "str"
+ SUFFIX_INDEX_EXPR@475..484
+ L_BRACK@475..476 "["
+ EXPR@476..483
+ EXPR_BINARY@476..483
+ EXPR@476..479
+ EXPR_VAR@476..479
+ NAME@476..479
+ IDENT@476..479 "len"
+ WHITESPACE@479..480 " "
+ MINUS@480..481 "-"
+ WHITESPACE@481..482 " "
+ EXPR@482..483
+ EXPR_NUMBER@482..483
+ FLOAT@482..483 "1"
+ R_BRACK@483..484 "]"
+ R_PAREN@484..485 ")"
+ WHITESPACE@485..486 " "
+ THEN_KW@486..490 "then"
+ WHITESPACE@490..497 "\n "
+ TRUE_EXPR@497..534
+ EXPR@497..534
+ EXPR_VAR@497..500
+ NAME@497..500
+ IDENT@497..500 "std"
+ SUFFIX_INDEX@500..512
+ DOT@500..501 "."
+ NAME@501..512
+ IDENT@501..512 "rstripChars"
+ SUFFIX_APPLY@512..534
+ ARGS_DESC@512..534
+ L_PAREN@512..513 "("
+ ARG@513..526
+ EXPR@513..526
+ EXPR_VAR@513..516
+ NAME@513..516
+ IDENT@513..516 "str"
+ SUFFIX_SLICE@516..526
+ SLICE_DESC@516..526
+ L_BRACK@516..517 "["
+ COLON@517..518 ":"
+ SLICE_DESC_END@518..525
+ EXPR@518..525
+ EXPR_BINARY@518..525
+ EXPR@518..521
+ EXPR_VAR@518..521
+ NAME@518..521
+ IDENT@518..521 "len"
+ WHITESPACE@521..522 " "
+ MINUS@522..523 "-"
+ WHITESPACE@523..524 " "
+ EXPR@524..525
+ EXPR_NUMBER@524..525
+ FLOAT@524..525 "1"
+ R_BRACK@525..526 "]"
+ COMMA@526..527 ","
+ WHITESPACE@527..528 " "
+ ARG@528..533
+ EXPR@528..533
+ EXPR_VAR@528..533
+ NAME@528..533
+ IDENT@528..533 "chars"
+ R_PAREN@533..534 ")"
+ WHITESPACE@534..539 "\n "
+ ELSE_KW@539..543 "else"
+ WHITESPACE@543..550 "\n "
+ FALSE_EXPR@550..553
+ EXPR@550..553
+ EXPR_VAR@550..553
+ NAME@550..553
+ IDENT@550..553 "str"
+ COMMA@553..554 ","
+ WHITESPACE@554..558 "\n\n "
+ MEMBER_FIELD_METHOD@558..638
+ FIELD_NAME_FIXED@558..568
+ NAME@558..568
+ IDENT@558..568 "stripChars"
+ PARAMS_DESC@568..580
+ L_PAREN@568..569 "("
+ PARAM@569..572
+ DESTRUCT_FULL@569..572
+ NAME@569..572
+ IDENT@569..572 "str"
+ COMMA@572..573 ","
+ WHITESPACE@573..574 " "
+ PARAM@574..579
+ DESTRUCT_FULL@574..579
+ NAME@574..579
+ IDENT@574..579 "chars"
+ R_PAREN@579..580 ")"
+ COLONCOLON@580..582 "::"
+ WHITESPACE@582..587 "\n "
+ EXPR@587..638
+ EXPR_VAR@587..590
+ NAME@587..590
+ IDENT@587..590 "std"
+ SUFFIX_INDEX@590..602
+ DOT@590..591 "."
+ NAME@591..602
+ IDENT@591..602 "lstripChars"
+ SUFFIX_APPLY@602..638
+ ARGS_DESC@602..638
+ L_PAREN@602..603 "("
+ ARG@603..630
+ EXPR@603..630
+ EXPR_VAR@603..606
+ NAME@603..606
+ IDENT@603..606 "std"
+ SUFFIX_INDEX@606..618
+ DOT@606..607 "."
+ NAME@607..618
+ IDENT@607..618 "rstripChars"
+ SUFFIX_APPLY@618..630
+ ARGS_DESC@618..630
+ L_PAREN@618..619 "("
+ ARG@619..622
+ EXPR@619..622
+ EXPR_VAR@619..622
+ NAME@619..622
+ IDENT@619..622 "str"
+ COMMA@622..623 ","
+ WHITESPACE@623..624 " "
+ ARG@624..629
+ EXPR@624..629
+ EXPR_VAR@624..629
+ NAME@624..629
+ IDENT@624..629 "chars"
+ R_PAREN@629..630 ")"
+ COMMA@630..631 ","
+ WHITESPACE@631..632 " "
+ ARG@632..637
+ EXPR@632..637
+ EXPR_VAR@632..637
+ NAME@632..637
+ IDENT@632..637 "chars"
+ R_PAREN@637..638 ")"
+ COMMA@638..639 ","
+ WHITESPACE@639..643 "\n\n "
+ MEMBER_FIELD_METHOD@643..921
+ FIELD_NAME_FIXED@643..654
+ NAME@643..654
+ IDENT@643..654 "splitLimitR"
+ PARAMS_DESC@654..673
+ L_PAREN@654..655 "("
+ PARAM@655..658
+ DESTRUCT_FULL@655..658
+ NAME@655..658
+ IDENT@655..658 "str"
+ COMMA@658..659 ","
+ WHITESPACE@659..660 " "
+ PARAM@660..661
+ DESTRUCT_FULL@660..661
+ NAME@660..661
+ IDENT@660..661 "c"
+ COMMA@661..662 ","
+ WHITESPACE@662..663 " "
+ PARAM@663..672
+ DESTRUCT_FULL@663..672
+ NAME@663..672
+ IDENT@663..672 "maxsplits"
+ R_PAREN@672..673 ")"
+ COLONCOLON@673..675 "::"
+ WHITESPACE@675..680 "\n "
+ EXPR@680..921
+ EXPR_IF_THEN_ELSE@680..921
+ IF_KW@680..682 "if"
+ WHITESPACE@682..683 " "
+ EXPR@683..698
+ EXPR_BINARY@683..698
+ EXPR@683..692
+ EXPR_VAR@683..692
+ NAME@683..692
+ IDENT@683..692 "maxsplits"
+ WHITESPACE@692..693 " "
+ EQ@693..695 "=="
+ WHITESPACE@695..696 " "
+ EXPR@696..698
+ EXPR_UNARY@696..698
+ MINUS@696..697 "-"
+ EXPR_NUMBER@697..698
+ FLOAT@697..698 "1"
+ WHITESPACE@698..699 " "
+ THEN_KW@699..703 "then"
+ WHITESPACE@703..710 "\n "
+ TRUE_EXPR@710..736
+ EXPR@710..736
+ EXPR_VAR@710..713
+ NAME@710..713
+ IDENT@710..713 "std"
+ SUFFIX_INDEX@713..724
+ DOT@713..714 "."
+ NAME@714..724
+ IDENT@714..724 "splitLimit"
+ SUFFIX_APPLY@724..736
+ ARGS_DESC@724..736
+ L_PAREN@724..725 "("
+ ARG@725..728
+ EXPR@725..728
+ EXPR_VAR@725..728
+ NAME@725..728
+ IDENT@725..728 "str"
+ COMMA@728..729 ","
+ WHITESPACE@729..730 " "
+ ARG@730..731
+ EXPR@730..731
+ EXPR_VAR@730..731
+ NAME@730..731
+ IDENT@730..731 "c"
+ COMMA@731..732 ","
+ WHITESPACE@732..733 " "
+ ARG@733..735
+ EXPR@733..735
+ EXPR_UNARY@733..735
+ MINUS@733..734 "-"
+ EXPR_NUMBER@734..735
+ FLOAT@734..735 "1"
+ R_PAREN@735..736 ")"
+ WHITESPACE@736..741 "\n "
+ ELSE_KW@741..745 "else"
+ WHITESPACE@745..752 "\n "
+ FALSE_EXPR@752..921
+ EXPR@752..921
+ STMT_LOCAL@752..820
+ LOCAL_KW@752..757 "local"
+ WHITESPACE@757..758 " "
+ BIND_FUNCTION@758..819
+ NAME@758..764
+ IDENT@758..764 "revStr"
+ PARAMS_DESC@764..769
+ L_PAREN@764..765 "("
+ PARAM@765..768
+ DESTRUCT_FULL@765..768
+ NAME@765..768
+ IDENT@765..768 "str"
+ R_PAREN@768..769 ")"
+ WHITESPACE@769..770 " "
+ ASSIGN@770..771 "="
+ WHITESPACE@771..772 " "
+ EXPR@772..819
+ EXPR_VAR@772..775
+ NAME@772..775
+ IDENT@772..775 "std"
+ SUFFIX_INDEX@775..780
+ DOT@775..776 "."
+ NAME@776..780
+ IDENT@776..780 "join"
+ SUFFIX_APPLY@780..819
+ ARGS_DESC@780..819
+ L_PAREN@780..781 "("
+ ARG@781..783
+ EXPR@781..783
+ EXPR_STRING@781..783
+ STRING_SINGLE@781..783 "''"
+ COMMA@783..784 ","
+ WHITESPACE@784..785 " "
+ ARG@785..818
+ EXPR@785..818
+ EXPR_VAR@785..788
+ NAME@785..788
+ IDENT@785..788 "std"
+ SUFFIX_INDEX@788..796
+ DOT@788..789 "."
+ NAME@789..796
+ IDENT@789..796 "reverse"
+ SUFFIX_APPLY@796..818
+ ARGS_DESC@796..818
+ L_PAREN@796..797 "("
+ ARG@797..817
+ EXPR@797..817
+ EXPR_VAR@797..800
+ NAME@797..800
+ IDENT@797..800 "std"
+ SUFFIX_INDEX@800..812
+ DOT@800..801 "."
+ NAME@801..812
+ IDENT@801..812 "stringChars"
+ SUFFIX_APPLY@812..817
+ ARGS_DESC@812..817
+ L_PAREN@812..813 "("
+ ARG@813..816
+ EXPR@813..816
+ EXPR_VAR@813..816
+ NAME@813..816
+ IDENT@813..816 "str"
+ R_PAREN@816..817 ")"
+ R_PAREN@817..818 ")"
+ R_PAREN@818..819 ")"
+ SEMI@819..820 ";"
+ WHITESPACE@820..827 "\n "
+ EXPR_VAR@827..830
+ NAME@827..830
+ IDENT@827..830 "std"
+ SUFFIX_INDEX@830..834
+ DOT@830..831 "."
+ NAME@831..834
+ IDENT@831..834 "map"
+ SUFFIX_APPLY@834..921
+ ARGS_DESC@834..921
+ L_PAREN@834..835 "("
+ ARG@835..856
+ EXPR@835..856
+ EXPR_FUNCTION@835..856
+ FUNCTION_KW@835..843 "function"
+ PARAMS_DESC@843..846
+ L_PAREN@843..844 "("
+ PARAM@844..845
+ DESTRUCT_FULL@844..845
+ NAME@844..845
+ IDENT@844..845 "e"
+ R_PAREN@845..846 ")"
+ WHITESPACE@846..847 " "
+ EXPR@847..856
+ EXPR_VAR@847..853
+ NAME@847..853
+ IDENT@847..853 "revStr"
+ SUFFIX_APPLY@853..856
+ ARGS_DESC@853..856
+ L_PAREN@853..854 "("
+ ARG@854..855
+ EXPR@854..855
+ EXPR_VAR@854..855
+ NAME@854..855
+ IDENT@854..855 "e"
+ R_PAREN@855..856 ")"
+ COMMA@856..857 ","
+ WHITESPACE@857..858 " "
+ ARG@858..920
+ EXPR@858..920
+ EXPR_VAR@858..861
+ NAME@858..861
+ IDENT@858..861 "std"
+ SUFFIX_INDEX@861..869
+ DOT@861..862 "."
+ NAME@862..869
+ IDENT@862..869 "reverse"
+ SUFFIX_APPLY@869..920
+ ARGS_DESC@869..920
+ L_PAREN@869..870 "("
+ ARG@870..919
+ EXPR@870..919
+ EXPR_VAR@870..873
+ NAME@870..873
+ IDENT@870..873 "std"
+ SUFFIX_INDEX@873..884
+ DOT@873..874 "."
+ NAME@874..884
+ IDENT@874..884 "splitLimit"
+ SUFFIX_APPLY@884..919
+ ARGS_DESC@884..919
+ L_PAREN@884..885 "("
+ ARG@885..896
+ EXPR@885..896
+ EXPR_VAR@885..891
+ NAME@885..891
+ IDENT@885..891 "revStr"
+ SUFFIX_APPLY@891..896
+ ARGS_DESC@891..896
+ L_PAREN@891..892 "("
+ ARG@892..895
+ EXPR@892..895
+ EXPR_VAR@892..895
+ NAME@892..895
+ IDENT@892..895 "str"
+ R_PAREN@895..896 ")"
+ COMMA@896..897 ","
+ WHITESPACE@897..898 " "
+ ARG@898..907
+ EXPR@898..907
+ EXPR_VAR@898..904
+ NAME@898..904
+ IDENT@898..904 "revStr"
+ SUFFIX_APPLY@904..907
+ ARGS_DESC@904..907
+ L_PAREN@904..905 "("
+ ARG@905..906
+ EXPR@905..906
+ EXPR_VAR@905..906
+ NAME@905..906
+ IDENT@905..906 "c"
+ R_PAREN@906..907 ")"
+ COMMA@907..908 ","
+ WHITESPACE@908..909 " "
+ ARG@909..918
+ EXPR@909..918
+ EXPR_VAR@909..918
+ NAME@909..918
+ IDENT@909..918 "maxsplits"
+ R_PAREN@918..919 ")"
R_PAREN@919..920 ")"
- R_PAREN@920..921 ")"
- R_PAREN@921..922 ")"
- SEMI@922..923 ";"
- WHITESPACE@923..930 "\n "
- FALSE_EXPR@930..1024
- EXPR_APPLY@930..1024
- EXPR_INDEX@930..937
- EXPR_VAR@930..933
- NAME@930..933
- IDENT@930..933 "std"
- DOT@933..934 "."
- NAME@934..937
- IDENT@934..937 "map"
- ARGS_DESC@937..1024
- L_PAREN@937..938 "("
- ARG@938..959
- EXPR_FUNCTION@938..959
- FUNCTION_KW@938..946 "function"
- PARAMS_DESC@946..949
- L_PAREN@946..947 "("
- PARAM@947..948
- DESTRUCT_FULL@947..948
- NAME@947..948
- IDENT@947..948 "e"
- R_PAREN@948..949 ")"
- WHITESPACE@949..950 " "
- EXPR_APPLY@950..959
- EXPR_VAR@950..956
- NAME@950..956
- IDENT@950..956 "revStr"
- ARGS_DESC@956..959
- L_PAREN@956..957 "("
- ARG@957..958
- EXPR_VAR@957..958
- NAME@957..958
- IDENT@957..958 "e"
- R_PAREN@958..959 ")"
- COMMA@959..960 ","
- WHITESPACE@960..961 " "
- ARG@961..1023
- EXPR_APPLY@961..1023
- EXPR_INDEX@961..972
- EXPR_VAR@961..964
- NAME@961..964
- IDENT@961..964 "std"
- DOT@964..965 "."
- NAME@965..972
- IDENT@965..972 "reverse"
- ARGS_DESC@972..1023
- L_PAREN@972..973 "("
- ARG@973..1022
- EXPR_APPLY@973..1022
- EXPR_INDEX@973..987
- EXPR_VAR@973..976
- NAME@973..976
- IDENT@973..976 "std"
- DOT@976..977 "."
- NAME@977..987
- IDENT@977..987 "splitLimit"
- ARGS_DESC@987..1022
- L_PAREN@987..988 "("
- ARG@988..999
- EXPR_APPLY@988..999
- EXPR_VAR@988..994
- NAME@988..994
- IDENT@988..994 "revStr"
- ARGS_DESC@994..999
- L_PAREN@994..995 "("
- ARG@995..998
- EXPR_VAR@995..998
- NAME@995..998
- IDENT@995..998 "str"
- R_PAREN@998..999 ")"
- COMMA@999..1000 ","
- WHITESPACE@1000..1001 " "
- ARG@1001..1010
- EXPR_APPLY@1001..1010
- EXPR_VAR@1001..1007
- NAME@1001..1007
- IDENT@1001..1007 "revStr"
- ARGS_DESC@1007..1010
- L_PAREN@1007..1008 "("
- ARG@1008..1009
- EXPR_VAR@1008..1009
- NAME@1008..1009
- IDENT@1008..1009 "c"
- R_PAREN@1009..1010 ")"
- COMMA@1010..1011 ","
- WHITESPACE@1011..1012 " "
- ARG@1012..1021
- EXPR_VAR@1012..1021
- NAME@1012..1021
- IDENT@1012..1021 "maxsplits"
- R_PAREN@1021..1022 ")"
- R_PAREN@1022..1023 ")"
- R_PAREN@1023..1024 ")"
- COMMA@1024..1025 ","
- WHITESPACE@1025..1029 "\n\n "
- MEMBER_FIELD_METHOD@1029..1071
- FIELD_NAME_FIXED@1029..1034
- NAME@1029..1034
- IDENT@1029..1034 "split"
- PARAMS_DESC@1034..1042
- L_PAREN@1034..1035 "("
- PARAM@1035..1038
- DESTRUCT_FULL@1035..1038
- NAME@1035..1038
- IDENT@1035..1038 "str"
- COMMA@1038..1039 ","
- WHITESPACE@1039..1040 " "
- PARAM@1040..1041
- DESTRUCT_FULL@1040..1041
- NAME@1040..1041
- IDENT@1040..1041 "c"
- R_PAREN@1041..1042 ")"
- COLONCOLON@1042..1044 "::"
- WHITESPACE@1044..1045 " "
- EXPR_APPLY@1045..1071
- EXPR_INDEX@1045..1059
- EXPR_VAR@1045..1048
- NAME@1045..1048
- IDENT@1045..1048 "std"
- DOT@1048..1049 "."
- NAME@1049..1059
- IDENT@1049..1059 "splitLimit"
- ARGS_DESC@1059..1071
- L_PAREN@1059..1060 "("
- ARG@1060..1063
- EXPR_VAR@1060..1063
- NAME@1060..1063
- IDENT@1060..1063 "str"
- COMMA@1063..1064 ","
- WHITESPACE@1064..1065 " "
- ARG@1065..1066
- EXPR_VAR@1065..1066
- NAME@1065..1066
- IDENT@1065..1066 "c"
- COMMA@1066..1067 ","
- WHITESPACE@1067..1068 " "
- ARG@1068..1070
- EXPR_UNARY@1068..1070
- MINUS@1068..1069 "-"
- EXPR_NUMBER@1069..1070
- FLOAT@1069..1070 "1"
- R_PAREN@1070..1071 ")"
- COMMA@1071..1072 ","
- WHITESPACE@1072..1076 "\n\n "
- MEMBER_FIELD_METHOD@1076..1434
- FIELD_NAME_FIXED@1076..1088
- NAME@1076..1088
- IDENT@1076..1088 "mapWithIndex"
- PARAMS_DESC@1088..1099
- L_PAREN@1088..1089 "("
- PARAM@1089..1093
- DESTRUCT_FULL@1089..1093
- NAME@1089..1093
- IDENT@1089..1093 "func"
- COMMA@1093..1094 ","
- WHITESPACE@1094..1095 " "
- PARAM@1095..1098
- DESTRUCT_FULL@1095..1098
- NAME@1095..1098
- IDENT@1095..1098 "arr"
- R_PAREN@1098..1099 ")"
- COLONCOLON@1099..1101 "::"
- WHITESPACE@1101..1106 "\n "
- EXPR_IF_THEN_ELSE@1106..1434
- IF_KW@1106..1108 "if"
- WHITESPACE@1108..1109 " "
- EXPR_UNARY@1109..1130
- NOT@1109..1110 "!"
- EXPR_APPLY@1110..1130
- EXPR_INDEX@1110..1124
- EXPR_VAR@1110..1113
- NAME@1110..1113
- IDENT@1110..1113 "std"
- DOT@1113..1114 "."
- NAME@1114..1124
- IDENT@1114..1124 "isFunction"
- ARGS_DESC@1124..1130
- L_PAREN@1124..1125 "("
- ARG@1125..1129
- EXPR_VAR@1125..1129
- NAME@1125..1129
- IDENT@1125..1129 "func"
- R_PAREN@1129..1130 ")"
- WHITESPACE@1130..1131 " "
- THEN_KW@1131..1135 "then"
- WHITESPACE@1135..1142 "\n "
- TRUE_EXPR@1142..1220
- EXPR_ERROR@1142..1220
- ERROR_KW@1142..1147 "error"
- WHITESPACE@1147..1148 " "
- EXPR_PARENED@1148..1220
- L_PAREN@1148..1149 "("
- EXPR_BINARY@1149..1219
- LHS_EXPR@1149..1202
- EXPR_STRING@1149..1202
- STRING_SINGLE@1149..1202 "'std.mapWithIndex fir ..."
- WHITESPACE@1202..1203 " "
- PLUS@1203..1204 "+"
- WHITESPACE@1204..1205 " "
- EXPR_APPLY@1205..1219
- EXPR_INDEX@1205..1213
- EXPR_VAR@1205..1208
- NAME@1205..1208
- IDENT@1205..1208 "std"
- DOT@1208..1209 "."
- NAME@1209..1213
- IDENT@1209..1213 "type"
- ARGS_DESC@1213..1219
- L_PAREN@1213..1214 "("
- ARG@1214..1218
- EXPR_VAR@1214..1218
- NAME@1214..1218
- IDENT@1214..1218 "func"
- R_PAREN@1218..1219 ")"
- R_PAREN@1219..1220 ")"
- WHITESPACE@1220..1225 "\n "
- ELSE_KW@1225..1229 "else"
- WHITESPACE@1229..1230 " "
- FALSE_EXPR@1230..1434
- EXPR_IF_THEN_ELSE@1230..1434
- IF_KW@1230..1232 "if"
- WHITESPACE@1232..1233 " "
- EXPR_BINARY@1233..1272
- LHS_EXPR@1233..1250
- EXPR_UNARY@1233..1250
- NOT@1233..1234 "!"
- EXPR_APPLY@1234..1250
- EXPR_INDEX@1234..1245
- EXPR_VAR@1234..1237
- NAME@1234..1237
- IDENT@1234..1237 "std"
- DOT@1237..1238 "."
- NAME@1238..1245
- IDENT@1238..1245 "isArray"
- ARGS_DESC@1245..1250
- L_PAREN@1245..1246 "("
- ARG@1246..1249
- EXPR_VAR@1246..1249
- NAME@1246..1249
- IDENT@1246..1249 "arr"
- R_PAREN@1249..1250 ")"
- WHITESPACE@1250..1251 " "
- AND@1251..1253 "&&"
- WHITESPACE@1253..1254 " "
- EXPR_UNARY@1254..1272
- NOT@1254..1255 "!"
- EXPR_APPLY@1255..1272
- EXPR_INDEX@1255..1267
- EXPR_VAR@1255..1258
- NAME@1255..1258
- IDENT@1255..1258 "std"
- DOT@1258..1259 "."
- NAME@1259..1267
- IDENT@1259..1267 "isString"
- ARGS_DESC@1267..1272
- L_PAREN@1267..1268 "("
- ARG@1268..1271
- EXPR_VAR@1268..1271
- NAME@1268..1271
- IDENT@1268..1271 "arr"
- R_PAREN@1271..1272 ")"
- WHITESPACE@1272..1273 " "
- THEN_KW@1273..1277 "then"
- WHITESPACE@1277..1284 "\n "
- TRUE_EXPR@1284..1359
- EXPR_ERROR@1284..1359
- ERROR_KW@1284..1289 "error"
- WHITESPACE@1289..1290 " "
- EXPR_PARENED@1290..1359
- L_PAREN@1290..1291 "("
- EXPR_BINARY@1291..1358
- LHS_EXPR@1291..1342
- EXPR_STRING@1291..1342
- STRING_SINGLE@1291..1342 "'std.mapWithIndex sec ..."
- WHITESPACE@1342..1343 " "
- PLUS@1343..1344 "+"
- WHITESPACE@1344..1345 " "
- EXPR_APPLY@1345..1358
- EXPR_INDEX@1345..1353
- EXPR_VAR@1345..1348
- NAME@1345..1348
- IDENT@1345..1348 "std"
- DOT@1348..1349 "."
- NAME@1349..1353
- IDENT@1349..1353 "type"
- ARGS_DESC@1353..1358
- L_PAREN@1353..1354 "("
- ARG@1354..1357
- EXPR_VAR@1354..1357
- NAME@1354..1357
- IDENT@1354..1357 "arr"
- R_PAREN@1357..1358 ")"
- R_PAREN@1358..1359 ")"
- WHITESPACE@1359..1364 "\n "
- ELSE_KW@1364..1368 "else"
- WHITESPACE@1368..1375 "\n "
- FALSE_EXPR@1375..1434
- EXPR_APPLY@1375..1434
- EXPR_INDEX@1375..1388
- EXPR_VAR@1375..1378
- NAME@1375..1378
- IDENT@1375..1378 "std"
- DOT@1378..1379 "."
- NAME@1379..1388
- IDENT@1379..1388 "makeArray"
- ARGS_DESC@1388..1434
- L_PAREN@1388..1389 "("
- ARG@1389..1404
- EXPR_APPLY@1389..1404
- EXPR_INDEX@1389..1399
- EXPR_VAR@1389..1392
- NAME@1389..1392
- IDENT@1389..1392 "std"
- DOT@1392..1393 "."
- NAME@1393..1399
- IDENT@1393..1399 "length"
- ARGS_DESC@1399..1404
- L_PAREN@1399..1400 "("
- ARG@1400..1403
- EXPR_VAR@1400..1403
- NAME@1400..1403
- IDENT@1400..1403 "arr"
- R_PAREN@1403..1404 ")"
- COMMA@1404..1405 ","
+ R_PAREN@920..921 ")"
+ COMMA@921..922 ","
+ WHITESPACE@922..926 "\n\n "
+ MEMBER_FIELD_METHOD@926..968
+ FIELD_NAME_FIXED@926..931
+ NAME@926..931
+ IDENT@926..931 "split"
+ PARAMS_DESC@931..939
+ L_PAREN@931..932 "("
+ PARAM@932..935
+ DESTRUCT_FULL@932..935
+ NAME@932..935
+ IDENT@932..935 "str"
+ COMMA@935..936 ","
+ WHITESPACE@936..937 " "
+ PARAM@937..938
+ DESTRUCT_FULL@937..938
+ NAME@937..938
+ IDENT@937..938 "c"
+ R_PAREN@938..939 ")"
+ COLONCOLON@939..941 "::"
+ WHITESPACE@941..942 " "
+ EXPR@942..968
+ EXPR_VAR@942..945
+ NAME@942..945
+ IDENT@942..945 "std"
+ SUFFIX_INDEX@945..956
+ DOT@945..946 "."
+ NAME@946..956
+ IDENT@946..956 "splitLimit"
+ SUFFIX_APPLY@956..968
+ ARGS_DESC@956..968
+ L_PAREN@956..957 "("
+ ARG@957..960
+ EXPR@957..960
+ EXPR_VAR@957..960
+ NAME@957..960
+ IDENT@957..960 "str"
+ COMMA@960..961 ","
+ WHITESPACE@961..962 " "
+ ARG@962..963
+ EXPR@962..963
+ EXPR_VAR@962..963
+ NAME@962..963
+ IDENT@962..963 "c"
+ COMMA@963..964 ","
+ WHITESPACE@964..965 " "
+ ARG@965..967
+ EXPR@965..967
+ EXPR_UNARY@965..967
+ MINUS@965..966 "-"
+ EXPR_NUMBER@966..967
+ FLOAT@966..967 "1"
+ R_PAREN@967..968 ")"
+ COMMA@968..969 ","
+ WHITESPACE@969..973 "\n\n "
+ MEMBER_FIELD_METHOD@973..1331
+ FIELD_NAME_FIXED@973..985
+ NAME@973..985
+ IDENT@973..985 "mapWithIndex"
+ PARAMS_DESC@985..996
+ L_PAREN@985..986 "("
+ PARAM@986..990
+ DESTRUCT_FULL@986..990
+ NAME@986..990
+ IDENT@986..990 "func"
+ COMMA@990..991 ","
+ WHITESPACE@991..992 " "
+ PARAM@992..995
+ DESTRUCT_FULL@992..995
+ NAME@992..995
+ IDENT@992..995 "arr"
+ R_PAREN@995..996 ")"
+ COLONCOLON@996..998 "::"
+ WHITESPACE@998..1003 "\n "
+ EXPR@1003..1331
+ EXPR_IF_THEN_ELSE@1003..1331
+ IF_KW@1003..1005 "if"
+ WHITESPACE@1005..1006 " "
+ EXPR@1006..1027
+ EXPR_UNARY@1006..1027
+ NOT@1006..1007 "!"
+ EXPR_VAR@1007..1010
+ NAME@1007..1010
+ IDENT@1007..1010 "std"
+ SUFFIX_INDEX@1010..1021
+ DOT@1010..1011 "."
+ NAME@1011..1021
+ IDENT@1011..1021 "isFunction"
+ SUFFIX_APPLY@1021..1027
+ ARGS_DESC@1021..1027
+ L_PAREN@1021..1022 "("
+ ARG@1022..1026
+ EXPR@1022..1026
+ EXPR_VAR@1022..1026
+ NAME@1022..1026
+ IDENT@1022..1026 "func"
+ R_PAREN@1026..1027 ")"
+ WHITESPACE@1027..1028 " "
+ THEN_KW@1028..1032 "then"
+ WHITESPACE@1032..1039 "\n "
+ TRUE_EXPR@1039..1117
+ EXPR@1039..1117
+ EXPR_ERROR@1039..1117
+ ERROR_KW@1039..1044 "error"
+ WHITESPACE@1044..1045 " "
+ EXPR@1045..1117
+ EXPR_PARENED@1045..1117
+ L_PAREN@1045..1046 "("
+ EXPR@1046..1116
+ EXPR_BINARY@1046..1116
+ EXPR@1046..1099
+ EXPR_STRING@1046..1099
+ STRING_SINGLE@1046..1099 "'std.mapWithIndex fir ..."
+ WHITESPACE@1099..1100 " "
+ PLUS@1100..1101 "+"
+ WHITESPACE@1101..1102 " "
+ EXPR@1102..1116
+ EXPR_VAR@1102..1105
+ NAME@1102..1105
+ IDENT@1102..1105 "std"
+ SUFFIX_INDEX@1105..1110
+ DOT@1105..1106 "."
+ NAME@1106..1110
+ IDENT@1106..1110 "type"
+ SUFFIX_APPLY@1110..1116
+ ARGS_DESC@1110..1116
+ L_PAREN@1110..1111 "("
+ ARG@1111..1115
+ EXPR@1111..1115
+ EXPR_VAR@1111..1115
+ NAME@1111..1115
+ IDENT@1111..1115 "func"
+ R_PAREN@1115..1116 ")"
+ R_PAREN@1116..1117 ")"
+ WHITESPACE@1117..1122 "\n "
+ ELSE_KW@1122..1126 "else"
+ WHITESPACE@1126..1127 " "
+ FALSE_EXPR@1127..1331
+ EXPR@1127..1331
+ EXPR_IF_THEN_ELSE@1127..1331
+ IF_KW@1127..1129 "if"
+ WHITESPACE@1129..1130 " "
+ EXPR@1130..1169
+ EXPR_BINARY@1130..1169
+ EXPR@1130..1147
+ EXPR_UNARY@1130..1147
+ NOT@1130..1131 "!"
+ EXPR_VAR@1131..1134
+ NAME@1131..1134
+ IDENT@1131..1134 "std"
+ SUFFIX_INDEX@1134..1142
+ DOT@1134..1135 "."
+ NAME@1135..1142
+ IDENT@1135..1142 "isArray"
+ SUFFIX_APPLY@1142..1147
+ ARGS_DESC@1142..1147
+ L_PAREN@1142..1143 "("
+ ARG@1143..1146
+ EXPR@1143..1146
+ EXPR_VAR@1143..1146
+ NAME@1143..1146
+ IDENT@1143..1146 "arr"
+ R_PAREN@1146..1147 ")"
+ WHITESPACE@1147..1148 " "
+ AND@1148..1150 "&&"
+ WHITESPACE@1150..1151 " "
+ EXPR@1151..1169
+ EXPR_UNARY@1151..1169
+ NOT@1151..1152 "!"
+ EXPR_VAR@1152..1155
+ NAME@1152..1155
+ IDENT@1152..1155 "std"
+ SUFFIX_INDEX@1155..1164
+ DOT@1155..1156 "."
+ NAME@1156..1164
+ IDENT@1156..1164 "isString"
+ SUFFIX_APPLY@1164..1169
+ ARGS_DESC@1164..1169
+ L_PAREN@1164..1165 "("
+ ARG@1165..1168
+ EXPR@1165..1168
+ EXPR_VAR@1165..1168
+ NAME@1165..1168
+ IDENT@1165..1168 "arr"
+ R_PAREN@1168..1169 ")"
+ WHITESPACE@1169..1170 " "
+ THEN_KW@1170..1174 "then"
+ WHITESPACE@1174..1181 "\n "
+ TRUE_EXPR@1181..1256
+ EXPR@1181..1256
+ EXPR_ERROR@1181..1256
+ ERROR_KW@1181..1186 "error"
+ WHITESPACE@1186..1187 " "
+ EXPR@1187..1256
+ EXPR_PARENED@1187..1256
+ L_PAREN@1187..1188 "("
+ EXPR@1188..1255
+ EXPR_BINARY@1188..1255
+ EXPR@1188..1239
+ EXPR_STRING@1188..1239
+ STRING_SINGLE@1188..1239 "'std.mapWithIndex sec ..."
+ WHITESPACE@1239..1240 " "
+ PLUS@1240..1241 "+"
+ WHITESPACE@1241..1242 " "
+ EXPR@1242..1255
+ EXPR_VAR@1242..1245
+ NAME@1242..1245
+ IDENT@1242..1245 "std"
+ SUFFIX_INDEX@1245..1250
+ DOT@1245..1246 "."
+ NAME@1246..1250
+ IDENT@1246..1250 "type"
+ SUFFIX_APPLY@1250..1255
+ ARGS_DESC@1250..1255
+ L_PAREN@1250..1251 "("
+ ARG@1251..1254
+ EXPR@1251..1254
+ EXPR_VAR@1251..1254
+ NAME@1251..1254
+ IDENT@1251..1254 "arr"
+ R_PAREN@1254..1255 ")"
+ R_PAREN@1255..1256 ")"
+ WHITESPACE@1256..1261 "\n "
+ ELSE_KW@1261..1265 "else"
+ WHITESPACE@1265..1272 "\n "
+ FALSE_EXPR@1272..1331
+ EXPR@1272..1331
+ EXPR_VAR@1272..1275
+ NAME@1272..1275
+ IDENT@1272..1275 "std"
+ SUFFIX_INDEX@1275..1285
+ DOT@1275..1276 "."
+ NAME@1276..1285
+ IDENT@1276..1285 "makeArray"
+ SUFFIX_APPLY@1285..1331
+ ARGS_DESC@1285..1331
+ L_PAREN@1285..1286 "("
+ ARG@1286..1301
+ EXPR@1286..1301
+ EXPR_VAR@1286..1289
+ NAME@1286..1289
+ IDENT@1286..1289 "std"
+ SUFFIX_INDEX@1289..1296
+ DOT@1289..1290 "."
+ NAME@1290..1296
+ IDENT@1290..1296 "length"
+ SUFFIX_APPLY@1296..1301
+ ARGS_DESC@1296..1301
+ L_PAREN@1296..1297 "("
+ ARG@1297..1300
+ EXPR@1297..1300
+ EXPR_VAR@1297..1300
+ NAME@1297..1300
+ IDENT@1297..1300 "arr"
+ R_PAREN@1300..1301 ")"
+ COMMA@1301..1302 ","
+ WHITESPACE@1302..1303 " "
+ ARG@1303..1330
+ EXPR@1303..1330
+ EXPR_FUNCTION@1303..1330
+ FUNCTION_KW@1303..1311 "function"
+ PARAMS_DESC@1311..1314
+ L_PAREN@1311..1312 "("
+ PARAM@1312..1313
+ DESTRUCT_FULL@1312..1313
+ NAME@1312..1313
+ IDENT@1312..1313 "i"
+ R_PAREN@1313..1314 ")"
+ WHITESPACE@1314..1315 " "
+ EXPR@1315..1330
+ EXPR_VAR@1315..1319
+ NAME@1315..1319
+ IDENT@1315..1319 "func"
+ SUFFIX_APPLY@1319..1330
+ ARGS_DESC@1319..1330
+ L_PAREN@1319..1320 "("
+ ARG@1320..1321
+ EXPR@1320..1321
+ EXPR_VAR@1320..1321
+ NAME@1320..1321
+ IDENT@1320..1321 "i"
+ COMMA@1321..1322 ","
+ WHITESPACE@1322..1323 " "
+ ARG@1323..1329
+ EXPR@1323..1329
+ EXPR_VAR@1323..1326
+ NAME@1323..1326
+ IDENT@1323..1326 "arr"
+ SUFFIX_INDEX_EXPR@1326..1329
+ L_BRACK@1326..1327 "["
+ EXPR@1327..1328
+ EXPR_VAR@1327..1328
+ NAME@1327..1328
+ IDENT@1327..1328 "i"
+ R_BRACK@1328..1329 "]"
+ R_PAREN@1329..1330 ")"
+ R_PAREN@1330..1331 ")"
+ COMMA@1331..1332 ","
+ WHITESPACE@1332..1336 "\n\n "
+ MEMBER_FIELD_METHOD@1336..1664
+ FIELD_NAME_FIXED@1336..1346
+ NAME@1336..1346
+ IDENT@1336..1346 "mapWithKey"
+ PARAMS_DESC@1346..1357
+ L_PAREN@1346..1347 "("
+ PARAM@1347..1351
+ DESTRUCT_FULL@1347..1351
+ NAME@1347..1351
+ IDENT@1347..1351 "func"
+ COMMA@1351..1352 ","
+ WHITESPACE@1352..1353 " "
+ PARAM@1353..1356
+ DESTRUCT_FULL@1353..1356
+ NAME@1353..1356
+ IDENT@1353..1356 "obj"
+ R_PAREN@1356..1357 ")"
+ COLONCOLON@1357..1359 "::"
+ WHITESPACE@1359..1364 "\n "
+ EXPR@1364..1664
+ EXPR_IF_THEN_ELSE@1364..1664
+ IF_KW@1364..1366 "if"
+ WHITESPACE@1366..1367 " "
+ EXPR@1367..1388
+ EXPR_UNARY@1367..1388
+ NOT@1367..1368 "!"
+ EXPR_VAR@1368..1371
+ NAME@1368..1371
+ IDENT@1368..1371 "std"
+ SUFFIX_INDEX@1371..1382
+ DOT@1371..1372 "."
+ NAME@1372..1382
+ IDENT@1372..1382 "isFunction"
+ SUFFIX_APPLY@1382..1388
+ ARGS_DESC@1382..1388
+ L_PAREN@1382..1383 "("
+ ARG@1383..1387
+ EXPR@1383..1387
+ EXPR_VAR@1383..1387
+ NAME@1383..1387
+ IDENT@1383..1387 "func"
+ R_PAREN@1387..1388 ")"
+ WHITESPACE@1388..1389 " "
+ THEN_KW@1389..1393 "then"
+ WHITESPACE@1393..1400 "\n "
+ TRUE_EXPR@1400..1476
+ EXPR@1400..1476
+ EXPR_ERROR@1400..1476
+ ERROR_KW@1400..1405 "error"
WHITESPACE@1405..1406 " "
- ARG@1406..1433
- EXPR_FUNCTION@1406..1433
- FUNCTION_KW@1406..1414 "function"
- PARAMS_DESC@1414..1417
- L_PAREN@1414..1415 "("
- PARAM@1415..1416
- DESTRUCT_FULL@1415..1416
- NAME@1415..1416
- IDENT@1415..1416 "i"
- R_PAREN@1416..1417 ")"
- WHITESPACE@1417..1418 " "
- EXPR_APPLY@1418..1433
- EXPR_VAR@1418..1422
- NAME@1418..1422
- IDENT@1418..1422 "func"
- ARGS_DESC@1422..1433
- L_PAREN@1422..1423 "("
- ARG@1423..1424
- EXPR_VAR@1423..1424
- NAME@1423..1424
- IDENT@1423..1424 "i"
- COMMA@1424..1425 ","
- WHITESPACE@1425..1426 " "
- ARG@1426..1432
- EXPR_INDEX_EXPR@1426..1432
- LHS_EXPR@1426..1429
- EXPR_VAR@1426..1429
- NAME@1426..1429
- IDENT@1426..1429 "arr"
- L_BRACK@1429..1430 "["
- EXPR_VAR@1430..1431
- NAME@1430..1431
- IDENT@1430..1431 "i"
- R_BRACK@1431..1432 "]"
- R_PAREN@1432..1433 ")"
- R_PAREN@1433..1434 ")"
- COMMA@1434..1435 ","
- WHITESPACE@1435..1439 "\n\n "
- MEMBER_FIELD_METHOD@1439..1767
- FIELD_NAME_FIXED@1439..1449
- NAME@1439..1449
- IDENT@1439..1449 "mapWithKey"
- PARAMS_DESC@1449..1460
- L_PAREN@1449..1450 "("
- PARAM@1450..1454
- DESTRUCT_FULL@1450..1454
- NAME@1450..1454
- IDENT@1450..1454 "func"
- COMMA@1454..1455 ","
- WHITESPACE@1455..1456 " "
- PARAM@1456..1459
- DESTRUCT_FULL@1456..1459
- NAME@1456..1459
- IDENT@1456..1459 "obj"
- R_PAREN@1459..1460 ")"
- COLONCOLON@1460..1462 "::"
- WHITESPACE@1462..1467 "\n "
- EXPR_IF_THEN_ELSE@1467..1767
- IF_KW@1467..1469 "if"
- WHITESPACE@1469..1470 " "
- EXPR_UNARY@1470..1491
- NOT@1470..1471 "!"
- EXPR_APPLY@1471..1491
- EXPR_INDEX@1471..1485
- EXPR_VAR@1471..1474
- NAME@1471..1474
- IDENT@1471..1474 "std"
- DOT@1474..1475 "."
- NAME@1475..1485
- IDENT@1475..1485 "isFunction"
- ARGS_DESC@1485..1491
- L_PAREN@1485..1486 "("
- ARG@1486..1490
- EXPR_VAR@1486..1490
- NAME@1486..1490
- IDENT@1486..1490 "func"
- R_PAREN@1490..1491 ")"
- WHITESPACE@1491..1492 " "
- THEN_KW@1492..1496 "then"
- WHITESPACE@1496..1503 "\n "
- TRUE_EXPR@1503..1579
- EXPR_ERROR@1503..1579
- ERROR_KW@1503..1508 "error"
- WHITESPACE@1508..1509 " "
- EXPR_PARENED@1509..1579
- L_PAREN@1509..1510 "("
- EXPR_BINARY@1510..1578
- LHS_EXPR@1510..1561
- EXPR_STRING@1510..1561
- STRING_SINGLE@1510..1561 "'std.mapWithKey first ..."
- WHITESPACE@1561..1562 " "
- PLUS@1562..1563 "+"
- WHITESPACE@1563..1564 " "
- EXPR_APPLY@1564..1578
- EXPR_INDEX@1564..1572
- EXPR_VAR@1564..1567
- NAME@1564..1567
- IDENT@1564..1567 "std"
- DOT@1567..1568 "."
- NAME@1568..1572
- IDENT@1568..1572 "type"
- ARGS_DESC@1572..1578
- L_PAREN@1572..1573 "("
- ARG@1573..1577
- EXPR_VAR@1573..1577
- NAME@1573..1577
- IDENT@1573..1577 "func"
- R_PAREN@1577..1578 ")"
- R_PAREN@1578..1579 ")"
- WHITESPACE@1579..1584 "\n "
- ELSE_KW@1584..1588 "else"
- WHITESPACE@1588..1589 " "
- FALSE_EXPR@1589..1767
- EXPR_IF_THEN_ELSE@1589..1767
- IF_KW@1589..1591 "if"
- WHITESPACE@1591..1592 " "
- EXPR_UNARY@1592..1610
- NOT@1592..1593 "!"
- EXPR_APPLY@1593..1610
- EXPR_INDEX@1593..1605
- EXPR_VAR@1593..1596
- NAME@1593..1596
- IDENT@1593..1596 "std"
- DOT@1596..1597 "."
- NAME@1597..1605
- IDENT@1597..1605 "isObject"
- ARGS_DESC@1605..1610
- L_PAREN@1605..1606 "("
- ARG@1606..1609
- EXPR_VAR@1606..1609
- NAME@1606..1609
- IDENT@1606..1609 "obj"
- R_PAREN@1609..1610 ")"
- WHITESPACE@1610..1611 " "
- THEN_KW@1611..1615 "then"
- WHITESPACE@1615..1622 "\n "
- TRUE_EXPR@1622..1696
- EXPR_ERROR@1622..1696
- ERROR_KW@1622..1627 "error"
- WHITESPACE@1627..1628 " "
- EXPR_PARENED@1628..1696
- L_PAREN@1628..1629 "("
- EXPR_BINARY@1629..1695
- LHS_EXPR@1629..1679
- EXPR_STRING@1629..1679
- STRING_SINGLE@1629..1679 "'std.mapWithKey secon ..."
- WHITESPACE@1679..1680 " "
- PLUS@1680..1681 "+"
- WHITESPACE@1681..1682 " "
- EXPR_APPLY@1682..1695
- EXPR_INDEX@1682..1690
- EXPR_VAR@1682..1685
- NAME@1682..1685
- IDENT@1682..1685 "std"
- DOT@1685..1686 "."
- NAME@1686..1690
- IDENT@1686..1690 "type"
- ARGS_DESC@1690..1695
- L_PAREN@1690..1691 "("
- ARG@1691..1694
- EXPR_VAR@1691..1694
- NAME@1691..1694
- IDENT@1691..1694 "obj"
- R_PAREN@1694..1695 ")"
- R_PAREN@1695..1696 ")"
- WHITESPACE@1696..1701 "\n "
- ELSE_KW@1701..1705 "else"
- WHITESPACE@1705..1712 "\n "
- FALSE_EXPR@1712..1767
- EXPR_OBJECT@1712..1767
- OBJ_BODY_COMP@1712..1767
- L_BRACE@1712..1713 "{"
- WHITESPACE@1713..1714 " "
- MEMBER_FIELD_NORMAL@1714..1734
- FIELD_NAME_DYNAMIC@1714..1717
- L_BRACK@1714..1715 "["
- EXPR_VAR@1715..1716
- NAME@1715..1716
- IDENT@1715..1716 "k"
- R_BRACK@1716..1717 "]"
- COLON@1717..1718 ":"
- WHITESPACE@1718..1719 " "
- EXPR_APPLY@1719..1734
- EXPR_VAR@1719..1723
- NAME@1719..1723
- IDENT@1719..1723 "func"
- ARGS_DESC@1723..1734
- L_PAREN@1723..1724 "("
- ARG@1724..1725
- EXPR_VAR@1724..1725
- NAME@1724..1725
- IDENT@1724..1725 "k"
- COMMA@1725..1726 ","
- WHITESPACE@1726..1727 " "
- ARG@1727..1733
- EXPR_INDEX_EXPR@1727..1733
- LHS_EXPR@1727..1730
- EXPR_VAR@1727..1730
- NAME@1727..1730
- IDENT@1727..1730 "obj"
- L_BRACK@1730..1731 "["
- EXPR_VAR@1731..1732
- NAME@1731..1732
- IDENT@1731..1732 "k"
- R_BRACK@1732..1733 "]"
- R_PAREN@1733..1734 ")"
- WHITESPACE@1734..1735 " "
- FOR_SPEC@1735..1765
- FOR_KW@1735..1738 "for"
- WHITESPACE@1738..1739 " "
- NAME@1739..1740
- IDENT@1739..1740 "k"
- WHITESPACE@1740..1741 " "
- IN_KW@1741..1743 "in"
- WHITESPACE@1743..1744 " "
- EXPR_APPLY@1744..1765
- EXPR_INDEX@1744..1760
- EXPR_VAR@1744..1747
- NAME@1744..1747
- IDENT@1744..1747 "std"
- DOT@1747..1748 "."
- NAME@1748..1760
- IDENT@1748..1760 "objectFields"
- ARGS_DESC@1760..1765
- L_PAREN@1760..1761 "("
- ARG@1761..1764
- EXPR_VAR@1761..1764
- NAME@1761..1764
- IDENT@1761..1764 "obj"
- R_PAREN@1764..1765 ")"
- WHITESPACE@1765..1766 " "
- R_BRACE@1766..1767 "}"
- COMMA@1767..1768 ","
- WHITESPACE@1768..1772 "\n\n "
- MEMBER_FIELD_METHOD@1772..1815
- FIELD_NAME_FIXED@1772..1777
- NAME@1772..1777
- IDENT@1772..1777 "lines"
- PARAMS_DESC@1777..1782
- L_PAREN@1777..1778 "("
- PARAM@1778..1781
- DESTRUCT_FULL@1778..1781
- NAME@1778..1781
- IDENT@1778..1781 "arr"
- R_PAREN@1781..1782 ")"
- COLONCOLON@1782..1784 "::"
- WHITESPACE@1784..1789 "\n "
- EXPR_APPLY@1789..1815
- EXPR_INDEX@1789..1797
- EXPR_VAR@1789..1792
- NAME@1789..1792
- IDENT@1789..1792 "std"
- DOT@1792..1793 "."
- NAME@1793..1797
- IDENT@1793..1797 "join"
- ARGS_DESC@1797..1815
- L_PAREN@1797..1798 "("
- ARG@1798..1802
- EXPR_STRING@1798..1802
- STRING_SINGLE@1798..1802 "'\\n'"
- COMMA@1802..1803 ","
- WHITESPACE@1803..1804 " "
- ARG@1804..1814
- EXPR_BINARY@1804..1814
- LHS_EXPR@1804..1807
- EXPR_VAR@1804..1807
- NAME@1804..1807
- IDENT@1804..1807 "arr"
- WHITESPACE@1807..1808 " "
- PLUS@1808..1809 "+"
- WHITESPACE@1809..1810 " "
- EXPR_ARRAY@1810..1814
- L_BRACK@1810..1811 "["
- EXPR_STRING@1811..1813
- STRING_SINGLE@1811..1813 "''"
- R_BRACK@1813..1814 "]"
- R_PAREN@1814..1815 ")"
- COMMA@1815..1816 ","
- WHITESPACE@1816..1820 "\n\n "
- MEMBER_FIELD_METHOD@1820..2032
- FIELD_NAME_FIXED@1820..1828
- NAME@1820..1828
- IDENT@1820..1828 "deepJoin"
- PARAMS_DESC@1828..1833
- L_PAREN@1828..1829 "("
- PARAM@1829..1832
- DESTRUCT_FULL@1829..1832
- NAME@1829..1832
- IDENT@1829..1832 "arr"
- R_PAREN@1832..1833 ")"
- COLONCOLON@1833..1835 "::"
- WHITESPACE@1835..1840 "\n "
- EXPR_IF_THEN_ELSE@1840..2032
- IF_KW@1840..1842 "if"
- WHITESPACE@1842..1843 " "
- EXPR_APPLY@1843..1860
- EXPR_INDEX@1843..1855
- EXPR_VAR@1843..1846
- NAME@1843..1846
- IDENT@1843..1846 "std"
- DOT@1846..1847 "."
- NAME@1847..1855
- IDENT@1847..1855 "isString"
- ARGS_DESC@1855..1860
- L_PAREN@1855..1856 "("
- ARG@1856..1859
- EXPR_VAR@1856..1859
- NAME@1856..1859
- IDENT@1856..1859 "arr"
- R_PAREN@1859..1860 ")"
- WHITESPACE@1860..1861 " "
- THEN_KW@1861..1865 "then"
- WHITESPACE@1865..1872 "\n "
- TRUE_EXPR@1872..1875
- EXPR_VAR@1872..1875
- NAME@1872..1875
- IDENT@1872..1875 "arr"
- WHITESPACE@1875..1880 "\n "
- ELSE_KW@1880..1884 "else"
- WHITESPACE@1884..1885 " "
- FALSE_EXPR@1885..2032
- EXPR_IF_THEN_ELSE@1885..2032
- IF_KW@1885..1887 "if"
- WHITESPACE@1887..1888 " "
- EXPR_APPLY@1888..1904
- EXPR_INDEX@1888..1899
- EXPR_VAR@1888..1891
- NAME@1888..1891
- IDENT@1888..1891 "std"
- DOT@1891..1892 "."
- NAME@1892..1899
- IDENT@1892..1899 "isArray"
- ARGS_DESC@1899..1904
- L_PAREN@1899..1900 "("
- ARG@1900..1903
- EXPR_VAR@1900..1903
- NAME@1900..1903
- IDENT@1900..1903 "arr"
- R_PAREN@1903..1904 ")"
- WHITESPACE@1904..1905 " "
- THEN_KW@1905..1909 "then"
- WHITESPACE@1909..1916 "\n "
- TRUE_EXPR@1916..1960
- EXPR_APPLY@1916..1960
- EXPR_INDEX@1916..1924
- EXPR_VAR@1916..1919
- NAME@1916..1919
- IDENT@1916..1919 "std"
- DOT@1919..1920 "."
- NAME@1920..1924
- IDENT@1920..1924 "join"
- ARGS_DESC@1924..1960
- L_PAREN@1924..1925 "("
- ARG@1925..1927
- EXPR_STRING@1925..1927
- STRING_SINGLE@1925..1927 "''"
- COMMA@1927..1928 ","
- WHITESPACE@1928..1929 " "
- ARG@1929..1959
- EXPR_ARRAY_COMP@1929..1959
- L_BRACK@1929..1930 "["
- EXPR_APPLY@1930..1945
- EXPR_INDEX@1930..1942
- EXPR_VAR@1930..1933
- NAME@1930..1933
- IDENT@1930..1933 "std"
- DOT@1933..1934 "."
- NAME@1934..1942
- IDENT@1934..1942 "deepJoin"
- ARGS_DESC@1942..1945
- L_PAREN@1942..1943 "("
- ARG@1943..1944
- EXPR_VAR@1943..1944
- NAME@1943..1944
- IDENT@1943..1944 "x"
- R_PAREN@1944..1945 ")"
- WHITESPACE@1945..1946 " "
- FOR_SPEC@1946..1958
- FOR_KW@1946..1949 "for"
- WHITESPACE@1949..1950 " "
- NAME@1950..1951
- IDENT@1950..1951 "x"
- WHITESPACE@1951..1952 " "
- IN_KW@1952..1954 "in"
- WHITESPACE@1954..1955 " "
- EXPR_VAR@1955..1958
- NAME@1955..1958
- IDENT@1955..1958 "arr"
- R_BRACK@1958..1959 "]"
- R_PAREN@1959..1960 ")"
- WHITESPACE@1960..1965 "\n "
- ELSE_KW@1965..1969 "else"
- WHITESPACE@1969..1976 "\n "
- FALSE_EXPR@1976..2032
- EXPR_ERROR@1976..2032
- ERROR_KW@1976..1981 "error"
- WHITESPACE@1981..1982 " "
- EXPR_BINARY@1982..2032
- LHS_EXPR@1982..2016
- EXPR_STRING@1982..2016
- STRING_SINGLE@1982..2016 "'Expected string or a ..."
- WHITESPACE@2016..2017 " "
- MODULO@2017..2018 "%"
- WHITESPACE@2018..2019 " "
- EXPR_APPLY@2019..2032
- EXPR_INDEX@2019..2027
- EXPR_VAR@2019..2022
- NAME@2019..2022
- IDENT@2019..2022 "std"
- DOT@2022..2023 "."
- NAME@2023..2027
- IDENT@2023..2027 "type"
- ARGS_DESC@2027..2032
- L_PAREN@2027..2028 "("
- ARG@2028..2031
- EXPR_VAR@2028..2031
- NAME@2028..2031
- IDENT@2028..2031 "arr"
- R_PAREN@2031..2032 ")"
- COMMA@2032..2033 ","
- WHITESPACE@2033..2037 "\n\n "
- MEMBER_FIELD_METHOD@2037..2512
- FIELD_NAME_FIXED@2037..2046
- NAME@2037..2046
- IDENT@2037..2046 "filterMap"
- PARAMS_DESC@2046..2074
- L_PAREN@2046..2047 "("
- PARAM@2047..2058
- DESTRUCT_FULL@2047..2058
- NAME@2047..2058
- IDENT@2047..2058 "filter_func"
- COMMA@2058..2059 ","
- WHITESPACE@2059..2060 " "
- PARAM@2060..2068
- DESTRUCT_FULL@2060..2068
- NAME@2060..2068
- IDENT@2060..2068 "map_func"
- COMMA@2068..2069 ","
- WHITESPACE@2069..2070 " "
- PARAM@2070..2073
- DESTRUCT_FULL@2070..2073
- NAME@2070..2073
- IDENT@2070..2073 "arr"
- R_PAREN@2073..2074 ")"
- COLONCOLON@2074..2076 "::"
- WHITESPACE@2076..2081 "\n "
- EXPR_IF_THEN_ELSE@2081..2512
- IF_KW@2081..2083 "if"
- WHITESPACE@2083..2084 " "
- EXPR_UNARY@2084..2112
- NOT@2084..2085 "!"
- EXPR_APPLY@2085..2112
- EXPR_INDEX@2085..2099
- EXPR_VAR@2085..2088
- NAME@2085..2088
- IDENT@2085..2088 "std"
- DOT@2088..2089 "."
- NAME@2089..2099
- IDENT@2089..2099 "isFunction"
- ARGS_DESC@2099..2112
- L_PAREN@2099..2100 "("
- ARG@2100..2111
- EXPR_VAR@2100..2111
- NAME@2100..2111
- IDENT@2100..2111 "filter_func"
- R_PAREN@2111..2112 ")"
- WHITESPACE@2112..2113 " "
- THEN_KW@2113..2117 "then"
- WHITESPACE@2117..2124 "\n "
- TRUE_EXPR@2124..2206
- EXPR_ERROR@2124..2206
- ERROR_KW@2124..2129 "error"
- WHITESPACE@2129..2130 " "
- EXPR_PARENED@2130..2206
- L_PAREN@2130..2131 "("
- EXPR_BINARY@2131..2205
- LHS_EXPR@2131..2181
- EXPR_STRING@2131..2181
- STRING_SINGLE@2131..2181 "'std.filterMap first ..."
- WHITESPACE@2181..2182 " "
- PLUS@2182..2183 "+"
- WHITESPACE@2183..2184 " "
- EXPR_APPLY@2184..2205
- EXPR_INDEX@2184..2192
- EXPR_VAR@2184..2187
- NAME@2184..2187
- IDENT@2184..2187 "std"
- DOT@2187..2188 "."
- NAME@2188..2192
- IDENT@2188..2192 "type"
- ARGS_DESC@2192..2205
- L_PAREN@2192..2193 "("
- ARG@2193..2204
- EXPR_VAR@2193..2204
- NAME@2193..2204
- IDENT@2193..2204 "filter_func"
- R_PAREN@2204..2205 ")"
- R_PAREN@2205..2206 ")"
- WHITESPACE@2206..2211 "\n "
- ELSE_KW@2211..2215 "else"
- WHITESPACE@2215..2216 " "
- FALSE_EXPR@2216..2512
- EXPR_IF_THEN_ELSE@2216..2512
- IF_KW@2216..2218 "if"
- WHITESPACE@2218..2219 " "
- EXPR_UNARY@2219..2244
- NOT@2219..2220 "!"
- EXPR_APPLY@2220..2244
- EXPR_INDEX@2220..2234
- EXPR_VAR@2220..2223
- NAME@2220..2223
- IDENT@2220..2223 "std"
- DOT@2223..2224 "."
- NAME@2224..2234
- IDENT@2224..2234 "isFunction"
- ARGS_DESC@2234..2244
- L_PAREN@2234..2235 "("
- ARG@2235..2243
- EXPR_VAR@2235..2243
- NAME@2235..2243
- IDENT@2235..2243 "map_func"
- R_PAREN@2243..2244 ")"
- WHITESPACE@2244..2245 " "
- THEN_KW@2245..2249 "then"
- WHITESPACE@2249..2256 "\n "
- TRUE_EXPR@2256..2336
- EXPR_ERROR@2256..2336
- ERROR_KW@2256..2261 "error"
- WHITESPACE@2261..2262 " "
- EXPR_PARENED@2262..2336
- L_PAREN@2262..2263 "("
- EXPR_BINARY@2263..2335
- LHS_EXPR@2263..2314
- EXPR_STRING@2263..2314
- STRING_SINGLE@2263..2314 "'std.filterMap second ..."
- WHITESPACE@2314..2315 " "
- PLUS@2315..2316 "+"
- WHITESPACE@2316..2317 " "
- EXPR_APPLY@2317..2335
- EXPR_INDEX@2317..2325
- EXPR_VAR@2317..2320
- NAME@2317..2320
- IDENT@2317..2320 "std"
- DOT@2320..2321 "."
- NAME@2321..2325
- IDENT@2321..2325 "type"
- ARGS_DESC@2325..2335
- L_PAREN@2325..2326 "("
- ARG@2326..2334
- EXPR_VAR@2326..2334
- NAME@2326..2334
- IDENT@2326..2334 "map_func"
- R_PAREN@2334..2335 ")"
- R_PAREN@2335..2336 ")"
- WHITESPACE@2336..2341 "\n "
- ELSE_KW@2341..2345 "else"
- WHITESPACE@2345..2346 " "
- FALSE_EXPR@2346..2512
- EXPR_IF_THEN_ELSE@2346..2512
- IF_KW@2346..2348 "if"
- WHITESPACE@2348..2349 " "
- EXPR_UNARY@2349..2366
- NOT@2349..2350 "!"
- EXPR_APPLY@2350..2366
- EXPR_INDEX@2350..2361
- EXPR_VAR@2350..2353
- NAME@2350..2353
- IDENT@2350..2353 "std"
- DOT@2353..2354 "."
- NAME@2354..2361
- IDENT@2354..2361 "isArray"
- ARGS_DESC@2361..2366
- L_PAREN@2361..2362 "("
- ARG@2362..2365
- EXPR_VAR@2362..2365
- NAME@2362..2365
- IDENT@2362..2365 "arr"
- R_PAREN@2365..2366 ")"
- WHITESPACE@2366..2367 " "
- THEN_KW@2367..2371 "then"
- WHITESPACE@2371..2378 "\n "
- TRUE_EXPR@2378..2449
- EXPR_ERROR@2378..2449
- ERROR_KW@2378..2383 "error"
- WHITESPACE@2383..2384 " "
- EXPR_PARENED@2384..2449
- L_PAREN@2384..2385 "("
- EXPR_BINARY@2385..2448
- LHS_EXPR@2385..2432
- EXPR_STRING@2385..2432
- STRING_SINGLE@2385..2432 "'std.filterMap third ..."
- WHITESPACE@2432..2433 " "
- PLUS@2433..2434 "+"
- WHITESPACE@2434..2435 " "
- EXPR_APPLY@2435..2448
- EXPR_INDEX@2435..2443
- EXPR_VAR@2435..2438
- NAME@2435..2438
- IDENT@2435..2438 "std"
- DOT@2438..2439 "."
- NAME@2439..2443
- IDENT@2439..2443 "type"
- ARGS_DESC@2443..2448
- L_PAREN@2443..2444 "("
- ARG@2444..2447
- EXPR_VAR@2444..2447
- NAME@2444..2447
- IDENT@2444..2447 "arr"
- R_PAREN@2447..2448 ")"
- R_PAREN@2448..2449 ")"
- WHITESPACE@2449..2454 "\n "
- ELSE_KW@2454..2458 "else"
- WHITESPACE@2458..2465 "\n "
- FALSE_EXPR@2465..2512
- EXPR_APPLY@2465..2512
- EXPR_INDEX@2465..2472
- EXPR_VAR@2465..2468
- NAME@2465..2468
- IDENT@2465..2468 "std"
- DOT@2468..2469 "."
- NAME@2469..2472
- IDENT@2469..2472 "map"
- ARGS_DESC@2472..2512
- L_PAREN@2472..2473 "("
- ARG@2473..2481
- EXPR_VAR@2473..2481
- NAME@2473..2481
- IDENT@2473..2481 "map_func"
- COMMA@2481..2482 ","
- WHITESPACE@2482..2483 " "
- ARG@2483..2511
- EXPR_APPLY@2483..2511
- EXPR_INDEX@2483..2493
- EXPR_VAR@2483..2486
- NAME@2483..2486
- IDENT@2483..2486 "std"
- DOT@2486..2487 "."
- NAME@2487..2493
- IDENT@2487..2493 "filter"
- ARGS_DESC@2493..2511
- L_PAREN@2493..2494 "("
- ARG@2494..2505
- EXPR_VAR@2494..2505
- NAME@2494..2505
- IDENT@2494..2505 "filter_func"
- COMMA@2505..2506 ","
- WHITESPACE@2506..2507 " "
- ARG@2507..2510
- EXPR_VAR@2507..2510
- NAME@2507..2510
- IDENT@2507..2510 "arr"
- R_PAREN@2510..2511 ")"
- R_PAREN@2511..2512 ")"
- COMMA@2512..2513 ","
- WHITESPACE@2513..2517 "\n\n "
- MEMBER_FIELD_METHOD@2517..2625
- FIELD_NAME_FIXED@2517..2528
- NAME@2517..2528
- IDENT@2517..2528 "assertEqual"
- PARAMS_DESC@2528..2534
- L_PAREN@2528..2529 "("
- PARAM@2529..2530
- DESTRUCT_FULL@2529..2530
- NAME@2529..2530
- IDENT@2529..2530 "a"
- COMMA@2530..2531 ","
- WHITESPACE@2531..2532 " "
- PARAM@2532..2533
- DESTRUCT_FULL@2532..2533
- NAME@2532..2533
- IDENT@2532..2533 "b"
- R_PAREN@2533..2534 ")"
- COLONCOLON@2534..2536 "::"
- WHITESPACE@2536..2541 "\n "
- EXPR_IF_THEN_ELSE@2541..2625
- IF_KW@2541..2543 "if"
- WHITESPACE@2543..2544 " "
- EXPR_BINARY@2544..2550
- LHS_EXPR@2544..2545
- EXPR_VAR@2544..2545
- NAME@2544..2545
- IDENT@2544..2545 "a"
- WHITESPACE@2545..2546 " "
- EQ@2546..2548 "=="
- WHITESPACE@2548..2549 " "
- EXPR_VAR@2549..2550
- NAME@2549..2550
- IDENT@2549..2550 "b"
- WHITESPACE@2550..2551 " "
- THEN_KW@2551..2555 "then"
- WHITESPACE@2555..2562 "\n "
- TRUE_EXPR@2562..2566
- EXPR_LITERAL@2562..2566
- TRUE_KW@2562..2566 "true"
- WHITESPACE@2566..2571 "\n "
- ELSE_KW@2571..2575 "else"
- WHITESPACE@2575..2582 "\n "
- FALSE_EXPR@2582..2625
- EXPR_ERROR@2582..2625
- ERROR_KW@2582..2587 "error"
- WHITESPACE@2587..2588 " "
- EXPR_BINARY@2588..2625
- LHS_EXPR@2588..2621
- EXPR_BINARY@2588..2621
- LHS_EXPR@2588..2612
- EXPR_BINARY@2588..2612
- LHS_EXPR@2588..2608
- EXPR_STRING@2588..2608
- STRING_SINGLE@2588..2608 "'Assertion failed. '"
- WHITESPACE@2608..2609 " "
- PLUS@2609..2610 "+"
- WHITESPACE@2610..2611 " "
- EXPR_VAR@2611..2612
- NAME@2611..2612
- IDENT@2611..2612 "a"
- WHITESPACE@2612..2613 " "
- PLUS@2613..2614 "+"
+ EXPR@1406..1476
+ EXPR_PARENED@1406..1476
+ L_PAREN@1406..1407 "("
+ EXPR@1407..1475
+ EXPR_BINARY@1407..1475
+ EXPR@1407..1458
+ EXPR_STRING@1407..1458
+ STRING_SINGLE@1407..1458 "'std.mapWithKey first ..."
+ WHITESPACE@1458..1459 " "
+ PLUS@1459..1460 "+"
+ WHITESPACE@1460..1461 " "
+ EXPR@1461..1475
+ EXPR_VAR@1461..1464
+ NAME@1461..1464
+ IDENT@1461..1464 "std"
+ SUFFIX_INDEX@1464..1469
+ DOT@1464..1465 "."
+ NAME@1465..1469
+ IDENT@1465..1469 "type"
+ SUFFIX_APPLY@1469..1475
+ ARGS_DESC@1469..1475
+ L_PAREN@1469..1470 "("
+ ARG@1470..1474
+ EXPR@1470..1474
+ EXPR_VAR@1470..1474
+ NAME@1470..1474
+ IDENT@1470..1474 "func"
+ R_PAREN@1474..1475 ")"
+ R_PAREN@1475..1476 ")"
+ WHITESPACE@1476..1481 "\n "
+ ELSE_KW@1481..1485 "else"
+ WHITESPACE@1485..1486 " "
+ FALSE_EXPR@1486..1664
+ EXPR@1486..1664
+ EXPR_IF_THEN_ELSE@1486..1664
+ IF_KW@1486..1488 "if"
+ WHITESPACE@1488..1489 " "
+ EXPR@1489..1507
+ EXPR_UNARY@1489..1507
+ NOT@1489..1490 "!"
+ EXPR_VAR@1490..1493
+ NAME@1490..1493
+ IDENT@1490..1493 "std"
+ SUFFIX_INDEX@1493..1502
+ DOT@1493..1494 "."
+ NAME@1494..1502
+ IDENT@1494..1502 "isObject"
+ SUFFIX_APPLY@1502..1507
+ ARGS_DESC@1502..1507
+ L_PAREN@1502..1503 "("
+ ARG@1503..1506
+ EXPR@1503..1506
+ EXPR_VAR@1503..1506
+ NAME@1503..1506
+ IDENT@1503..1506 "obj"
+ R_PAREN@1506..1507 ")"
+ WHITESPACE@1507..1508 " "
+ THEN_KW@1508..1512 "then"
+ WHITESPACE@1512..1519 "\n "
+ TRUE_EXPR@1519..1593
+ EXPR@1519..1593
+ EXPR_ERROR@1519..1593
+ ERROR_KW@1519..1524 "error"
+ WHITESPACE@1524..1525 " "
+ EXPR@1525..1593
+ EXPR_PARENED@1525..1593
+ L_PAREN@1525..1526 "("
+ EXPR@1526..1592
+ EXPR_BINARY@1526..1592
+ EXPR@1526..1576
+ EXPR_STRING@1526..1576
+ STRING_SINGLE@1526..1576 "'std.mapWithKey secon ..."
+ WHITESPACE@1576..1577 " "
+ PLUS@1577..1578 "+"
+ WHITESPACE@1578..1579 " "
+ EXPR@1579..1592
+ EXPR_VAR@1579..1582
+ NAME@1579..1582
+ IDENT@1579..1582 "std"
+ SUFFIX_INDEX@1582..1587
+ DOT@1582..1583 "."
+ NAME@1583..1587
+ IDENT@1583..1587 "type"
+ SUFFIX_APPLY@1587..1592
+ ARGS_DESC@1587..1592
+ L_PAREN@1587..1588 "("
+ ARG@1588..1591
+ EXPR@1588..1591
+ EXPR_VAR@1588..1591
+ NAME@1588..1591
+ IDENT@1588..1591 "obj"
+ R_PAREN@1591..1592 ")"
+ R_PAREN@1592..1593 ")"
+ WHITESPACE@1593..1598 "\n "
+ ELSE_KW@1598..1602 "else"
+ WHITESPACE@1602..1609 "\n "
+ FALSE_EXPR@1609..1664
+ EXPR@1609..1664
+ EXPR_OBJECT@1609..1664
+ OBJ_BODY_COMP@1609..1664
+ L_BRACE@1609..1610 "{"
+ WHITESPACE@1610..1611 " "
+ MEMBER_FIELD_NORMAL@1611..1631
+ FIELD_NAME_DYNAMIC@1611..1614
+ L_BRACK@1611..1612 "["
+ EXPR@1612..1613
+ EXPR_VAR@1612..1613
+ NAME@1612..1613
+ IDENT@1612..1613 "k"
+ R_BRACK@1613..1614 "]"
+ COLON@1614..1615 ":"
+ WHITESPACE@1615..1616 " "
+ EXPR@1616..1631
+ EXPR_VAR@1616..1620
+ NAME@1616..1620
+ IDENT@1616..1620 "func"
+ SUFFIX_APPLY@1620..1631
+ ARGS_DESC@1620..1631
+ L_PAREN@1620..1621 "("
+ ARG@1621..1622
+ EXPR@1621..1622
+ EXPR_VAR@1621..1622
+ NAME@1621..1622
+ IDENT@1621..1622 "k"
+ COMMA@1622..1623 ","
+ WHITESPACE@1623..1624 " "
+ ARG@1624..1630
+ EXPR@1624..1630
+ EXPR_VAR@1624..1627
+ NAME@1624..1627
+ IDENT@1624..1627 "obj"
+ SUFFIX_INDEX_EXPR@1627..1630
+ L_BRACK@1627..1628 "["
+ EXPR@1628..1629
+ EXPR_VAR@1628..1629
+ NAME@1628..1629
+ IDENT@1628..1629 "k"
+ R_BRACK@1629..1630 "]"
+ R_PAREN@1630..1631 ")"
+ WHITESPACE@1631..1632 " "
+ FOR_SPEC@1632..1662
+ FOR_KW@1632..1635 "for"
+ WHITESPACE@1635..1636 " "
+ DESTRUCT_FULL@1636..1637
+ NAME@1636..1637
+ IDENT@1636..1637 "k"
+ WHITESPACE@1637..1638 " "
+ IN_KW@1638..1640 "in"
+ WHITESPACE@1640..1641 " "
+ EXPR@1641..1662
+ EXPR_VAR@1641..1644
+ NAME@1641..1644
+ IDENT@1641..1644 "std"
+ SUFFIX_INDEX@1644..1657
+ DOT@1644..1645 "."
+ NAME@1645..1657
+ IDENT@1645..1657 "objectFields"
+ SUFFIX_APPLY@1657..1662
+ ARGS_DESC@1657..1662
+ L_PAREN@1657..1658 "("
+ ARG@1658..1661
+ EXPR@1658..1661
+ EXPR_VAR@1658..1661
+ NAME@1658..1661
+ IDENT@1658..1661 "obj"
+ R_PAREN@1661..1662 ")"
+ WHITESPACE@1662..1663 " "
+ R_BRACE@1663..1664 "}"
+ COMMA@1664..1665 ","
+ WHITESPACE@1665..1669 "\n\n "
+ MEMBER_FIELD_METHOD@1669..1712
+ FIELD_NAME_FIXED@1669..1674
+ NAME@1669..1674
+ IDENT@1669..1674 "lines"
+ PARAMS_DESC@1674..1679
+ L_PAREN@1674..1675 "("
+ PARAM@1675..1678
+ DESTRUCT_FULL@1675..1678
+ NAME@1675..1678
+ IDENT@1675..1678 "arr"
+ R_PAREN@1678..1679 ")"
+ COLONCOLON@1679..1681 "::"
+ WHITESPACE@1681..1686 "\n "
+ EXPR@1686..1712
+ EXPR_VAR@1686..1689
+ NAME@1686..1689
+ IDENT@1686..1689 "std"
+ SUFFIX_INDEX@1689..1694
+ DOT@1689..1690 "."
+ NAME@1690..1694
+ IDENT@1690..1694 "join"
+ SUFFIX_APPLY@1694..1712
+ ARGS_DESC@1694..1712
+ L_PAREN@1694..1695 "("
+ ARG@1695..1699
+ EXPR@1695..1699
+ EXPR_STRING@1695..1699
+ STRING_SINGLE@1695..1699 "'\\n'"
+ COMMA@1699..1700 ","
+ WHITESPACE@1700..1701 " "
+ ARG@1701..1711
+ EXPR@1701..1711
+ EXPR_BINARY@1701..1711
+ EXPR@1701..1704
+ EXPR_VAR@1701..1704
+ NAME@1701..1704
+ IDENT@1701..1704 "arr"
+ WHITESPACE@1704..1705 " "
+ PLUS@1705..1706 "+"
+ WHITESPACE@1706..1707 " "
+ EXPR@1707..1711
+ EXPR_ARRAY@1707..1711
+ L_BRACK@1707..1708 "["
+ EXPR@1708..1710
+ EXPR_STRING@1708..1710
+ STRING_SINGLE@1708..1710 "''"
+ R_BRACK@1710..1711 "]"
+ R_PAREN@1711..1712 ")"
+ COMMA@1712..1713 ","
+ WHITESPACE@1713..1717 "\n\n "
+ MEMBER_FIELD_METHOD@1717..1929
+ FIELD_NAME_FIXED@1717..1725
+ NAME@1717..1725
+ IDENT@1717..1725 "deepJoin"
+ PARAMS_DESC@1725..1730
+ L_PAREN@1725..1726 "("
+ PARAM@1726..1729
+ DESTRUCT_FULL@1726..1729
+ NAME@1726..1729
+ IDENT@1726..1729 "arr"
+ R_PAREN@1729..1730 ")"
+ COLONCOLON@1730..1732 "::"
+ WHITESPACE@1732..1737 "\n "
+ EXPR@1737..1929
+ EXPR_IF_THEN_ELSE@1737..1929
+ IF_KW@1737..1739 "if"
+ WHITESPACE@1739..1740 " "
+ EXPR@1740..1757
+ EXPR_VAR@1740..1743
+ NAME@1740..1743
+ IDENT@1740..1743 "std"
+ SUFFIX_INDEX@1743..1752
+ DOT@1743..1744 "."
+ NAME@1744..1752
+ IDENT@1744..1752 "isString"
+ SUFFIX_APPLY@1752..1757
+ ARGS_DESC@1752..1757
+ L_PAREN@1752..1753 "("
+ ARG@1753..1756
+ EXPR@1753..1756
+ EXPR_VAR@1753..1756
+ NAME@1753..1756
+ IDENT@1753..1756 "arr"
+ R_PAREN@1756..1757 ")"
+ WHITESPACE@1757..1758 " "
+ THEN_KW@1758..1762 "then"
+ WHITESPACE@1762..1769 "\n "
+ TRUE_EXPR@1769..1772
+ EXPR@1769..1772
+ EXPR_VAR@1769..1772
+ NAME@1769..1772
+ IDENT@1769..1772 "arr"
+ WHITESPACE@1772..1777 "\n "
+ ELSE_KW@1777..1781 "else"
+ WHITESPACE@1781..1782 " "
+ FALSE_EXPR@1782..1929
+ EXPR@1782..1929
+ EXPR_IF_THEN_ELSE@1782..1929
+ IF_KW@1782..1784 "if"
+ WHITESPACE@1784..1785 " "
+ EXPR@1785..1801
+ EXPR_VAR@1785..1788
+ NAME@1785..1788
+ IDENT@1785..1788 "std"
+ SUFFIX_INDEX@1788..1796
+ DOT@1788..1789 "."
+ NAME@1789..1796
+ IDENT@1789..1796 "isArray"
+ SUFFIX_APPLY@1796..1801
+ ARGS_DESC@1796..1801
+ L_PAREN@1796..1797 "("
+ ARG@1797..1800
+ EXPR@1797..1800
+ EXPR_VAR@1797..1800
+ NAME@1797..1800
+ IDENT@1797..1800 "arr"
+ R_PAREN@1800..1801 ")"
+ WHITESPACE@1801..1802 " "
+ THEN_KW@1802..1806 "then"
+ WHITESPACE@1806..1813 "\n "
+ TRUE_EXPR@1813..1857
+ EXPR@1813..1857
+ EXPR_VAR@1813..1816
+ NAME@1813..1816
+ IDENT@1813..1816 "std"
+ SUFFIX_INDEX@1816..1821
+ DOT@1816..1817 "."
+ NAME@1817..1821
+ IDENT@1817..1821 "join"
+ SUFFIX_APPLY@1821..1857
+ ARGS_DESC@1821..1857
+ L_PAREN@1821..1822 "("
+ ARG@1822..1824
+ EXPR@1822..1824
+ EXPR_STRING@1822..1824
+ STRING_SINGLE@1822..1824 "''"
+ COMMA@1824..1825 ","
+ WHITESPACE@1825..1826 " "
+ ARG@1826..1856
+ EXPR@1826..1856
+ EXPR_ARRAY_COMP@1826..1856
+ L_BRACK@1826..1827 "["
+ EXPR@1827..1842
+ EXPR_VAR@1827..1830
+ NAME@1827..1830
+ IDENT@1827..1830 "std"
+ SUFFIX_INDEX@1830..1839
+ DOT@1830..1831 "."
+ NAME@1831..1839
+ IDENT@1831..1839 "deepJoin"
+ SUFFIX_APPLY@1839..1842
+ ARGS_DESC@1839..1842
+ L_PAREN@1839..1840 "("
+ ARG@1840..1841
+ EXPR@1840..1841
+ EXPR_VAR@1840..1841
+ NAME@1840..1841
+ IDENT@1840..1841 "x"
+ R_PAREN@1841..1842 ")"
+ WHITESPACE@1842..1843 " "
+ FOR_SPEC@1843..1855
+ FOR_KW@1843..1846 "for"
+ WHITESPACE@1846..1847 " "
+ DESTRUCT_FULL@1847..1848
+ NAME@1847..1848
+ IDENT@1847..1848 "x"
+ WHITESPACE@1848..1849 " "
+ IN_KW@1849..1851 "in"
+ WHITESPACE@1851..1852 " "
+ EXPR@1852..1855
+ EXPR_VAR@1852..1855
+ NAME@1852..1855
+ IDENT@1852..1855 "arr"
+ R_BRACK@1855..1856 "]"
+ R_PAREN@1856..1857 ")"
+ WHITESPACE@1857..1862 "\n "
+ ELSE_KW@1862..1866 "else"
+ WHITESPACE@1866..1873 "\n "
+ FALSE_EXPR@1873..1929
+ EXPR@1873..1929
+ EXPR_ERROR@1873..1929
+ ERROR_KW@1873..1878 "error"
+ WHITESPACE@1878..1879 " "
+ EXPR@1879..1929
+ EXPR_BINARY@1879..1929
+ EXPR@1879..1913
+ EXPR_STRING@1879..1913
+ STRING_SINGLE@1879..1913 "'Expected string or a ..."
+ WHITESPACE@1913..1914 " "
+ MODULO@1914..1915 "%"
+ WHITESPACE@1915..1916 " "
+ EXPR@1916..1929
+ EXPR_VAR@1916..1919
+ NAME@1916..1919
+ IDENT@1916..1919 "std"
+ SUFFIX_INDEX@1919..1924
+ DOT@1919..1920 "."
+ NAME@1920..1924
+ IDENT@1920..1924 "type"
+ SUFFIX_APPLY@1924..1929
+ ARGS_DESC@1924..1929
+ L_PAREN@1924..1925 "("
+ ARG@1925..1928
+ EXPR@1925..1928
+ EXPR_VAR@1925..1928
+ NAME@1925..1928
+ IDENT@1925..1928 "arr"
+ R_PAREN@1928..1929 ")"
+ COMMA@1929..1930 ","
+ WHITESPACE@1930..1934 "\n\n "
+ MEMBER_FIELD_METHOD@1934..2042
+ FIELD_NAME_FIXED@1934..1945
+ NAME@1934..1945
+ IDENT@1934..1945 "assertEqual"
+ PARAMS_DESC@1945..1951
+ L_PAREN@1945..1946 "("
+ PARAM@1946..1947
+ DESTRUCT_FULL@1946..1947
+ NAME@1946..1947
+ IDENT@1946..1947 "a"
+ COMMA@1947..1948 ","
+ WHITESPACE@1948..1949 " "
+ PARAM@1949..1950
+ DESTRUCT_FULL@1949..1950
+ NAME@1949..1950
+ IDENT@1949..1950 "b"
+ R_PAREN@1950..1951 ")"
+ COLONCOLON@1951..1953 "::"
+ WHITESPACE@1953..1958 "\n "
+ EXPR@1958..2042
+ EXPR_IF_THEN_ELSE@1958..2042
+ IF_KW@1958..1960 "if"
+ WHITESPACE@1960..1961 " "
+ EXPR@1961..1967
+ EXPR_BINARY@1961..1967
+ EXPR@1961..1962
+ EXPR_VAR@1961..1962
+ NAME@1961..1962
+ IDENT@1961..1962 "a"
+ WHITESPACE@1962..1963 " "
+ EQ@1963..1965 "=="
+ WHITESPACE@1965..1966 " "
+ EXPR@1966..1967
+ EXPR_VAR@1966..1967
+ NAME@1966..1967
+ IDENT@1966..1967 "b"
+ WHITESPACE@1967..1968 " "
+ THEN_KW@1968..1972 "then"
+ WHITESPACE@1972..1979 "\n "
+ TRUE_EXPR@1979..1983
+ EXPR@1979..1983
+ EXPR_LITERAL@1979..1983
+ TRUE_KW@1979..1983 "true"
+ WHITESPACE@1983..1988 "\n "
+ ELSE_KW@1988..1992 "else"
+ WHITESPACE@1992..1999 "\n "
+ FALSE_EXPR@1999..2042
+ EXPR@1999..2042
+ EXPR_ERROR@1999..2042
+ ERROR_KW@1999..2004 "error"
+ WHITESPACE@2004..2005 " "
+ EXPR@2005..2042
+ EXPR_BINARY@2005..2042
+ EXPR@2005..2038
+ EXPR_BINARY@2005..2038
+ EXPR@2005..2029
+ EXPR_BINARY@2005..2029
+ EXPR@2005..2025
+ EXPR_STRING@2005..2025
+ STRING_SINGLE@2005..2025 "'Assertion failed. '"
+ WHITESPACE@2025..2026 " "
+ PLUS@2026..2027 "+"
+ WHITESPACE@2027..2028 " "
+ EXPR@2028..2029
+ EXPR_VAR@2028..2029
+ NAME@2028..2029
+ IDENT@2028..2029 "a"
+ WHITESPACE@2029..2030 " "
+ PLUS@2030..2031 "+"
+ WHITESPACE@2031..2032 " "
+ EXPR@2032..2038
+ EXPR_STRING@2032..2038
+ STRING_SINGLE@2032..2038 "' != '"
+ WHITESPACE@2038..2039 " "
+ PLUS@2039..2040 "+"
+ WHITESPACE@2040..2041 " "
+ EXPR@2041..2042
+ EXPR_VAR@2041..2042
+ NAME@2041..2042
+ IDENT@2041..2042 "b"
+ COMMA@2042..2043 ","
+ WHITESPACE@2043..2047 "\n\n "
+ MEMBER_FIELD_METHOD@2047..2149
+ FIELD_NAME_FIXED@2047..2052
+ NAME@2047..2052
+ IDENT@2047..2052 "clamp"
+ PARAMS_DESC@2052..2071
+ L_PAREN@2052..2053 "("
+ PARAM@2053..2054
+ DESTRUCT_FULL@2053..2054
+ NAME@2053..2054
+ IDENT@2053..2054 "x"
+ COMMA@2054..2055 ","
+ WHITESPACE@2055..2056 " "
+ PARAM@2056..2062
+ DESTRUCT_FULL@2056..2062
+ NAME@2056..2062
+ IDENT@2056..2062 "minVal"
+ COMMA@2062..2063 ","
+ WHITESPACE@2063..2064 " "
+ PARAM@2064..2070
+ DESTRUCT_FULL@2064..2070
+ NAME@2064..2070
+ IDENT@2064..2070 "maxVal"
+ R_PAREN@2070..2071 ")"
+ COLONCOLON@2071..2073 "::"
+ WHITESPACE@2073..2078 "\n "
+ EXPR@2078..2149
+ EXPR_IF_THEN_ELSE@2078..2149
+ IF_KW@2078..2080 "if"
+ WHITESPACE@2080..2081 " "
+ EXPR@2081..2091
+ EXPR_BINARY@2081..2091
+ EXPR@2081..2082
+ EXPR_VAR@2081..2082
+ NAME@2081..2082
+ IDENT@2081..2082 "x"
+ WHITESPACE@2082..2083 " "
+ LT@2083..2084 "<"
+ WHITESPACE@2084..2085 " "
+ EXPR@2085..2091
+ EXPR_VAR@2085..2091
+ NAME@2085..2091
+ IDENT@2085..2091 "minVal"
+ WHITESPACE@2091..2092 " "
+ THEN_KW@2092..2096 "then"
+ WHITESPACE@2096..2097 " "
+ TRUE_EXPR@2097..2103
+ EXPR@2097..2103
+ EXPR_VAR@2097..2103
+ NAME@2097..2103
+ IDENT@2097..2103 "minVal"
+ WHITESPACE@2103..2108 "\n "
+ ELSE_KW@2108..2112 "else"
+ WHITESPACE@2112..2113 " "
+ FALSE_EXPR@2113..2149
+ EXPR@2113..2149
+ EXPR_IF_THEN_ELSE@2113..2149
+ IF_KW@2113..2115 "if"
+ WHITESPACE@2115..2116 " "
+ EXPR@2116..2126
+ EXPR_BINARY@2116..2126
+ EXPR@2116..2117
+ EXPR_VAR@2116..2117
+ NAME@2116..2117
+ IDENT@2116..2117 "x"
+ WHITESPACE@2117..2118 " "
+ GT@2118..2119 ">"
+ WHITESPACE@2119..2120 " "
+ EXPR@2120..2126
+ EXPR_VAR@2120..2126
+ NAME@2120..2126
+ IDENT@2120..2126 "maxVal"
+ WHITESPACE@2126..2127 " "
+ THEN_KW@2127..2131 "then"
+ WHITESPACE@2131..2132 " "
+ TRUE_EXPR@2132..2138
+ EXPR@2132..2138
+ EXPR_VAR@2132..2138
+ NAME@2132..2138
+ IDENT@2132..2138 "maxVal"
+ WHITESPACE@2138..2143 "\n "
+ ELSE_KW@2143..2147 "else"
+ WHITESPACE@2147..2148 " "
+ FALSE_EXPR@2148..2149
+ EXPR@2148..2149
+ EXPR_VAR@2148..2149
+ NAME@2148..2149
+ IDENT@2148..2149 "x"
+ COMMA@2149..2150 ","
+ WHITESPACE@2150..2154 "\n\n "
+ MEMBER_FIELD_METHOD@2154..2840
+ FIELD_NAME_FIXED@2154..2165
+ NAME@2154..2165
+ IDENT@2154..2165 "manifestIni"
+ PARAMS_DESC@2165..2170
+ L_PAREN@2165..2166 "("
+ PARAM@2166..2169
+ DESTRUCT_FULL@2166..2169
+ NAME@2166..2169
+ IDENT@2166..2169 "ini"
+ R_PAREN@2169..2170 ")"
+ COLONCOLON@2170..2172 "::"
+ WHITESPACE@2172..2177 "\n "
+ EXPR@2177..2840
+ STMT_LOCAL@2177..2481
+ LOCAL_KW@2177..2182 "local"
+ WHITESPACE@2182..2183 " "
+ BIND_FUNCTION@2183..2480
+ NAME@2183..2193
+ IDENT@2183..2193 "body_lines"
+ PARAMS_DESC@2193..2199
+ L_PAREN@2193..2194 "("
+ PARAM@2194..2198
+ DESTRUCT_FULL@2194..2198
+ NAME@2194..2198
+ IDENT@2194..2198 "body"
+ R_PAREN@2198..2199 ")"
+ WHITESPACE@2199..2200 " "
+ ASSIGN@2200..2201 "="
+ WHITESPACE@2201..2208 "\n "
+ EXPR@2208..2480
+ EXPR_VAR@2208..2211
+ NAME@2208..2211
+ IDENT@2208..2211 "std"
+ SUFFIX_INDEX@2211..2216
+ DOT@2211..2212 "."
+ NAME@2212..2216
+ IDENT@2212..2216 "join"
+ SUFFIX_APPLY@2216..2480
+ ARGS_DESC@2216..2480
+ L_PAREN@2216..2217 "("
+ ARG@2217..2219
+ EXPR@2217..2219
+ EXPR_ARRAY@2217..2219
+ L_BRACK@2217..2218 "["
+ R_BRACK@2218..2219 "]"
+ COMMA@2219..2220 ","
+ WHITESPACE@2220..2221 " "
+ ARG@2221..2479
+ EXPR@2221..2479
+ EXPR_ARRAY_COMP@2221..2479
+ L_BRACK@2221..2222 "["
+ WHITESPACE@2222..2231 "\n "
+ EXPR@2231..2430
+ STMT_LOCAL@2231..2263
+ LOCAL_KW@2231..2236 "local"
+ WHITESPACE@2236..2237 " "
+ BIND_DESTRUCT@2237..2262
+ DESTRUCT_FULL@2237..2252
+ NAME@2237..2252
+ IDENT@2237..2252 "value_or_values"
+ WHITESPACE@2252..2253 " "
+ ASSIGN@2253..2254 "="
+ WHITESPACE@2254..2255 " "
+ EXPR@2255..2262
+ EXPR_VAR@2255..2259
+ NAME@2255..2259
+ IDENT@2255..2259 "body"
+ SUFFIX_INDEX_EXPR@2259..2262
+ L_BRACK@2259..2260 "["
+ EXPR@2260..2261
+ EXPR_VAR@2260..2261
+ NAME@2260..2261
+ IDENT@2260..2261 "k"
+ R_BRACK@2261..2262 "]"
+ SEMI@2262..2263 ";"
+ WHITESPACE@2263..2272 "\n "
+ EXPR_IF_THEN_ELSE@2272..2430
+ IF_KW@2272..2274 "if"
+ WHITESPACE@2274..2275 " "
+ EXPR@2275..2303
+ EXPR_VAR@2275..2278
+ NAME@2275..2278
+ IDENT@2275..2278 "std"
+ SUFFIX_INDEX@2278..2286
+ DOT@2278..2279 "."
+ NAME@2279..2286
+ IDENT@2279..2286 "isArray"
+ SUFFIX_APPLY@2286..2303
+ ARGS_DESC@2286..2303
+ L_PAREN@2286..2287 "("
+ ARG@2287..2302
+ EXPR@2287..2302
+ EXPR_VAR@2287..2302
+ NAME@2287..2302
+ IDENT@2287..2302 "value_or_values"
+ R_PAREN@2302..2303 ")"
+ WHITESPACE@2303..2304 " "
+ THEN_KW@2304..2308 "then"
+ WHITESPACE@2308..2319 "\n "
+ TRUE_EXPR@2319..2372
+ EXPR@2319..2372
+ EXPR_ARRAY_COMP@2319..2372
+ L_BRACK@2319..2320 "["
+ EXPR@2320..2342
+ EXPR_BINARY@2320..2342
+ EXPR@2320..2329
+ EXPR_STRING@2320..2329
+ STRING_SINGLE@2320..2329 "'%s = %s'"
+ WHITESPACE@2329..2330 " "
+ MODULO@2330..2331 "%"
+ WHITESPACE@2331..2332 " "
+ EXPR@2332..2342
+ EXPR_ARRAY@2332..2342
+ L_BRACK@2332..2333 "["
+ EXPR@2333..2334
+ EXPR_VAR@2333..2334
+ NAME@2333..2334
+ IDENT@2333..2334 "k"
+ COMMA@2334..2335 ","
+ WHITESPACE@2335..2336 " "
+ EXPR@2336..2341
+ EXPR_VAR@2336..2341
+ NAME@2336..2341
+ IDENT@2336..2341 "value"
+ R_BRACK@2341..2342 "]"
+ WHITESPACE@2342..2343 " "
+ FOR_SPEC@2343..2371
+ FOR_KW@2343..2346 "for"
+ WHITESPACE@2346..2347 " "
+ DESTRUCT_FULL@2347..2352
+ NAME@2347..2352
+ IDENT@2347..2352 "value"
+ WHITESPACE@2352..2353 " "
+ IN_KW@2353..2355 "in"
+ WHITESPACE@2355..2356 " "
+ EXPR@2356..2371
+ EXPR_VAR@2356..2371
+ NAME@2356..2371
+ IDENT@2356..2371 "value_or_values"
+ R_BRACK@2371..2372 "]"
+ WHITESPACE@2372..2381 "\n "
+ ELSE_KW@2381..2385 "else"
+ WHITESPACE@2385..2396 "\n "
+ FALSE_EXPR@2396..2430
+ EXPR@2396..2430
+ EXPR_ARRAY@2396..2430
+ L_BRACK@2396..2397 "["
+ EXPR@2397..2429
+ EXPR_BINARY@2397..2429
+ EXPR@2397..2406
+ EXPR_STRING@2397..2406
+ STRING_SINGLE@2397..2406 "'%s = %s'"
+ WHITESPACE@2406..2407 " "
+ MODULO@2407..2408 "%"
+ WHITESPACE@2408..2409 " "
+ EXPR@2409..2429
+ EXPR_ARRAY@2409..2429
+ L_BRACK@2409..2410 "["
+ EXPR@2410..2411
+ EXPR_VAR@2410..2411
+ NAME@2410..2411
+ IDENT@2410..2411 "k"
+ COMMA@2411..2412 ","
+ WHITESPACE@2412..2413 " "
+ EXPR@2413..2428
+ EXPR_VAR@2413..2428
+ NAME@2413..2428
+ IDENT@2413..2428 "value_or_values"
+ R_BRACK@2428..2429 "]"
+ R_BRACK@2429..2430 "]"
+ WHITESPACE@2430..2440 "\n\n "
+ FOR_SPEC@2440..2471
+ FOR_KW@2440..2443 "for"
+ WHITESPACE@2443..2444 " "
+ DESTRUCT_FULL@2444..2445
+ NAME@2444..2445
+ IDENT@2444..2445 "k"
+ WHITESPACE@2445..2446 " "
+ IN_KW@2446..2448 "in"
+ WHITESPACE@2448..2449 " "
+ EXPR@2449..2471
+ EXPR_VAR@2449..2452
+ NAME@2449..2452
+ IDENT@2449..2452 "std"
+ SUFFIX_INDEX@2452..2465
+ DOT@2452..2453 "."
+ NAME@2453..2465
+ IDENT@2453..2465 "objectFields"
+ SUFFIX_APPLY@2465..2471
+ ARGS_DESC@2465..2471
+ L_PAREN@2465..2466 "("
+ ARG@2466..2470
+ EXPR@2466..2470
+ EXPR_VAR@2466..2470
+ NAME@2466..2470
+ IDENT@2466..2470 "body"
+ R_PAREN@2470..2471 ")"
+ WHITESPACE@2471..2478 "\n "
+ R_BRACK@2478..2479 "]"
+ R_PAREN@2479..2480 ")"
+ SEMI@2480..2481 ";"
+ WHITESPACE@2481..2487 "\n\n "
+ STMT_LOCAL@2487..2769
+ LOCAL_KW@2487..2492 "local"
+ WHITESPACE@2492..2493 " "
+ BIND_FUNCTION@2493..2561
+ NAME@2493..2506
+ IDENT@2493..2506 "section_lines"
+ PARAMS_DESC@2506..2520
+ L_PAREN@2506..2507 "("
+ PARAM@2507..2512
+ DESTRUCT_FULL@2507..2512
+ NAME@2507..2512
+ IDENT@2507..2512 "sname"
+ COMMA@2512..2513 ","
+ WHITESPACE@2513..2514 " "
+ PARAM@2514..2519
+ DESTRUCT_FULL@2514..2519
+ NAME@2514..2519
+ IDENT@2514..2519 "sbody"
+ R_PAREN@2519..2520 ")"
+ WHITESPACE@2520..2521 " "
+ ASSIGN@2521..2522 "="
+ WHITESPACE@2522..2523 " "
+ EXPR@2523..2561
+ EXPR_BINARY@2523..2561
+ EXPR@2523..2541
+ EXPR_ARRAY@2523..2541
+ L_BRACK@2523..2524 "["
+ EXPR@2524..2540
+ EXPR_BINARY@2524..2540
+ EXPR@2524..2530
+ EXPR_STRING@2524..2530
+ STRING_SINGLE@2524..2530 "'[%s]'"
+ WHITESPACE@2530..2531 " "
+ MODULO@2531..2532 "%"
+ WHITESPACE@2532..2533 " "
+ EXPR@2533..2540
+ EXPR_ARRAY@2533..2540
+ L_BRACK@2533..2534 "["
+ EXPR@2534..2539
+ EXPR_VAR@2534..2539
+ NAME@2534..2539
+ IDENT@2534..2539 "sname"
+ R_BRACK@2539..2540 "]"
+ R_BRACK@2540..2541 "]"
+ WHITESPACE@2541..2542 " "
+ PLUS@2542..2543 "+"
+ WHITESPACE@2543..2544 " "
+ EXPR@2544..2561
+ EXPR_VAR@2544..2554
+ NAME@2544..2554
+ IDENT@2544..2554 "body_lines"
+ SUFFIX_APPLY@2554..2561
+ ARGS_DESC@2554..2561
+ L_PAREN@2554..2555 "("
+ ARG@2555..2560
+ EXPR@2555..2560
+ EXPR_VAR@2555..2560
+ NAME@2555..2560
+ IDENT@2555..2560 "sbody"
+ R_PAREN@2560..2561 ")"
+ COMMA@2561..2562 ","
+ WHITESPACE@2562..2573 "\n "
+ BIND_DESTRUCT@2573..2648
+ DESTRUCT_FULL@2573..2582
+ NAME@2573..2582
+ IDENT@2573..2582 "main_body"
+ WHITESPACE@2582..2583 " "
+ ASSIGN@2583..2584 "="
+ WHITESPACE@2584..2585 " "
+ EXPR@2585..2648
+ EXPR_IF_THEN_ELSE@2585..2648
+ IF_KW@2585..2587 "if"
+ WHITESPACE@2587..2588 " "
+ EXPR@2588..2614
+ EXPR_VAR@2588..2591
+ NAME@2588..2591
+ IDENT@2588..2591 "std"
+ SUFFIX_INDEX@2591..2601
+ DOT@2591..2592 "."
+ NAME@2592..2601
+ IDENT@2592..2601 "objectHas"
+ SUFFIX_APPLY@2601..2614
+ ARGS_DESC@2601..2614
+ L_PAREN@2601..2602 "("
+ ARG@2602..2605
+ EXPR@2602..2605
+ EXPR_VAR@2602..2605
+ NAME@2602..2605
+ IDENT@2602..2605 "ini"
+ COMMA@2605..2606 ","
+ WHITESPACE@2606..2607 " "
+ ARG@2607..2613
+ EXPR@2607..2613
+ EXPR_STRING@2607..2613
+ STRING_SINGLE@2607..2613 "'main'"
+ R_PAREN@2613..2614 ")"
WHITESPACE@2614..2615 " "
- EXPR_STRING@2615..2621
- STRING_SINGLE@2615..2621 "' != '"
- WHITESPACE@2621..2622 " "
- PLUS@2622..2623 "+"
- WHITESPACE@2623..2624 " "
- EXPR_VAR@2624..2625
- NAME@2624..2625
- IDENT@2624..2625 "b"
- COMMA@2625..2626 ","
- WHITESPACE@2626..2630 "\n\n "
- MEMBER_FIELD_METHOD@2630..2732
- FIELD_NAME_FIXED@2630..2635
- NAME@2630..2635
- IDENT@2630..2635 "clamp"
- PARAMS_DESC@2635..2654
- L_PAREN@2635..2636 "("
- PARAM@2636..2637
- DESTRUCT_FULL@2636..2637
- NAME@2636..2637
- IDENT@2636..2637 "x"
- COMMA@2637..2638 ","
- WHITESPACE@2638..2639 " "
- PARAM@2639..2645
- DESTRUCT_FULL@2639..2645
- NAME@2639..2645
- IDENT@2639..2645 "minVal"
- COMMA@2645..2646 ","
- WHITESPACE@2646..2647 " "
- PARAM@2647..2653
- DESTRUCT_FULL@2647..2653
- NAME@2647..2653
- IDENT@2647..2653 "maxVal"
- R_PAREN@2653..2654 ")"
- COLONCOLON@2654..2656 "::"
- WHITESPACE@2656..2661 "\n "
- EXPR_IF_THEN_ELSE@2661..2732
- IF_KW@2661..2663 "if"
- WHITESPACE@2663..2664 " "
- EXPR_BINARY@2664..2674
- LHS_EXPR@2664..2665
- EXPR_VAR@2664..2665
- NAME@2664..2665
- IDENT@2664..2665 "x"
- WHITESPACE@2665..2666 " "
- LT@2666..2667 "<"
- WHITESPACE@2667..2668 " "
- EXPR_VAR@2668..2674
- NAME@2668..2674
- IDENT@2668..2674 "minVal"
- WHITESPACE@2674..2675 " "
- THEN_KW@2675..2679 "then"
- WHITESPACE@2679..2680 " "
- TRUE_EXPR@2680..2686
- EXPR_VAR@2680..2686
- NAME@2680..2686
- IDENT@2680..2686 "minVal"
- WHITESPACE@2686..2691 "\n "
- ELSE_KW@2691..2695 "else"
- WHITESPACE@2695..2696 " "
- FALSE_EXPR@2696..2732
- EXPR_IF_THEN_ELSE@2696..2732
- IF_KW@2696..2698 "if"
- WHITESPACE@2698..2699 " "
- EXPR_BINARY@2699..2709
- LHS_EXPR@2699..2700
- EXPR_VAR@2699..2700
- NAME@2699..2700
- IDENT@2699..2700 "x"
- WHITESPACE@2700..2701 " "
- GT@2701..2702 ">"
- WHITESPACE@2702..2703 " "
- EXPR_VAR@2703..2709
- NAME@2703..2709
- IDENT@2703..2709 "maxVal"
- WHITESPACE@2709..2710 " "
- THEN_KW@2710..2714 "then"
- WHITESPACE@2714..2715 " "
- TRUE_EXPR@2715..2721
- EXPR_VAR@2715..2721
- NAME@2715..2721
- IDENT@2715..2721 "maxVal"
- WHITESPACE@2721..2726 "\n "
- ELSE_KW@2726..2730 "else"
- WHITESPACE@2730..2731 " "
- FALSE_EXPR@2731..2732
- EXPR_VAR@2731..2732
- NAME@2731..2732
- IDENT@2731..2732 "x"
- COMMA@2732..2733 ","
- WHITESPACE@2733..2737 "\n\n "
- MEMBER_FIELD_METHOD@2737..2804
- FIELD_NAME_FIXED@2737..2750
- NAME@2737..2750
- IDENT@2737..2750 "flattenArrays"
- PARAMS_DESC@2750..2756
- L_PAREN@2750..2751 "("
- PARAM@2751..2755
- DESTRUCT_FULL@2751..2755
- NAME@2751..2755
- IDENT@2751..2755 "arrs"
- R_PAREN@2755..2756 ")"
- COLONCOLON@2756..2758 "::"
- WHITESPACE@2758..2763 "\n "
- EXPR_APPLY@2763..2804
- EXPR_INDEX@2763..2772
- EXPR_VAR@2763..2766
- NAME@2763..2766
- IDENT@2763..2766 "std"
- DOT@2766..2767 "."
- NAME@2767..2772
- IDENT@2767..2772 "foldl"
- ARGS_DESC@2772..2804
- L_PAREN@2772..2773 "("
- ARG@2773..2793
- EXPR_FUNCTION@2773..2793
- FUNCTION_KW@2773..2781 "function"
- PARAMS_DESC@2781..2787
- L_PAREN@2781..2782 "("
- PARAM@2782..2783
- DESTRUCT_FULL@2782..2783
- NAME@2782..2783
- IDENT@2782..2783 "a"
- COMMA@2783..2784 ","
- WHITESPACE@2784..2785 " "
- PARAM@2785..2786
- DESTRUCT_FULL@2785..2786
- NAME@2785..2786
- IDENT@2785..2786 "b"
- R_PAREN@2786..2787 ")"
- WHITESPACE@2787..2788 " "
- EXPR_BINARY@2788..2793
- LHS_EXPR@2788..2789
- EXPR_VAR@2788..2789
- NAME@2788..2789
- IDENT@2788..2789 "a"
- WHITESPACE@2789..2790 " "
- PLUS@2790..2791 "+"
- WHITESPACE@2791..2792 " "
- EXPR_VAR@2792..2793
- NAME@2792..2793
- IDENT@2792..2793 "b"
- COMMA@2793..2794 ","
- WHITESPACE@2794..2795 " "
- ARG@2795..2799
- EXPR_VAR@2795..2799
- NAME@2795..2799
- IDENT@2795..2799 "arrs"
- COMMA@2799..2800 ","
- WHITESPACE@2800..2801 " "
- ARG@2801..2803
- EXPR_ARRAY@2801..2803
- L_BRACK@2801..2802 "["
- R_BRACK@2802..2803 "]"
- R_PAREN@2803..2804 ")"
- COMMA@2804..2805 ","
- WHITESPACE@2805..2809 "\n\n "
- MEMBER_FIELD_METHOD@2809..3495
- FIELD_NAME_FIXED@2809..2820
- NAME@2809..2820
- IDENT@2809..2820 "manifestIni"
- PARAMS_DESC@2820..2825
- L_PAREN@2820..2821 "("
- PARAM@2821..2824
- DESTRUCT_FULL@2821..2824
- NAME@2821..2824
- IDENT@2821..2824 "ini"
- R_PAREN@2824..2825 ")"
- COLONCOLON@2825..2827 "::"
- WHITESPACE@2827..2832 "\n "
- STMT_LOCAL@2832..3136
- LOCAL_KW@2832..2837 "local"
- WHITESPACE@2837..2838 " "
- BIND_FUNCTION@2838..3135
- NAME@2838..2848
- IDENT@2838..2848 "body_lines"
- PARAMS_DESC@2848..2854
- L_PAREN@2848..2849 "("
- PARAM@2849..2853
- DESTRUCT_FULL@2849..2853
- NAME@2849..2853
- IDENT@2849..2853 "body"
- R_PAREN@2853..2854 ")"
- WHITESPACE@2854..2855 " "
- ASSIGN@2855..2856 "="
- WHITESPACE@2856..2863 "\n "
- EXPR_APPLY@2863..3135
- EXPR_INDEX@2863..2871
- EXPR_VAR@2863..2866
- NAME@2863..2866
- IDENT@2863..2866 "std"
- DOT@2866..2867 "."
- NAME@2867..2871
- IDENT@2867..2871 "join"
- ARGS_DESC@2871..3135
- L_PAREN@2871..2872 "("
- ARG@2872..2874
- EXPR_ARRAY@2872..2874
- L_BRACK@2872..2873 "["
- R_BRACK@2873..2874 "]"
- COMMA@2874..2875 ","
- WHITESPACE@2875..2876 " "
- ARG@2876..3134
- EXPR_ARRAY_COMP@2876..3134
- L_BRACK@2876..2877 "["
- WHITESPACE@2877..2886 "\n "
- STMT_LOCAL@2886..2918
- LOCAL_KW@2886..2891 "local"
- WHITESPACE@2891..2892 " "
- BIND_DESTRUCT@2892..2917
- DESTRUCT_FULL@2892..2907
- NAME@2892..2907
- IDENT@2892..2907 "value_or_values"
- WHITESPACE@2907..2908 " "
- ASSIGN@2908..2909 "="
- WHITESPACE@2909..2910 " "
- EXPR_INDEX_EXPR@2910..2917
- LHS_EXPR@2910..2914
- EXPR_VAR@2910..2914
- NAME@2910..2914
- IDENT@2910..2914 "body"
- L_BRACK@2914..2915 "["
- EXPR_VAR@2915..2916
- NAME@2915..2916
- IDENT@2915..2916 "k"
- R_BRACK@2916..2917 "]"
- SEMI@2917..2918 ";"
- WHITESPACE@2918..2927 "\n "
- EXPR_IF_THEN_ELSE@2927..3085
- IF_KW@2927..2929 "if"
- WHITESPACE@2929..2930 " "
- EXPR_APPLY@2930..2958
- EXPR_INDEX@2930..2941
- EXPR_VAR@2930..2933
- NAME@2930..2933
- IDENT@2930..2933 "std"
- DOT@2933..2934 "."
- NAME@2934..2941
- IDENT@2934..2941 "isArray"
- ARGS_DESC@2941..2958
- L_PAREN@2941..2942 "("
- ARG@2942..2957
- EXPR_VAR@2942..2957
- NAME@2942..2957
- IDENT@2942..2957 "value_or_values"
- R_PAREN@2957..2958 ")"
- WHITESPACE@2958..2959 " "
- THEN_KW@2959..2963 "then"
- WHITESPACE@2963..2974 "\n "
- TRUE_EXPR@2974..3027
- EXPR_ARRAY_COMP@2974..3027
- L_BRACK@2974..2975 "["
- EXPR_BINARY@2975..2997
- LHS_EXPR@2975..2984
- EXPR_STRING@2975..2984
- STRING_SINGLE@2975..2984 "'%s = %s'"
- WHITESPACE@2984..2985 " "
- MODULO@2985..2986 "%"
- WHITESPACE@2986..2987 " "
- EXPR_ARRAY@2987..2997
- L_BRACK@2987..2988 "["
- EXPR_VAR@2988..2989
- NAME@2988..2989
- IDENT@2988..2989 "k"
- COMMA@2989..2990 ","
- WHITESPACE@2990..2991 " "
- EXPR_VAR@2991..2996
- NAME@2991..2996
- IDENT@2991..2996 "value"
- R_BRACK@2996..2997 "]"
- WHITESPACE@2997..2998 " "
- FOR_SPEC@2998..3026
- FOR_KW@2998..3001 "for"
- WHITESPACE@3001..3002 " "
- NAME@3002..3007
- IDENT@3002..3007 "value"
- WHITESPACE@3007..3008 " "
- IN_KW@3008..3010 "in"
- WHITESPACE@3010..3011 " "
- EXPR_VAR@3011..3026
- NAME@3011..3026
- IDENT@3011..3026 "value_or_values"
- R_BRACK@3026..3027 "]"
- WHITESPACE@3027..3036 "\n "
- ELSE_KW@3036..3040 "else"
- WHITESPACE@3040..3051 "\n "
- FALSE_EXPR@3051..3085
- EXPR_ARRAY@3051..3085
- L_BRACK@3051..3052 "["
- EXPR_BINARY@3052..3084
- LHS_EXPR@3052..3061
- EXPR_STRING@3052..3061
- STRING_SINGLE@3052..3061 "'%s = %s'"
- WHITESPACE@3061..3062 " "
- MODULO@3062..3063 "%"
- WHITESPACE@3063..3064 " "
- EXPR_ARRAY@3064..3084
- L_BRACK@3064..3065 "["
- EXPR_VAR@3065..3066
- NAME@3065..3066
- IDENT@3065..3066 "k"
- COMMA@3066..3067 ","
- WHITESPACE@3067..3068 " "
- EXPR_VAR@3068..3083
- NAME@3068..3083
- IDENT@3068..3083 "value_or_values"
- R_BRACK@3083..3084 "]"
- R_BRACK@3084..3085 "]"
- WHITESPACE@3085..3095 "\n\n "
- FOR_SPEC@3095..3126
- FOR_KW@3095..3098 "for"
- WHITESPACE@3098..3099 " "
- NAME@3099..3100
- IDENT@3099..3100 "k"
- WHITESPACE@3100..3101 " "
- IN_KW@3101..3103 "in"
- WHITESPACE@3103..3104 " "
- EXPR_APPLY@3104..3126
- EXPR_INDEX@3104..3120
- EXPR_VAR@3104..3107
- NAME@3104..3107
- IDENT@3104..3107 "std"
- DOT@3107..3108 "."
- NAME@3108..3120
- IDENT@3108..3120 "objectFields"
- ARGS_DESC@3120..3126
- L_PAREN@3120..3121 "("
- ARG@3121..3125
- EXPR_VAR@3121..3125
- NAME@3121..3125
- IDENT@3121..3125 "body"
- R_PAREN@3125..3126 ")"
- WHITESPACE@3126..3133 "\n "
- R_BRACK@3133..3134 "]"
- R_PAREN@3134..3135 ")"
- SEMI@3135..3136 ";"
- WHITESPACE@3136..3142 "\n\n "
- STMT_LOCAL@3142..3424
- LOCAL_KW@3142..3147 "local"
- WHITESPACE@3147..3148 " "
- BIND_FUNCTION@3148..3216
- NAME@3148..3161
- IDENT@3148..3161 "section_lines"
- PARAMS_DESC@3161..3175
- L_PAREN@3161..3162 "("
- PARAM@3162..3167
- DESTRUCT_FULL@3162..3167
- NAME@3162..3167
- IDENT@3162..3167 "sname"
- COMMA@3167..3168 ","
- WHITESPACE@3168..3169 " "
- PARAM@3169..3174
- DESTRUCT_FULL@3169..3174
- NAME@3169..3174
- IDENT@3169..3174 "sbody"
- R_PAREN@3174..3175 ")"
- WHITESPACE@3175..3176 " "
- ASSIGN@3176..3177 "="
- WHITESPACE@3177..3178 " "
- EXPR_BINARY@3178..3216
- LHS_EXPR@3178..3196
- EXPR_ARRAY@3178..3196
- L_BRACK@3178..3179 "["
- EXPR_BINARY@3179..3195
- LHS_EXPR@3179..3185
- EXPR_STRING@3179..3185
- STRING_SINGLE@3179..3185 "'[%s]'"
- WHITESPACE@3185..3186 " "
- MODULO@3186..3187 "%"
- WHITESPACE@3187..3188 " "
- EXPR_ARRAY@3188..3195
- L_BRACK@3188..3189 "["
- EXPR_VAR@3189..3194
- NAME@3189..3194
- IDENT@3189..3194 "sname"
- R_BRACK@3194..3195 "]"
- R_BRACK@3195..3196 "]"
- WHITESPACE@3196..3197 " "
- PLUS@3197..3198 "+"
- WHITESPACE@3198..3199 " "
- EXPR_APPLY@3199..3216
- EXPR_VAR@3199..3209
- NAME@3199..3209
- IDENT@3199..3209 "body_lines"
- ARGS_DESC@3209..3216
- L_PAREN@3209..3210 "("
- ARG@3210..3215
- EXPR_VAR@3210..3215
- NAME@3210..3215
- IDENT@3210..3215 "sbody"
- R_PAREN@3215..3216 ")"
- COMMA@3216..3217 ","
- WHITESPACE@3217..3228 "\n "
- BIND_DESTRUCT@3228..3303
- DESTRUCT_FULL@3228..3237
- NAME@3228..3237
- IDENT@3228..3237 "main_body"
- WHITESPACE@3237..3238 " "
- ASSIGN@3238..3239 "="
- WHITESPACE@3239..3240 " "
- EXPR_IF_THEN_ELSE@3240..3303
- IF_KW@3240..3242 "if"
- WHITESPACE@3242..3243 " "
- EXPR_APPLY@3243..3269
- EXPR_INDEX@3243..3256
- EXPR_VAR@3243..3246
- NAME@3243..3246
- IDENT@3243..3246 "std"
- DOT@3246..3247 "."
- NAME@3247..3256
- IDENT@3247..3256 "objectHas"
- ARGS_DESC@3256..3269
- L_PAREN@3256..3257 "("
- ARG@3257..3260
- EXPR_VAR@3257..3260
- NAME@3257..3260
- IDENT@3257..3260 "ini"
- COMMA@3260..3261 ","
- WHITESPACE@3261..3262 " "
- ARG@3262..3268
- EXPR_STRING@3262..3268
- STRING_SINGLE@3262..3268 "'main'"
- R_PAREN@3268..3269 ")"
- WHITESPACE@3269..3270 " "
- THEN_KW@3270..3274 "then"
- WHITESPACE@3274..3275 " "
- TRUE_EXPR@3275..3295
- EXPR_APPLY@3275..3295
- EXPR_VAR@3275..3285
- NAME@3275..3285
- IDENT@3275..3285 "body_lines"
- ARGS_DESC@3285..3295
- L_PAREN@3285..3286 "("
- ARG@3286..3294
- EXPR_INDEX@3286..3294
- EXPR_VAR@3286..3289
- NAME@3286..3289
- IDENT@3286..3289 "ini"
- DOT@3289..3290 "."
- NAME@3290..3294
- IDENT@3290..3294 "main"
- R_PAREN@3294..3295 ")"
- WHITESPACE@3295..3296 " "
- ELSE_KW@3296..3300 "else"
- WHITESPACE@3300..3301 " "
- FALSE_EXPR@3301..3303
- EXPR_ARRAY@3301..3303
- L_BRACK@3301..3302 "["
- R_BRACK@3302..3303 "]"
- COMMA@3303..3304 ","
- WHITESPACE@3304..3315 "\n "
- BIND_DESTRUCT@3315..3423
- DESTRUCT_FULL@3315..3327
- NAME@3315..3327
- IDENT@3315..3327 "all_sections"
- WHITESPACE@3327..3328 " "
- ASSIGN@3328..3329 "="
- WHITESPACE@3329..3330 " "
- EXPR_ARRAY_COMP@3330..3423
- L_BRACK@3330..3331 "["
- WHITESPACE@3331..3338 "\n "
- EXPR_APPLY@3338..3371
- EXPR_VAR@3338..3351
- NAME@3338..3351
- IDENT@3338..3351 "section_lines"
- ARGS_DESC@3351..3371
- L_PAREN@3351..3352 "("
- ARG@3352..3353
- EXPR_VAR@3352..3353
- NAME@3352..3353
- IDENT@3352..3353 "k"
- COMMA@3353..3354 ","
- WHITESPACE@3354..3355 " "
- ARG@3355..3370
- EXPR_INDEX_EXPR@3355..3370
- LHS_EXPR@3355..3367
- EXPR_INDEX@3355..3367
- EXPR_VAR@3355..3358
- NAME@3355..3358
- IDENT@3355..3358 "ini"
- DOT@3358..3359 "."
- NAME@3359..3367
- IDENT@3359..3367 "sections"
- L_BRACK@3367..3368 "["
- EXPR_VAR@3368..3369
- NAME@3368..3369
- IDENT@3368..3369 "k"
- R_BRACK@3369..3370 "]"
- R_PAREN@3370..3371 ")"
- WHITESPACE@3371..3378 "\n "
- FOR_SPEC@3378..3417
- FOR_KW@3378..3381 "for"
- WHITESPACE@3381..3382 " "
- NAME@3382..3383
- IDENT@3382..3383 "k"
- WHITESPACE@3383..3384 " "
- IN_KW@3384..3386 "in"
- WHITESPACE@3386..3387 " "
- EXPR_APPLY@3387..3417
- EXPR_INDEX@3387..3403
- EXPR_VAR@3387..3390
- NAME@3387..3390
- IDENT@3387..3390 "std"
- DOT@3390..3391 "."
- NAME@3391..3403
- IDENT@3391..3403 "objectFields"
- ARGS_DESC@3403..3417
- L_PAREN@3403..3404 "("
- ARG@3404..3416
- EXPR_INDEX@3404..3416
- EXPR_VAR@3404..3407
- NAME@3404..3407
- IDENT@3404..3407 "ini"
- DOT@3407..3408 "."
- NAME@3408..3416
- IDENT@3408..3416 "sections"
- R_PAREN@3416..3417 ")"
- WHITESPACE@3417..3422 "\n "
- R_BRACK@3422..3423 "]"
- SEMI@3423..3424 ";"
- WHITESPACE@3424..3429 "\n "
- EXPR_APPLY@3429..3495
- EXPR_INDEX@3429..3437
- EXPR_VAR@3429..3432
- NAME@3429..3432
- IDENT@3429..3432 "std"
- DOT@3432..3433 "."
- NAME@3433..3437
- IDENT@3433..3437 "join"
- ARGS_DESC@3437..3495
- L_PAREN@3437..3438 "("
- ARG@3438..3442
- EXPR_STRING@3438..3442
- STRING_SINGLE@3438..3442 "'\\n'"
- COMMA@3442..3443 ","
- WHITESPACE@3443..3444 " "
- ARG@3444..3494
- EXPR_BINARY@3444..3494
- LHS_EXPR@3444..3487
- EXPR_BINARY@3444..3487
- LHS_EXPR@3444..3453
- EXPR_VAR@3444..3453
- NAME@3444..3453
- IDENT@3444..3453 "main_body"
- WHITESPACE@3453..3454 " "
- PLUS@3454..3455 "+"
- WHITESPACE@3455..3456 " "
- EXPR_APPLY@3456..3487
- EXPR_INDEX@3456..3473
- EXPR_VAR@3456..3459
- NAME@3456..3459
- IDENT@3456..3459 "std"
- DOT@3459..3460 "."
- NAME@3460..3473
- IDENT@3460..3473 "flattenArrays"
- ARGS_DESC@3473..3487
- L_PAREN@3473..3474 "("
- ARG@3474..3486
- EXPR_VAR@3474..3486
- NAME@3474..3486
- IDENT@3474..3486 "all_sections"
- R_PAREN@3486..3487 ")"
- WHITESPACE@3487..3488 " "
- PLUS@3488..3489 "+"
- WHITESPACE@3489..3490 " "
- EXPR_ARRAY@3490..3494
- L_BRACK@3490..3491 "["
- EXPR_STRING@3491..3493
- STRING_SINGLE@3491..3493 "''"
- R_BRACK@3493..3494 "]"
- R_PAREN@3494..3495 ")"
- COMMA@3495..3496 ","
- WHITESPACE@3496..3500 "\n\n "
- MEMBER_FIELD_METHOD@3500..3553
- FIELD_NAME_FIXED@3500..3512
- NAME@3500..3512
- IDENT@3500..3512 "manifestToml"
- PARAMS_DESC@3512..3519
- L_PAREN@3512..3513 "("
- PARAM@3513..3518
- DESTRUCT_FULL@3513..3518
- NAME@3513..3518
- IDENT@3513..3518 "value"
- R_PAREN@3518..3519 ")"
- COLONCOLON@3519..3521 "::"
- WHITESPACE@3521..3522 " "
- EXPR_APPLY@3522..3553
- EXPR_INDEX@3522..3540
- EXPR_VAR@3522..3525
- NAME@3522..3525
- IDENT@3522..3525 "std"
- DOT@3525..3526 "."
- NAME@3526..3540
- IDENT@3526..3540 "manifestTomlEx"
- ARGS_DESC@3540..3553
- L_PAREN@3540..3541 "("
- ARG@3541..3546
- EXPR_VAR@3541..3546
- NAME@3541..3546
- IDENT@3541..3546 "value"
- COMMA@3546..3547 ","
- WHITESPACE@3547..3548 " "
- ARG@3548..3552
- EXPR_STRING@3548..3552
- STRING_SINGLE@3548..3552 "' '"
- R_PAREN@3552..3553 ")"
- COMMA@3553..3554 ","
- WHITESPACE@3554..3558 "\n\n "
- MEMBER_FIELD_METHOD@3558..3613
- FIELD_NAME_FIXED@3558..3576
- NAME@3558..3576
- IDENT@3558..3576 "escapeStringPython"
- PARAMS_DESC@3576..3581
- L_PAREN@3576..3577 "("
- PARAM@3577..3580
- DESTRUCT_FULL@3577..3580
- NAME@3577..3580
- IDENT@3577..3580 "str"
- R_PAREN@3580..3581 ")"
- COLONCOLON@3581..3583 "::"
- WHITESPACE@3583..3588 "\n "
- EXPR_APPLY@3588..3613
- EXPR_INDEX@3588..3608
+ THEN_KW@2615..2619 "then"
+ WHITESPACE@2619..2620 " "
+ TRUE_EXPR@2620..2640
+ EXPR@2620..2640
+ EXPR_VAR@2620..2630
+ NAME@2620..2630
+ IDENT@2620..2630 "body_lines"
+ SUFFIX_APPLY@2630..2640
+ ARGS_DESC@2630..2640
+ L_PAREN@2630..2631 "("
+ ARG@2631..2639
+ EXPR@2631..2639
+ EXPR_VAR@2631..2634
+ NAME@2631..2634
+ IDENT@2631..2634 "ini"
+ SUFFIX_INDEX@2634..2639
+ DOT@2634..2635 "."
+ NAME@2635..2639
+ IDENT@2635..2639 "main"
+ R_PAREN@2639..2640 ")"
+ WHITESPACE@2640..2641 " "
+ ELSE_KW@2641..2645 "else"
+ WHITESPACE@2645..2646 " "
+ FALSE_EXPR@2646..2648
+ EXPR@2646..2648
+ EXPR_ARRAY@2646..2648
+ L_BRACK@2646..2647 "["
+ R_BRACK@2647..2648 "]"
+ COMMA@2648..2649 ","
+ WHITESPACE@2649..2660 "\n "
+ BIND_DESTRUCT@2660..2768
+ DESTRUCT_FULL@2660..2672
+ NAME@2660..2672
+ IDENT@2660..2672 "all_sections"
+ WHITESPACE@2672..2673 " "
+ ASSIGN@2673..2674 "="
+ WHITESPACE@2674..2675 " "
+ EXPR@2675..2768
+ EXPR_ARRAY_COMP@2675..2768
+ L_BRACK@2675..2676 "["
+ WHITESPACE@2676..2683 "\n "
+ EXPR@2683..2716
+ EXPR_VAR@2683..2696
+ NAME@2683..2696
+ IDENT@2683..2696 "section_lines"
+ SUFFIX_APPLY@2696..2716
+ ARGS_DESC@2696..2716
+ L_PAREN@2696..2697 "("
+ ARG@2697..2698
+ EXPR@2697..2698
+ EXPR_VAR@2697..2698
+ NAME@2697..2698
+ IDENT@2697..2698 "k"
+ COMMA@2698..2699 ","
+ WHITESPACE@2699..2700 " "
+ ARG@2700..2715
+ EXPR@2700..2715
+ EXPR_VAR@2700..2703
+ NAME@2700..2703
+ IDENT@2700..2703 "ini"
+ SUFFIX_INDEX@2703..2712
+ DOT@2703..2704 "."
+ NAME@2704..2712
+ IDENT@2704..2712 "sections"
+ SUFFIX_INDEX_EXPR@2712..2715
+ L_BRACK@2712..2713 "["
+ EXPR@2713..2714
+ EXPR_VAR@2713..2714
+ NAME@2713..2714
+ IDENT@2713..2714 "k"
+ R_BRACK@2714..2715 "]"
+ R_PAREN@2715..2716 ")"
+ WHITESPACE@2716..2723 "\n "
+ FOR_SPEC@2723..2762
+ FOR_KW@2723..2726 "for"
+ WHITESPACE@2726..2727 " "
+ DESTRUCT_FULL@2727..2728
+ NAME@2727..2728
+ IDENT@2727..2728 "k"
+ WHITESPACE@2728..2729 " "
+ IN_KW@2729..2731 "in"
+ WHITESPACE@2731..2732 " "
+ EXPR@2732..2762
+ EXPR_VAR@2732..2735
+ NAME@2732..2735
+ IDENT@2732..2735 "std"
+ SUFFIX_INDEX@2735..2748
+ DOT@2735..2736 "."
+ NAME@2736..2748
+ IDENT@2736..2748 "objectFields"
+ SUFFIX_APPLY@2748..2762
+ ARGS_DESC@2748..2762
+ L_PAREN@2748..2749 "("
+ ARG@2749..2761
+ EXPR@2749..2761
+ EXPR_VAR@2749..2752
+ NAME@2749..2752
+ IDENT@2749..2752 "ini"
+ SUFFIX_INDEX@2752..2761
+ DOT@2752..2753 "."
+ NAME@2753..2761
+ IDENT@2753..2761 "sections"
+ R_PAREN@2761..2762 ")"
+ WHITESPACE@2762..2767 "\n "
+ R_BRACK@2767..2768 "]"
+ SEMI@2768..2769 ";"
+ WHITESPACE@2769..2774 "\n "
+ EXPR_VAR@2774..2777
+ NAME@2774..2777
+ IDENT@2774..2777 "std"
+ SUFFIX_INDEX@2777..2782
+ DOT@2777..2778 "."
+ NAME@2778..2782
+ IDENT@2778..2782 "join"
+ SUFFIX_APPLY@2782..2840
+ ARGS_DESC@2782..2840
+ L_PAREN@2782..2783 "("
+ ARG@2783..2787
+ EXPR@2783..2787
+ EXPR_STRING@2783..2787
+ STRING_SINGLE@2783..2787 "'\\n'"
+ COMMA@2787..2788 ","
+ WHITESPACE@2788..2789 " "
+ ARG@2789..2839
+ EXPR@2789..2839
+ EXPR_BINARY@2789..2839
+ EXPR@2789..2832
+ EXPR_BINARY@2789..2832
+ EXPR@2789..2798
+ EXPR_VAR@2789..2798
+ NAME@2789..2798
+ IDENT@2789..2798 "main_body"
+ WHITESPACE@2798..2799 " "
+ PLUS@2799..2800 "+"
+ WHITESPACE@2800..2801 " "
+ EXPR@2801..2832
+ EXPR_VAR@2801..2804
+ NAME@2801..2804
+ IDENT@2801..2804 "std"
+ SUFFIX_INDEX@2804..2818
+ DOT@2804..2805 "."
+ NAME@2805..2818
+ IDENT@2805..2818 "flattenArrays"
+ SUFFIX_APPLY@2818..2832
+ ARGS_DESC@2818..2832
+ L_PAREN@2818..2819 "("
+ ARG@2819..2831
+ EXPR@2819..2831
+ EXPR_VAR@2819..2831
+ NAME@2819..2831
+ IDENT@2819..2831 "all_sections"
+ R_PAREN@2831..2832 ")"
+ WHITESPACE@2832..2833 " "
+ PLUS@2833..2834 "+"
+ WHITESPACE@2834..2835 " "
+ EXPR@2835..2839
+ EXPR_ARRAY@2835..2839
+ L_BRACK@2835..2836 "["
+ EXPR@2836..2838
+ EXPR_STRING@2836..2838
+ STRING_SINGLE@2836..2838 "''"
+ R_BRACK@2838..2839 "]"
+ R_PAREN@2839..2840 ")"
+ COMMA@2840..2841 ","
+ WHITESPACE@2841..2845 "\n\n "
+ MEMBER_FIELD_METHOD@2845..2898
+ FIELD_NAME_FIXED@2845..2857
+ NAME@2845..2857
+ IDENT@2845..2857 "manifestToml"
+ PARAMS_DESC@2857..2864
+ L_PAREN@2857..2858 "("
+ PARAM@2858..2863
+ DESTRUCT_FULL@2858..2863
+ NAME@2858..2863
+ IDENT@2858..2863 "value"
+ R_PAREN@2863..2864 ")"
+ COLONCOLON@2864..2866 "::"
+ WHITESPACE@2866..2867 " "
+ EXPR@2867..2898
+ EXPR_VAR@2867..2870
+ NAME@2867..2870
+ IDENT@2867..2870 "std"
+ SUFFIX_INDEX@2870..2885
+ DOT@2870..2871 "."
+ NAME@2871..2885
+ IDENT@2871..2885 "manifestTomlEx"
+ SUFFIX_APPLY@2885..2898
+ ARGS_DESC@2885..2898
+ L_PAREN@2885..2886 "("
+ ARG@2886..2891
+ EXPR@2886..2891
+ EXPR_VAR@2886..2891
+ NAME@2886..2891
+ IDENT@2886..2891 "value"
+ COMMA@2891..2892 ","
+ WHITESPACE@2892..2893 " "
+ ARG@2893..2897
+ EXPR@2893..2897
+ EXPR_STRING@2893..2897
+ STRING_SINGLE@2893..2897 "' '"
+ R_PAREN@2897..2898 ")"
+ COMMA@2898..2899 ","
+ WHITESPACE@2899..2903 "\n\n "
+ MEMBER_FIELD_METHOD@2903..2958
+ FIELD_NAME_FIXED@2903..2921
+ NAME@2903..2921
+ IDENT@2903..2921 "escapeStringPython"
+ PARAMS_DESC@2921..2926
+ L_PAREN@2921..2922 "("
+ PARAM@2922..2925
+ DESTRUCT_FULL@2922..2925
+ NAME@2922..2925
+ IDENT@2922..2925 "str"
+ R_PAREN@2925..2926 ")"
+ COLONCOLON@2926..2928 "::"
+ WHITESPACE@2928..2933 "\n "
+ EXPR@2933..2958
+ EXPR_VAR@2933..2936
+ NAME@2933..2936
+ IDENT@2933..2936 "std"
+ SUFFIX_INDEX@2936..2953
+ DOT@2936..2937 "."
+ NAME@2937..2953
+ IDENT@2937..2953 "escapeStringJson"
+ SUFFIX_APPLY@2953..2958
+ ARGS_DESC@2953..2958
+ L_PAREN@2953..2954 "("
+ ARG@2954..2957
+ EXPR@2954..2957
+ EXPR_VAR@2954..2957
+ NAME@2954..2957
+ IDENT@2954..2957 "str"
+ R_PAREN@2957..2958 ")"
+ COMMA@2958..2959 ","
+ WHITESPACE@2959..2963 "\n\n "
+ MEMBER_FIELD_METHOD@2963..3180
+ FIELD_NAME_FIXED@2963..2979
+ NAME@2963..2979
+ IDENT@2963..2979 "escapeStringBash"
+ PARAMS_DESC@2979..2985
+ L_PAREN@2979..2980 "("
+ PARAM@2980..2984
+ DESTRUCT_FULL@2980..2984
+ NAME@2980..2984
+ IDENT@2980..2984 "str_"
+ R_PAREN@2984..2985 ")"
+ COLONCOLON@2985..2987 "::"
+ WHITESPACE@2987..2992 "\n "
+ EXPR@2992..3180
+ STMT_LOCAL@2992..3023
+ LOCAL_KW@2992..2997 "local"
+ WHITESPACE@2997..2998 " "
+ BIND_DESTRUCT@2998..3022
+ DESTRUCT_FULL@2998..3001
+ NAME@2998..3001
+ IDENT@2998..3001 "str"
+ WHITESPACE@3001..3002 " "
+ ASSIGN@3002..3003 "="
+ WHITESPACE@3003..3004 " "
+ EXPR@3004..3022
+ EXPR_VAR@3004..3007
+ NAME@3004..3007
+ IDENT@3004..3007 "std"
+ SUFFIX_INDEX@3007..3016
+ DOT@3007..3008 "."
+ NAME@3008..3016
+ IDENT@3008..3016 "toString"
+ SUFFIX_APPLY@3016..3022
+ ARGS_DESC@3016..3022
+ L_PAREN@3016..3017 "("
+ ARG@3017..3021
+ EXPR@3017..3021
+ EXPR_VAR@3017..3021
+ NAME@3017..3021
+ IDENT@3017..3021 "str_"
+ R_PAREN@3021..3022 ")"
+ SEMI@3022..3023 ";"
+ WHITESPACE@3023..3028 "\n "
+ STMT_LOCAL@3028..3110
+ LOCAL_KW@3028..3033 "local"
+ WHITESPACE@3033..3034 " "
+ BIND_FUNCTION@3034..3109
+ NAME@3034..3039
+ IDENT@3034..3039 "trans"
+ PARAMS_DESC@3039..3043
+ L_PAREN@3039..3040 "("
+ PARAM@3040..3042
+ DESTRUCT_FULL@3040..3042
+ NAME@3040..3042
+ IDENT@3040..3042 "ch"
+ R_PAREN@3042..3043 ")"
+ WHITESPACE@3043..3044 " "
+ ASSIGN@3044..3045 "="
+ WHITESPACE@3045..3052 "\n "
+ EXPR@3052..3109
+ EXPR_IF_THEN_ELSE@3052..3109
+ IF_KW@3052..3054 "if"
+ WHITESPACE@3054..3055 " "
+ EXPR@3055..3064
+ EXPR_BINARY@3055..3064
+ EXPR@3055..3057
+ EXPR_VAR@3055..3057
+ NAME@3055..3057
+ IDENT@3055..3057 "ch"
+ WHITESPACE@3057..3058 " "
+ EQ@3058..3060 "=="
+ WHITESPACE@3060..3061 " "
+ EXPR@3061..3064
+ EXPR_STRING@3061..3064
+ STRING_DOUBLE@3061..3064 "\"'\""
+ WHITESPACE@3064..3065 " "
+ THEN_KW@3065..3069 "then"
+ WHITESPACE@3069..3078 "\n "
+ TRUE_EXPR@3078..3087
+ EXPR@3078..3087
+ EXPR_STRING@3078..3087
+ STRING_DOUBLE@3078..3087 "\"'\\\"'\\\"'\""
+ WHITESPACE@3087..3094 "\n "
+ ELSE_KW@3094..3098 "else"
+ WHITESPACE@3098..3107 "\n "
+ FALSE_EXPR@3107..3109
+ EXPR@3107..3109
+ EXPR_VAR@3107..3109
+ NAME@3107..3109
+ IDENT@3107..3109 "ch"
+ SEMI@3109..3110 ";"
+ WHITESPACE@3110..3115 "\n "
+ EXPR_BINARY@3115..3180
+ EXPR@3115..3121
+ EXPR_STRING@3115..3121
+ STRING_DOUBLE@3115..3121 "\"'%s'\""
+ WHITESPACE@3121..3122 " "
+ MODULO@3122..3123 "%"
+ WHITESPACE@3123..3124 " "
+ EXPR@3124..3180
+ EXPR_VAR@3124..3127
+ NAME@3124..3127
+ IDENT@3124..3127 "std"
+ SUFFIX_INDEX@3127..3132
+ DOT@3127..3128 "."
+ NAME@3128..3132
+ IDENT@3128..3132 "join"
+ SUFFIX_APPLY@3132..3180
+ ARGS_DESC@3132..3180
+ L_PAREN@3132..3133 "("
+ ARG@3133..3135
+ EXPR@3133..3135
+ EXPR_STRING@3133..3135
+ STRING_SINGLE@3133..3135 "''"
+ COMMA@3135..3136 ","
+ WHITESPACE@3136..3137 " "
+ ARG@3137..3179
+ EXPR@3137..3179
+ EXPR_ARRAY_COMP@3137..3179
+ L_BRACK@3137..3138 "["
+ EXPR@3138..3147
+ EXPR_VAR@3138..3143
+ NAME@3138..3143
+ IDENT@3138..3143 "trans"
+ SUFFIX_APPLY@3143..3147
+ ARGS_DESC@3143..3147
+ L_PAREN@3143..3144 "("
+ ARG@3144..3146
+ EXPR@3144..3146
+ EXPR_VAR@3144..3146
+ NAME@3144..3146
+ IDENT@3144..3146 "ch"
+ R_PAREN@3146..3147 ")"
+ WHITESPACE@3147..3148 " "
+ FOR_SPEC@3148..3178
+ FOR_KW@3148..3151 "for"
+ WHITESPACE@3151..3152 " "
+ DESTRUCT_FULL@3152..3154
+ NAME@3152..3154
+ IDENT@3152..3154 "ch"
+ WHITESPACE@3154..3155 " "
+ IN_KW@3155..3157 "in"
+ WHITESPACE@3157..3158 " "
+ EXPR@3158..3178
+ EXPR_VAR@3158..3161
+ NAME@3158..3161
+ IDENT@3158..3161 "std"
+ SUFFIX_INDEX@3161..3173
+ DOT@3161..3162 "."
+ NAME@3162..3173
+ IDENT@3162..3173 "stringChars"
+ SUFFIX_APPLY@3173..3178
+ ARGS_DESC@3173..3178
+ L_PAREN@3173..3174 "("
+ ARG@3174..3177
+ EXPR@3174..3177
+ EXPR_VAR@3174..3177
+ NAME@3174..3177
+ IDENT@3174..3177 "str"
+ R_PAREN@3177..3178 ")"
+ R_BRACK@3178..3179 "]"
+ R_PAREN@3179..3180 ")"
+ COMMA@3180..3181 ","
+ WHITESPACE@3181..3185 "\n\n "
+ MEMBER_FIELD_METHOD@3185..3399
+ FIELD_NAME_FIXED@3185..3204
+ NAME@3185..3204
+ IDENT@3185..3204 "escapeStringDollars"
+ PARAMS_DESC@3204..3210
+ L_PAREN@3204..3205 "("
+ PARAM@3205..3209
+ DESTRUCT_FULL@3205..3209
+ NAME@3205..3209
+ IDENT@3205..3209 "str_"
+ R_PAREN@3209..3210 ")"
+ COLONCOLON@3210..3212 "::"
+ WHITESPACE@3212..3217 "\n "
+ EXPR@3217..3399
+ STMT_LOCAL@3217..3248
+ LOCAL_KW@3217..3222 "local"
+ WHITESPACE@3222..3223 " "
+ BIND_DESTRUCT@3223..3247
+ DESTRUCT_FULL@3223..3226
+ NAME@3223..3226
+ IDENT@3223..3226 "str"
+ WHITESPACE@3226..3227 " "
+ ASSIGN@3227..3228 "="
+ WHITESPACE@3228..3229 " "
+ EXPR@3229..3247
+ EXPR_VAR@3229..3232
+ NAME@3229..3232
+ IDENT@3229..3232 "std"
+ SUFFIX_INDEX@3232..3241
+ DOT@3232..3233 "."
+ NAME@3233..3241
+ IDENT@3233..3241 "toString"
+ SUFFIX_APPLY@3241..3247
+ ARGS_DESC@3241..3247
+ L_PAREN@3241..3242 "("
+ ARG@3242..3246
+ EXPR@3242..3246
+ EXPR_VAR@3242..3246
+ NAME@3242..3246
+ IDENT@3242..3246 "str_"
+ R_PAREN@3246..3247 ")"
+ SEMI@3247..3248 ";"
+ WHITESPACE@3248..3253 "\n "
+ STMT_LOCAL@3253..3330
+ LOCAL_KW@3253..3258 "local"
+ WHITESPACE@3258..3259 " "
+ BIND_FUNCTION@3259..3329
+ NAME@3259..3264
+ IDENT@3259..3264 "trans"
+ PARAMS_DESC@3264..3268
+ L_PAREN@3264..3265 "("
+ PARAM@3265..3267
+ DESTRUCT_FULL@3265..3267
+ NAME@3265..3267
+ IDENT@3265..3267 "ch"
+ R_PAREN@3267..3268 ")"
+ WHITESPACE@3268..3269 " "
+ ASSIGN@3269..3270 "="
+ WHITESPACE@3270..3277 "\n "
+ EXPR@3277..3329
+ EXPR_IF_THEN_ELSE@3277..3329
+ IF_KW@3277..3279 "if"
+ WHITESPACE@3279..3280 " "
+ EXPR@3280..3289
+ EXPR_BINARY@3280..3289
+ EXPR@3280..3282
+ EXPR_VAR@3280..3282
+ NAME@3280..3282
+ IDENT@3280..3282 "ch"
+ WHITESPACE@3282..3283 " "
+ EQ@3283..3285 "=="
+ WHITESPACE@3285..3286 " "
+ EXPR@3286..3289
+ EXPR_STRING@3286..3289
+ STRING_SINGLE@3286..3289 "'$'"
+ WHITESPACE@3289..3290 " "
+ THEN_KW@3290..3294 "then"
+ WHITESPACE@3294..3303 "\n "
+ TRUE_EXPR@3303..3307
+ EXPR@3303..3307
+ EXPR_STRING@3303..3307
+ STRING_SINGLE@3303..3307 "'$$'"
+ WHITESPACE@3307..3314 "\n "
+ ELSE_KW@3314..3318 "else"
+ WHITESPACE@3318..3327 "\n "
+ FALSE_EXPR@3327..3329
+ EXPR@3327..3329
+ EXPR_VAR@3327..3329
+ NAME@3327..3329
+ IDENT@3327..3329 "ch"
+ SEMI@3329..3330 ";"
+ WHITESPACE@3330..3335 "\n "
+ EXPR_VAR@3335..3338
+ NAME@3335..3338
+ IDENT@3335..3338 "std"
+ SUFFIX_INDEX@3338..3344
+ DOT@3338..3339 "."
+ NAME@3339..3344
+ IDENT@3339..3344 "foldl"
+ SUFFIX_APPLY@3344..3399
+ ARGS_DESC@3344..3399
+ L_PAREN@3344..3345 "("
+ ARG@3345..3372
+ EXPR@3345..3372
+ EXPR_FUNCTION@3345..3372
+ FUNCTION_KW@3345..3353 "function"
+ PARAMS_DESC@3353..3359
+ L_PAREN@3353..3354 "("
+ PARAM@3354..3355
+ DESTRUCT_FULL@3354..3355
+ NAME@3354..3355
+ IDENT@3354..3355 "a"
+ COMMA@3355..3356 ","
+ WHITESPACE@3356..3357 " "
+ PARAM@3357..3358
+ DESTRUCT_FULL@3357..3358
+ NAME@3357..3358
+ IDENT@3357..3358 "b"
+ R_PAREN@3358..3359 ")"
+ WHITESPACE@3359..3360 " "
+ EXPR@3360..3372
+ EXPR_BINARY@3360..3372
+ EXPR@3360..3361
+ EXPR_VAR@3360..3361
+ NAME@3360..3361
+ IDENT@3360..3361 "a"
+ WHITESPACE@3361..3362 " "
+ PLUS@3362..3363 "+"
+ WHITESPACE@3363..3364 " "
+ EXPR@3364..3372
+ EXPR_VAR@3364..3369
+ NAME@3364..3369
+ IDENT@3364..3369 "trans"
+ SUFFIX_APPLY@3369..3372
+ ARGS_DESC@3369..3372
+ L_PAREN@3369..3370 "("
+ ARG@3370..3371
+ EXPR@3370..3371
+ EXPR_VAR@3370..3371
+ NAME@3370..3371
+ IDENT@3370..3371 "b"
+ R_PAREN@3371..3372 ")"
+ COMMA@3372..3373 ","
+ WHITESPACE@3373..3374 " "
+ ARG@3374..3394
+ EXPR@3374..3394
+ EXPR_VAR@3374..3377
+ NAME@3374..3377
+ IDENT@3374..3377 "std"
+ SUFFIX_INDEX@3377..3389
+ DOT@3377..3378 "."
+ NAME@3378..3389
+ IDENT@3378..3389 "stringChars"
+ SUFFIX_APPLY@3389..3394
+ ARGS_DESC@3389..3394
+ L_PAREN@3389..3390 "("
+ ARG@3390..3393
+ EXPR@3390..3393
+ EXPR_VAR@3390..3393
+ NAME@3390..3393
+ IDENT@3390..3393 "str"
+ R_PAREN@3393..3394 ")"
+ COMMA@3394..3395 ","
+ WHITESPACE@3395..3396 " "
+ ARG@3396..3398
+ EXPR@3396..3398
+ EXPR_STRING@3396..3398
+ STRING_SINGLE@3396..3398 "''"
+ R_PAREN@3398..3399 ")"
+ COMMA@3399..3400 ","
+ WHITESPACE@3400..3404 "\n\n "
+ MEMBER_BIND_STMT@3404..3519
+ OBJ_LOCAL@3404..3519
+ LOCAL_KW@3404..3409 "local"
+ WHITESPACE@3409..3410 " "
+ BIND_DESTRUCT@3410..3519
+ DESTRUCT_FULL@3410..3421
+ NAME@3410..3421
+ IDENT@3410..3421 "xml_escapes"
+ WHITESPACE@3421..3422 " "
+ ASSIGN@3422..3423 "="
+ WHITESPACE@3423..3424 " "
+ EXPR@3424..3519
+ EXPR_OBJECT@3424..3519
+ OBJ_BODY_MEMBER_LIST@3424..3519
+ L_BRACE@3424..3425 "{"
+ WHITESPACE@3425..3430 "\n "
+ MEMBER_FIELD_NORMAL@3430..3441
+ FIELD_NAME_FIXED@3430..3433
+ STRING_SINGLE@3430..3433 "'<'"
+ COLON@3433..3434 ":"
+ WHITESPACE@3434..3435 " "
+ EXPR@3435..3441
+ EXPR_STRING@3435..3441
+ STRING_SINGLE@3435..3441 "'<'"
+ COMMA@3441..3442 ","
+ WHITESPACE@3442..3447 "\n "
+ MEMBER_FIELD_NORMAL@3447..3458
+ FIELD_NAME_FIXED@3447..3450
+ STRING_SINGLE@3447..3450 "'>'"
+ COLON@3450..3451 ":"
+ WHITESPACE@3451..3452 " "
+ EXPR@3452..3458
+ EXPR_STRING@3452..3458
+ STRING_SINGLE@3452..3458 "'>'"
+ COMMA@3458..3459 ","
+ WHITESPACE@3459..3464 "\n "
+ MEMBER_FIELD_NORMAL@3464..3476
+ FIELD_NAME_FIXED@3464..3467
+ STRING_SINGLE@3464..3467 "'&'"
+ COLON@3467..3468 ":"
+ WHITESPACE@3468..3469 " "
+ EXPR@3469..3476
+ EXPR_STRING@3469..3476
+ STRING_SINGLE@3469..3476 "'&'"
+ COMMA@3476..3477 ","
+ WHITESPACE@3477..3482 "\n "
+ MEMBER_FIELD_NORMAL@3482..3495
+ FIELD_NAME_FIXED@3482..3485
+ STRING_SINGLE@3482..3485 "'\"'"
+ COLON@3485..3486 ":"
+ WHITESPACE@3486..3487 " "
+ EXPR@3487..3495
+ EXPR_STRING@3487..3495
+ STRING_SINGLE@3487..3495 "'"'"
+ COMMA@3495..3496 ","
+ WHITESPACE@3496..3501 "\n "
+ MEMBER_FIELD_NORMAL@3501..3514
+ FIELD_NAME_FIXED@3501..3504
+ STRING_DOUBLE@3501..3504 "\"'\""
+ COLON@3504..3505 ":"
+ WHITESPACE@3505..3506 " "
+ EXPR@3506..3514
+ EXPR_STRING@3506..3514
+ STRING_SINGLE@3506..3514 "'''"
+ COMMA@3514..3515 ","
+ WHITESPACE@3515..3518 "\n "
+ R_BRACE@3518..3519 "}"
+ COMMA@3519..3520 ","
+ WHITESPACE@3520..3524 "\n\n "
+ MEMBER_FIELD_METHOD@3524..3663
+ FIELD_NAME_FIXED@3524..3539
+ NAME@3524..3539
+ IDENT@3524..3539 "escapeStringXML"
+ PARAMS_DESC@3539..3545
+ L_PAREN@3539..3540 "("
+ PARAM@3540..3544
+ DESTRUCT_FULL@3540..3544
+ NAME@3540..3544
+ IDENT@3540..3544 "str_"
+ R_PAREN@3544..3545 ")"
+ COLONCOLON@3545..3547 "::"
+ WHITESPACE@3547..3552 "\n "
+ EXPR@3552..3663
+ STMT_LOCAL@3552..3583
+ LOCAL_KW@3552..3557 "local"
+ WHITESPACE@3557..3558 " "
+ BIND_DESTRUCT@3558..3582
+ DESTRUCT_FULL@3558..3561
+ NAME@3558..3561
+ IDENT@3558..3561 "str"
+ WHITESPACE@3561..3562 " "
+ ASSIGN@3562..3563 "="
+ WHITESPACE@3563..3564 " "
+ EXPR@3564..3582
+ EXPR_VAR@3564..3567
+ NAME@3564..3567
+ IDENT@3564..3567 "std"
+ SUFFIX_INDEX@3567..3576
+ DOT@3567..3568 "."
+ NAME@3568..3576
+ IDENT@3568..3576 "toString"
+ SUFFIX_APPLY@3576..3582
+ ARGS_DESC@3576..3582
+ L_PAREN@3576..3577 "("
+ ARG@3577..3581
+ EXPR@3577..3581
+ EXPR_VAR@3577..3581
+ NAME@3577..3581
+ IDENT@3577..3581 "str_"
+ R_PAREN@3581..3582 ")"
+ SEMI@3582..3583 ";"
+ WHITESPACE@3583..3588 "\n "
EXPR_VAR@3588..3591
NAME@3588..3591
IDENT@3588..3591 "std"
- DOT@3591..3592 "."
- NAME@3592..3608
- IDENT@3592..3608 "escapeStringJson"
- ARGS_DESC@3608..3613
- L_PAREN@3608..3609 "("
- ARG@3609..3612
- EXPR_VAR@3609..3612
- NAME@3609..3612
- IDENT@3609..3612 "str"
- R_PAREN@3612..3613 ")"
- COMMA@3613..3614 ","
- WHITESPACE@3614..3618 "\n\n "
- MEMBER_FIELD_METHOD@3618..3835
- FIELD_NAME_FIXED@3618..3634
- NAME@3618..3634
- IDENT@3618..3634 "escapeStringBash"
- PARAMS_DESC@3634..3640
- L_PAREN@3634..3635 "("
- PARAM@3635..3639
- DESTRUCT_FULL@3635..3639
- NAME@3635..3639
- IDENT@3635..3639 "str_"
- R_PAREN@3639..3640 ")"
- COLONCOLON@3640..3642 "::"
- WHITESPACE@3642..3647 "\n "
- STMT_LOCAL@3647..3678
- LOCAL_KW@3647..3652 "local"
- WHITESPACE@3652..3653 " "
- BIND_DESTRUCT@3653..3677
- DESTRUCT_FULL@3653..3656
- NAME@3653..3656
- IDENT@3653..3656 "str"
- WHITESPACE@3656..3657 " "
- ASSIGN@3657..3658 "="
- WHITESPACE@3658..3659 " "
- EXPR_APPLY@3659..3677
- EXPR_INDEX@3659..3671
- EXPR_VAR@3659..3662
- NAME@3659..3662
- IDENT@3659..3662 "std"
- DOT@3662..3663 "."
- NAME@3663..3671
- IDENT@3663..3671 "toString"
- ARGS_DESC@3671..3677
- L_PAREN@3671..3672 "("
- ARG@3672..3676
- EXPR_VAR@3672..3676
- NAME@3672..3676
- IDENT@3672..3676 "str_"
- R_PAREN@3676..3677 ")"
- SEMI@3677..3678 ";"
- WHITESPACE@3678..3683 "\n "
- STMT_LOCAL@3683..3765
- LOCAL_KW@3683..3688 "local"
- WHITESPACE@3688..3689 " "
- BIND_FUNCTION@3689..3764
- NAME@3689..3694
- IDENT@3689..3694 "trans"
- PARAMS_DESC@3694..3698
- L_PAREN@3694..3695 "("
- PARAM@3695..3697
- DESTRUCT_FULL@3695..3697
- NAME@3695..3697
- IDENT@3695..3697 "ch"
- R_PAREN@3697..3698 ")"
- WHITESPACE@3698..3699 " "
- ASSIGN@3699..3700 "="
- WHITESPACE@3700..3707 "\n "
- EXPR_IF_THEN_ELSE@3707..3764
- IF_KW@3707..3709 "if"
- WHITESPACE@3709..3710 " "
- EXPR_BINARY@3710..3719
- LHS_EXPR@3710..3712
- EXPR_VAR@3710..3712
- NAME@3710..3712
- IDENT@3710..3712 "ch"
- WHITESPACE@3712..3713 " "
- EQ@3713..3715 "=="
+ SUFFIX_INDEX@3591..3596
+ DOT@3591..3592 "."
+ NAME@3592..3596
+ IDENT@3592..3596 "join"
+ SUFFIX_APPLY@3596..3663
+ ARGS_DESC@3596..3663
+ L_PAREN@3596..3597 "("
+ ARG@3597..3599
+ EXPR@3597..3599
+ EXPR_STRING@3597..3599
+ STRING_SINGLE@3597..3599 "''"
+ COMMA@3599..3600 ","
+ WHITESPACE@3600..3601 " "
+ ARG@3601..3662
+ EXPR@3601..3662
+ EXPR_ARRAY_COMP@3601..3662
+ L_BRACK@3601..3602 "["
+ EXPR@3602..3630
+ EXPR_VAR@3602..3605
+ NAME@3602..3605
+ IDENT@3602..3605 "std"
+ SUFFIX_INDEX@3605..3609
+ DOT@3605..3606 "."
+ NAME@3606..3609
+ IDENT@3606..3609 "get"
+ SUFFIX_APPLY@3609..3630
+ ARGS_DESC@3609..3630
+ L_PAREN@3609..3610 "("
+ ARG@3610..3621
+ EXPR@3610..3621
+ EXPR_VAR@3610..3621
+ NAME@3610..3621
+ IDENT@3610..3621 "xml_escapes"
+ COMMA@3621..3622 ","
+ WHITESPACE@3622..3623 " "
+ ARG@3623..3625
+ EXPR@3623..3625
+ EXPR_VAR@3623..3625
+ NAME@3623..3625
+ IDENT@3623..3625 "ch"
+ COMMA@3625..3626 ","
+ WHITESPACE@3626..3627 " "
+ ARG@3627..3629
+ EXPR@3627..3629
+ EXPR_VAR@3627..3629
+ NAME@3627..3629
+ IDENT@3627..3629 "ch"
+ R_PAREN@3629..3630 ")"
+ WHITESPACE@3630..3631 " "
+ FOR_SPEC@3631..3661
+ FOR_KW@3631..3634 "for"
+ WHITESPACE@3634..3635 " "
+ DESTRUCT_FULL@3635..3637
+ NAME@3635..3637
+ IDENT@3635..3637 "ch"
+ WHITESPACE@3637..3638 " "
+ IN_KW@3638..3640 "in"
+ WHITESPACE@3640..3641 " "
+ EXPR@3641..3661
+ EXPR_VAR@3641..3644
+ NAME@3641..3644
+ IDENT@3641..3644 "std"
+ SUFFIX_INDEX@3644..3656
+ DOT@3644..3645 "."
+ NAME@3645..3656
+ IDENT@3645..3656 "stringChars"
+ SUFFIX_APPLY@3656..3661
+ ARGS_DESC@3656..3661
+ L_PAREN@3656..3657 "("
+ ARG@3657..3660
+ EXPR@3657..3660
+ EXPR_VAR@3657..3660
+ NAME@3657..3660
+ IDENT@3657..3660 "str"
+ R_PAREN@3660..3661 ")"
+ R_BRACK@3661..3662 "]"
+ R_PAREN@3662..3663 ")"
+ COMMA@3663..3664 ","
+ WHITESPACE@3664..3668 "\n\n "
+ MEMBER_FIELD_METHOD@3668..3734
+ FIELD_NAME_FIXED@3668..3680
+ NAME@3668..3680
+ IDENT@3668..3680 "manifestJson"
+ PARAMS_DESC@3680..3687
+ L_PAREN@3680..3681 "("
+ PARAM@3681..3686
+ DESTRUCT_FULL@3681..3686
+ NAME@3681..3686
+ IDENT@3681..3686 "value"
+ R_PAREN@3686..3687 ")"
+ COLONCOLON@3687..3689 "::"
+ WHITESPACE@3689..3690 " "
+ EXPR@3690..3734
+ EXPR_VAR@3690..3693
+ NAME@3690..3693
+ IDENT@3690..3693 "std"
+ SUFFIX_INDEX@3693..3708
+ DOT@3693..3694 "."
+ NAME@3694..3708
+ IDENT@3694..3708 "manifestJsonEx"
+ SUFFIX_APPLY@3708..3734
+ ARGS_DESC@3708..3734
+ L_PAREN@3708..3709 "("
+ ARG@3709..3714
+ EXPR@3709..3714
+ EXPR_VAR@3709..3714
+ NAME@3709..3714
+ IDENT@3709..3714 "value"
+ COMMA@3714..3715 ","
WHITESPACE@3715..3716 " "
- EXPR_STRING@3716..3719
- STRING_DOUBLE@3716..3719 "\"'\""
- WHITESPACE@3719..3720 " "
- THEN_KW@3720..3724 "then"
- WHITESPACE@3724..3733 "\n "
- TRUE_EXPR@3733..3742
- EXPR_STRING@3733..3742
- STRING_DOUBLE@3733..3742 "\"'\\\"'\\\"'\""
- WHITESPACE@3742..3749 "\n "
- ELSE_KW@3749..3753 "else"
- WHITESPACE@3753..3762 "\n "
- FALSE_EXPR@3762..3764
- EXPR_VAR@3762..3764
- NAME@3762..3764
- IDENT@3762..3764 "ch"
- SEMI@3764..3765 ";"
- WHITESPACE@3765..3770 "\n "
- EXPR_BINARY@3770..3835
- LHS_EXPR@3770..3776
- EXPR_STRING@3770..3776
- STRING_DOUBLE@3770..3776 "\"'%s'\""
- WHITESPACE@3776..3777 " "
- MODULO@3777..3778 "%"
- WHITESPACE@3778..3779 " "
- EXPR_APPLY@3779..3835
- EXPR_INDEX@3779..3787
- EXPR_VAR@3779..3782
- NAME@3779..3782
- IDENT@3779..3782 "std"
- DOT@3782..3783 "."
- NAME@3783..3787
- IDENT@3783..3787 "join"
- ARGS_DESC@3787..3835
- L_PAREN@3787..3788 "("
- ARG@3788..3790
- EXPR_STRING@3788..3790
- STRING_SINGLE@3788..3790 "''"
- COMMA@3790..3791 ","
- WHITESPACE@3791..3792 " "
- ARG@3792..3834
- EXPR_ARRAY_COMP@3792..3834
- L_BRACK@3792..3793 "["
- EXPR_APPLY@3793..3802
- EXPR_VAR@3793..3798
- NAME@3793..3798
- IDENT@3793..3798 "trans"
- ARGS_DESC@3798..3802
- L_PAREN@3798..3799 "("
- ARG@3799..3801
- EXPR_VAR@3799..3801
- NAME@3799..3801
- IDENT@3799..3801 "ch"
- R_PAREN@3801..3802 ")"
- WHITESPACE@3802..3803 " "
- FOR_SPEC@3803..3833
- FOR_KW@3803..3806 "for"
- WHITESPACE@3806..3807 " "
- NAME@3807..3809
- IDENT@3807..3809 "ch"
- WHITESPACE@3809..3810 " "
- IN_KW@3810..3812 "in"
- WHITESPACE@3812..3813 " "
- EXPR_APPLY@3813..3833
- EXPR_INDEX@3813..3828
- EXPR_VAR@3813..3816
- NAME@3813..3816
- IDENT@3813..3816 "std"
- DOT@3816..3817 "."
- NAME@3817..3828
- IDENT@3817..3828 "stringChars"
- ARGS_DESC@3828..3833
- L_PAREN@3828..3829 "("
- ARG@3829..3832
- EXPR_VAR@3829..3832
- NAME@3829..3832
- IDENT@3829..3832 "str"
- R_PAREN@3832..3833 ")"
- R_BRACK@3833..3834 "]"
- R_PAREN@3834..3835 ")"
- COMMA@3835..3836 ","
- WHITESPACE@3836..3840 "\n\n "
- MEMBER_FIELD_METHOD@3840..4054
- FIELD_NAME_FIXED@3840..3859
- NAME@3840..3859
- IDENT@3840..3859 "escapeStringDollars"
- PARAMS_DESC@3859..3865
- L_PAREN@3859..3860 "("
- PARAM@3860..3864
- DESTRUCT_FULL@3860..3864
- NAME@3860..3864
- IDENT@3860..3864 "str_"
- R_PAREN@3864..3865 ")"
- COLONCOLON@3865..3867 "::"
- WHITESPACE@3867..3872 "\n "
- STMT_LOCAL@3872..3903
- LOCAL_KW@3872..3877 "local"
- WHITESPACE@3877..3878 " "
- BIND_DESTRUCT@3878..3902
- DESTRUCT_FULL@3878..3881
- NAME@3878..3881
- IDENT@3878..3881 "str"
- WHITESPACE@3881..3882 " "
- ASSIGN@3882..3883 "="
- WHITESPACE@3883..3884 " "
- EXPR_APPLY@3884..3902
- EXPR_INDEX@3884..3896
- EXPR_VAR@3884..3887
- NAME@3884..3887
- IDENT@3884..3887 "std"
- DOT@3887..3888 "."
- NAME@3888..3896
- IDENT@3888..3896 "toString"
- ARGS_DESC@3896..3902
- L_PAREN@3896..3897 "("
- ARG@3897..3901
- EXPR_VAR@3897..3901
- NAME@3897..3901
- IDENT@3897..3901 "str_"
- R_PAREN@3901..3902 ")"
- SEMI@3902..3903 ";"
- WHITESPACE@3903..3908 "\n "
- STMT_LOCAL@3908..3985
- LOCAL_KW@3908..3913 "local"
- WHITESPACE@3913..3914 " "
- BIND_FUNCTION@3914..3984
- NAME@3914..3919
- IDENT@3914..3919 "trans"
- PARAMS_DESC@3919..3923
- L_PAREN@3919..3920 "("
- PARAM@3920..3922
- DESTRUCT_FULL@3920..3922
- NAME@3920..3922
- IDENT@3920..3922 "ch"
- R_PAREN@3922..3923 ")"
- WHITESPACE@3923..3924 " "
- ASSIGN@3924..3925 "="
- WHITESPACE@3925..3932 "\n "
- EXPR_IF_THEN_ELSE@3932..3984
- IF_KW@3932..3934 "if"
+ ARG@3716..3722
+ EXPR@3716..3722
+ EXPR_STRING@3716..3722
+ STRING_SINGLE@3716..3722 "' '"
+ R_PAREN@3722..3723 ")"
+ WHITESPACE@3723..3724 " "
+ TAILSTRICT_KW@3724..3734 "tailstrict"
+ COMMA@3734..3735 ","
+ WHITESPACE@3735..3739 "\n\n "
+ MEMBER_FIELD_METHOD@3739..3807
+ FIELD_NAME_FIXED@3739..3759
+ NAME@3739..3759
+ IDENT@3739..3759 "manifestJsonMinified"
+ PARAMS_DESC@3759..3766
+ L_PAREN@3759..3760 "("
+ PARAM@3760..3765
+ DESTRUCT_FULL@3760..3765
+ NAME@3760..3765
+ IDENT@3760..3765 "value"
+ R_PAREN@3765..3766 ")"
+ COLONCOLON@3766..3768 "::"
+ WHITESPACE@3768..3769 " "
+ EXPR@3769..3807
+ EXPR_VAR@3769..3772
+ NAME@3769..3772
+ IDENT@3769..3772 "std"
+ SUFFIX_INDEX@3772..3787
+ DOT@3772..3773 "."
+ NAME@3773..3787
+ IDENT@3773..3787 "manifestJsonEx"
+ SUFFIX_APPLY@3787..3807
+ ARGS_DESC@3787..3807
+ L_PAREN@3787..3788 "("
+ ARG@3788..3793
+ EXPR@3788..3793
+ EXPR_VAR@3788..3793
+ NAME@3788..3793
+ IDENT@3788..3793 "value"
+ COMMA@3793..3794 ","
+ WHITESPACE@3794..3795 " "
+ ARG@3795..3797
+ EXPR@3795..3797
+ EXPR_STRING@3795..3797
+ STRING_SINGLE@3795..3797 "''"
+ COMMA@3797..3798 ","
+ WHITESPACE@3798..3799 " "
+ ARG@3799..3801
+ EXPR@3799..3801
+ EXPR_STRING@3799..3801
+ STRING_SINGLE@3799..3801 "''"
+ COMMA@3801..3802 ","
+ WHITESPACE@3802..3803 " "
+ ARG@3803..3806
+ EXPR@3803..3806
+ EXPR_STRING@3803..3806
+ STRING_SINGLE@3803..3806 "':'"
+ R_PAREN@3806..3807 ")"
+ COMMA@3807..3808 ","
+ WHITESPACE@3808..3812 "\n\n "
+ MEMBER_FIELD_METHOD@3812..4197
+ FIELD_NAME_FIXED@3812..3830
+ NAME@3812..3830
+ IDENT@3812..3830 "manifestYamlStream"
+ PARAMS_DESC@3830..3905
+ L_PAREN@3830..3831 "("
+ PARAM@3831..3836
+ DESTRUCT_FULL@3831..3836
+ NAME@3831..3836
+ IDENT@3831..3836 "value"
+ COMMA@3836..3837 ","
+ WHITESPACE@3837..3838 " "
+ PARAM@3838..3866
+ DESTRUCT_FULL@3838..3860
+ NAME@3838..3860
+ IDENT@3838..3860 "indent_array_in_object"
+ ASSIGN@3860..3861 "="
+ EXPR@3861..3866
+ EXPR_LITERAL@3861..3866
+ FALSE_KW@3861..3866 "false"
+ COMMA@3866..3867 ","
+ WHITESPACE@3867..3868 " "
+ PARAM@3868..3887
+ DESTRUCT_FULL@3868..3882
+ NAME@3868..3882
+ IDENT@3868..3882 "c_document_end"
+ ASSIGN@3882..3883 "="
+ EXPR@3883..3887
+ EXPR_LITERAL@3883..3887
+ TRUE_KW@3883..3887 "true"
+ COMMA@3887..3888 ","
+ WHITESPACE@3888..3889 " "
+ PARAM@3889..3904
+ DESTRUCT_FULL@3889..3899
+ NAME@3889..3899
+ IDENT@3889..3899 "quote_keys"
+ ASSIGN@3899..3900 "="
+ EXPR@3900..3904
+ EXPR_LITERAL@3900..3904
+ TRUE_KW@3900..3904 "true"
+ R_PAREN@3904..3905 ")"
+ COLONCOLON@3905..3907 "::"
+ WHITESPACE@3907..3912 "\n "
+ EXPR@3912..4197
+ EXPR_IF_THEN_ELSE@3912..4197
+ IF_KW@3912..3914 "if"
+ WHITESPACE@3914..3915 " "
+ EXPR@3915..3934
+ EXPR_UNARY@3915..3934
+ NOT@3915..3916 "!"
+ EXPR_VAR@3916..3919
+ NAME@3916..3919
+ IDENT@3916..3919 "std"
+ SUFFIX_INDEX@3919..3927
+ DOT@3919..3920 "."
+ NAME@3920..3927
+ IDENT@3920..3927 "isArray"
+ SUFFIX_APPLY@3927..3934
+ ARGS_DESC@3927..3934
+ L_PAREN@3927..3928 "("
+ ARG@3928..3933
+ EXPR@3928..3933
+ EXPR_VAR@3928..3933
+ NAME@3928..3933
+ IDENT@3928..3933 "value"
+ R_PAREN@3933..3934 ")"
WHITESPACE@3934..3935 " "
- EXPR_BINARY@3935..3944
- LHS_EXPR@3935..3937
- EXPR_VAR@3935..3937
- NAME@3935..3937
- IDENT@3935..3937 "ch"
- WHITESPACE@3937..3938 " "
- EQ@3938..3940 "=="
- WHITESPACE@3940..3941 " "
- EXPR_STRING@3941..3944
- STRING_SINGLE@3941..3944 "'$'"
- WHITESPACE@3944..3945 " "
- THEN_KW@3945..3949 "then"
- WHITESPACE@3949..3958 "\n "
- TRUE_EXPR@3958..3962
- EXPR_STRING@3958..3962
- STRING_SINGLE@3958..3962 "'$$'"
- WHITESPACE@3962..3969 "\n "
- ELSE_KW@3969..3973 "else"
- WHITESPACE@3973..3982 "\n "
- FALSE_EXPR@3982..3984
- EXPR_VAR@3982..3984
- NAME@3982..3984
- IDENT@3982..3984 "ch"
- SEMI@3984..3985 ";"
- WHITESPACE@3985..3990 "\n "
- EXPR_APPLY@3990..4054
- EXPR_INDEX@3990..3999
- EXPR_VAR@3990..3993
- NAME@3990..3993
- IDENT@3990..3993 "std"
- DOT@3993..3994 "."
- NAME@3994..3999
- IDENT@3994..3999 "foldl"
- ARGS_DESC@3999..4054
- L_PAREN@3999..4000 "("
- ARG@4000..4027
- EXPR_FUNCTION@4000..4027
- FUNCTION_KW@4000..4008 "function"
- PARAMS_DESC@4008..4014
- L_PAREN@4008..4009 "("
- PARAM@4009..4010
- DESTRUCT_FULL@4009..4010
- NAME@4009..4010
- IDENT@4009..4010 "a"
- COMMA@4010..4011 ","
- WHITESPACE@4011..4012 " "
- PARAM@4012..4013
- DESTRUCT_FULL@4012..4013
- NAME@4012..4013
- IDENT@4012..4013 "b"
- R_PAREN@4013..4014 ")"
- WHITESPACE@4014..4015 " "
- EXPR_BINARY@4015..4027
- LHS_EXPR@4015..4016
- EXPR_VAR@4015..4016
- NAME@4015..4016
- IDENT@4015..4016 "a"
- WHITESPACE@4016..4017 " "
- PLUS@4017..4018 "+"
- WHITESPACE@4018..4019 " "
- EXPR_APPLY@4019..4027
- EXPR_VAR@4019..4024
- NAME@4019..4024
- IDENT@4019..4024 "trans"
- ARGS_DESC@4024..4027
- L_PAREN@4024..4025 "("
- ARG@4025..4026
- EXPR_VAR@4025..4026
- NAME@4025..4026
- IDENT@4025..4026 "b"
- R_PAREN@4026..4027 ")"
- COMMA@4027..4028 ","
- WHITESPACE@4028..4029 " "
- ARG@4029..4049
- EXPR_APPLY@4029..4049
- EXPR_INDEX@4029..4044
- EXPR_VAR@4029..4032
- NAME@4029..4032
- IDENT@4029..4032 "std"
- DOT@4032..4033 "."
- NAME@4033..4044
- IDENT@4033..4044 "stringChars"
- ARGS_DESC@4044..4049
- L_PAREN@4044..4045 "("
- ARG@4045..4048
- EXPR_VAR@4045..4048
- NAME@4045..4048
- IDENT@4045..4048 "str"
- R_PAREN@4048..4049 ")"
- COMMA@4049..4050 ","
- WHITESPACE@4050..4051 " "
- ARG@4051..4053
- EXPR_STRING@4051..4053
- STRING_SINGLE@4051..4053 "''"
- R_PAREN@4053..4054 ")"
- COMMA@4054..4055 ","
- WHITESPACE@4055..4059 "\n\n "
- MEMBER_BIND_STMT@4059..4174
- OBJ_LOCAL@4059..4174
- LOCAL_KW@4059..4064 "local"
- WHITESPACE@4064..4065 " "
- BIND_DESTRUCT@4065..4174
- DESTRUCT_FULL@4065..4076
- NAME@4065..4076
- IDENT@4065..4076 "xml_escapes"
- WHITESPACE@4076..4077 " "
- ASSIGN@4077..4078 "="
- WHITESPACE@4078..4079 " "
- EXPR_OBJECT@4079..4174
- OBJ_BODY_MEMBER_LIST@4079..4174
- L_BRACE@4079..4080 "{"
- WHITESPACE@4080..4085 "\n "
- MEMBER_FIELD_NORMAL@4085..4096
- FIELD_NAME_FIXED@4085..4088
- STRING_SINGLE@4085..4088 "'<'"
- COLON@4088..4089 ":"
- WHITESPACE@4089..4090 " "
- EXPR_STRING@4090..4096
- STRING_SINGLE@4090..4096 "'<'"
- COMMA@4096..4097 ","
- WHITESPACE@4097..4102 "\n "
- MEMBER_FIELD_NORMAL@4102..4113
- FIELD_NAME_FIXED@4102..4105
- STRING_SINGLE@4102..4105 "'>'"
- COLON@4105..4106 ":"
- WHITESPACE@4106..4107 " "
- EXPR_STRING@4107..4113
- STRING_SINGLE@4107..4113 "'>'"
- COMMA@4113..4114 ","
- WHITESPACE@4114..4119 "\n "
- MEMBER_FIELD_NORMAL@4119..4131
- FIELD_NAME_FIXED@4119..4122
- STRING_SINGLE@4119..4122 "'&'"
- COLON@4122..4123 ":"
- WHITESPACE@4123..4124 " "
- EXPR_STRING@4124..4131
- STRING_SINGLE@4124..4131 "'&'"
- COMMA@4131..4132 ","
- WHITESPACE@4132..4137 "\n "
- MEMBER_FIELD_NORMAL@4137..4150
- FIELD_NAME_FIXED@4137..4140
- STRING_SINGLE@4137..4140 "'\"'"
- COLON@4140..4141 ":"
- WHITESPACE@4141..4142 " "
- EXPR_STRING@4142..4150
- STRING_SINGLE@4142..4150 "'"'"
- COMMA@4150..4151 ","
- WHITESPACE@4151..4156 "\n "
- MEMBER_FIELD_NORMAL@4156..4169
- FIELD_NAME_FIXED@4156..4159
- STRING_DOUBLE@4156..4159 "\"'\""
- COLON@4159..4160 ":"
- WHITESPACE@4160..4161 " "
- EXPR_STRING@4161..4169
- STRING_SINGLE@4161..4169 "'''"
- COMMA@4169..4170 ","
- WHITESPACE@4170..4173 "\n "
- R_BRACE@4173..4174 "}"
- COMMA@4174..4175 ","
- WHITESPACE@4175..4179 "\n\n "
- MEMBER_FIELD_METHOD@4179..4318
- FIELD_NAME_FIXED@4179..4194
- NAME@4179..4194
- IDENT@4179..4194 "escapeStringXML"
- PARAMS_DESC@4194..4200
- L_PAREN@4194..4195 "("
- PARAM@4195..4199
- DESTRUCT_FULL@4195..4199
- NAME@4195..4199
- IDENT@4195..4199 "str_"
- R_PAREN@4199..4200 ")"
- COLONCOLON@4200..4202 "::"
- WHITESPACE@4202..4207 "\n "
- STMT_LOCAL@4207..4238
- LOCAL_KW@4207..4212 "local"
- WHITESPACE@4212..4213 " "
- BIND_DESTRUCT@4213..4237
- DESTRUCT_FULL@4213..4216
- NAME@4213..4216
- IDENT@4213..4216 "str"
- WHITESPACE@4216..4217 " "
- ASSIGN@4217..4218 "="
- WHITESPACE@4218..4219 " "
- EXPR_APPLY@4219..4237
- EXPR_INDEX@4219..4231
- EXPR_VAR@4219..4222
- NAME@4219..4222
- IDENT@4219..4222 "std"
- DOT@4222..4223 "."
- NAME@4223..4231
- IDENT@4223..4231 "toString"
- ARGS_DESC@4231..4237
- L_PAREN@4231..4232 "("
- ARG@4232..4236
- EXPR_VAR@4232..4236
- NAME@4232..4236
- IDENT@4232..4236 "str_"
- R_PAREN@4236..4237 ")"
- SEMI@4237..4238 ";"
- WHITESPACE@4238..4243 "\n "
- EXPR_APPLY@4243..4318
- EXPR_INDEX@4243..4251
- EXPR_VAR@4243..4246
- NAME@4243..4246
- IDENT@4243..4246 "std"
- DOT@4246..4247 "."
- NAME@4247..4251
- IDENT@4247..4251 "join"
- ARGS_DESC@4251..4318
- L_PAREN@4251..4252 "("
- ARG@4252..4254
- EXPR_STRING@4252..4254
- STRING_SINGLE@4252..4254 "''"
- COMMA@4254..4255 ","
- WHITESPACE@4255..4256 " "
- ARG@4256..4317
- EXPR_ARRAY_COMP@4256..4317
- L_BRACK@4256..4257 "["
- EXPR_APPLY@4257..4285
- EXPR_INDEX@4257..4264
- EXPR_VAR@4257..4260
- NAME@4257..4260
- IDENT@4257..4260 "std"
- DOT@4260..4261 "."
- NAME@4261..4264
- IDENT@4261..4264 "get"
- ARGS_DESC@4264..4285
- L_PAREN@4264..4265 "("
- ARG@4265..4276
- EXPR_VAR@4265..4276
- NAME@4265..4276
- IDENT@4265..4276 "xml_escapes"
- COMMA@4276..4277 ","
- WHITESPACE@4277..4278 " "
- ARG@4278..4280
- EXPR_VAR@4278..4280
- NAME@4278..4280
- IDENT@4278..4280 "ch"
- COMMA@4280..4281 ","
- WHITESPACE@4281..4282 " "
- ARG@4282..4284
- EXPR_VAR@4282..4284
- NAME@4282..4284
- IDENT@4282..4284 "ch"
- R_PAREN@4284..4285 ")"
- WHITESPACE@4285..4286 " "
- FOR_SPEC@4286..4316
- FOR_KW@4286..4289 "for"
- WHITESPACE@4289..4290 " "
- NAME@4290..4292
- IDENT@4290..4292 "ch"
- WHITESPACE@4292..4293 " "
- IN_KW@4293..4295 "in"
- WHITESPACE@4295..4296 " "
- EXPR_APPLY@4296..4316
- EXPR_INDEX@4296..4311
- EXPR_VAR@4296..4299
- NAME@4296..4299
- IDENT@4296..4299 "std"
- DOT@4299..4300 "."
- NAME@4300..4311
- IDENT@4300..4311 "stringChars"
- ARGS_DESC@4311..4316
- L_PAREN@4311..4312 "("
- ARG@4312..4315
- EXPR_VAR@4312..4315
- NAME@4312..4315
- IDENT@4312..4315 "str"
- R_PAREN@4315..4316 ")"
- R_BRACK@4316..4317 "]"
- R_PAREN@4317..4318 ")"
- COMMA@4318..4319 ","
- WHITESPACE@4319..4323 "\n\n "
- MEMBER_FIELD_METHOD@4323..4389
- FIELD_NAME_FIXED@4323..4335
- NAME@4323..4335
- IDENT@4323..4335 "manifestJson"
- PARAMS_DESC@4335..4342
- L_PAREN@4335..4336 "("
- PARAM@4336..4341
- DESTRUCT_FULL@4336..4341
- NAME@4336..4341
- IDENT@4336..4341 "value"
- R_PAREN@4341..4342 ")"
- COLONCOLON@4342..4344 "::"
- WHITESPACE@4344..4345 " "
- EXPR_APPLY@4345..4389
- EXPR_INDEX@4345..4363
- EXPR_VAR@4345..4348
- NAME@4345..4348
- IDENT@4345..4348 "std"
- DOT@4348..4349 "."
- NAME@4349..4363
- IDENT@4349..4363 "manifestJsonEx"
- ARGS_DESC@4363..4389
- L_PAREN@4363..4364 "("
- ARG@4364..4369
- EXPR_VAR@4364..4369
- NAME@4364..4369
- IDENT@4364..4369 "value"
- COMMA@4369..4370 ","
- WHITESPACE@4370..4371 " "
- ARG@4371..4377
- EXPR_STRING@4371..4377
- STRING_SINGLE@4371..4377 "' '"
- R_PAREN@4377..4378 ")"
- WHITESPACE@4378..4379 " "
- TAILSTRICT_KW@4379..4389 "tailstrict"
- COMMA@4389..4390 ","
- WHITESPACE@4390..4394 "\n\n "
- MEMBER_FIELD_METHOD@4394..4462
- FIELD_NAME_FIXED@4394..4414
- NAME@4394..4414
- IDENT@4394..4414 "manifestJsonMinified"
- PARAMS_DESC@4414..4421
- L_PAREN@4414..4415 "("
- PARAM@4415..4420
- DESTRUCT_FULL@4415..4420
- NAME@4415..4420
- IDENT@4415..4420 "value"
- R_PAREN@4420..4421 ")"
- COLONCOLON@4421..4423 "::"
- WHITESPACE@4423..4424 " "
- EXPR_APPLY@4424..4462
- EXPR_INDEX@4424..4442
- EXPR_VAR@4424..4427
- NAME@4424..4427
- IDENT@4424..4427 "std"
- DOT@4427..4428 "."
- NAME@4428..4442
- IDENT@4428..4442 "manifestJsonEx"
- ARGS_DESC@4442..4462
- L_PAREN@4442..4443 "("
- ARG@4443..4448
- EXPR_VAR@4443..4448
- NAME@4443..4448
- IDENT@4443..4448 "value"
- COMMA@4448..4449 ","
- WHITESPACE@4449..4450 " "
- ARG@4450..4452
- EXPR_STRING@4450..4452
- STRING_SINGLE@4450..4452 "''"
- COMMA@4452..4453 ","
- WHITESPACE@4453..4454 " "
- ARG@4454..4456
- EXPR_STRING@4454..4456
- STRING_SINGLE@4454..4456 "''"
- COMMA@4456..4457 ","
- WHITESPACE@4457..4458 " "
- ARG@4458..4461
- EXPR_STRING@4458..4461
- STRING_SINGLE@4458..4461 "':'"
- R_PAREN@4461..4462 ")"
- COMMA@4462..4463 ","
- WHITESPACE@4463..4467 "\n\n "
- MEMBER_FIELD_METHOD@4467..4852
- FIELD_NAME_FIXED@4467..4485
- NAME@4467..4485
- IDENT@4467..4485 "manifestYamlStream"
- PARAMS_DESC@4485..4560
- L_PAREN@4485..4486 "("
- PARAM@4486..4491
- DESTRUCT_FULL@4486..4491
- NAME@4486..4491
- IDENT@4486..4491 "value"
- COMMA@4491..4492 ","
- WHITESPACE@4492..4493 " "
- PARAM@4493..4521
- DESTRUCT_FULL@4493..4515
- NAME@4493..4515
- IDENT@4493..4515 "indent_array_in_object"
- ASSIGN@4515..4516 "="
- EXPR_LITERAL@4516..4521
- FALSE_KW@4516..4521 "false"
- COMMA@4521..4522 ","
- WHITESPACE@4522..4523 " "
- PARAM@4523..4542
- DESTRUCT_FULL@4523..4537
- NAME@4523..4537
- IDENT@4523..4537 "c_document_end"
- ASSIGN@4537..4538 "="
- EXPR_LITERAL@4538..4542
- TRUE_KW@4538..4542 "true"
- COMMA@4542..4543 ","
- WHITESPACE@4543..4544 " "
- PARAM@4544..4559
- DESTRUCT_FULL@4544..4554
- NAME@4544..4554
- IDENT@4544..4554 "quote_keys"
- ASSIGN@4554..4555 "="
- EXPR_LITERAL@4555..4559
- TRUE_KW@4555..4559 "true"
- R_PAREN@4559..4560 ")"
- COLONCOLON@4560..4562 "::"
- WHITESPACE@4562..4567 "\n "
- EXPR_IF_THEN_ELSE@4567..4852
- IF_KW@4567..4569 "if"
- WHITESPACE@4569..4570 " "
- EXPR_UNARY@4570..4589
- NOT@4570..4571 "!"
- EXPR_APPLY@4571..4589
- EXPR_INDEX@4571..4582
- EXPR_VAR@4571..4574
- NAME@4571..4574
- IDENT@4571..4574 "std"
- DOT@4574..4575 "."
- NAME@4575..4582
- IDENT@4575..4582 "isArray"
- ARGS_DESC@4582..4589
- L_PAREN@4582..4583 "("
- ARG@4583..4588
- EXPR_VAR@4583..4588
- NAME@4583..4588
- IDENT@4583..4588 "value"
- R_PAREN@4588..4589 ")"
- WHITESPACE@4589..4590 " "
- THEN_KW@4590..4594 "then"
- WHITESPACE@4594..4601 "\n "
- TRUE_EXPR@4601..4669
- EXPR_ERROR@4601..4669
- ERROR_KW@4601..4606 "error"
- WHITESPACE@4606..4607 " "
- EXPR_BINARY@4607..4669
- LHS_EXPR@4607..4651
- EXPR_STRING@4607..4651
- STRING_SINGLE@4607..4651 "'manifestYamlStream o ..."
- WHITESPACE@4651..4652 " "
- PLUS@4652..4653 "+"
- WHITESPACE@4653..4654 " "
- EXPR_APPLY@4654..4669
- EXPR_INDEX@4654..4662
- EXPR_VAR@4654..4657
- NAME@4654..4657
- IDENT@4654..4657 "std"
- DOT@4657..4658 "."
- NAME@4658..4662
- IDENT@4658..4662 "type"
- ARGS_DESC@4662..4669
- L_PAREN@4662..4663 "("
- ARG@4663..4668
- EXPR_VAR@4663..4668
- NAME@4663..4668
- IDENT@4663..4668 "value"
- R_PAREN@4668..4669 ")"
- WHITESPACE@4669..4674 "\n "
- ELSE_KW@4674..4678 "else"
- WHITESPACE@4678..4685 "\n "
- FALSE_EXPR@4685..4852
- EXPR_BINARY@4685..4852
- LHS_EXPR@4685..4807
- EXPR_BINARY@4685..4807
- LHS_EXPR@4685..4692
- EXPR_STRING@4685..4692
- STRING_SINGLE@4685..4692 "'---\\n'"
- WHITESPACE@4692..4693 " "
- PLUS@4693..4694 "+"
- WHITESPACE@4694..4695 " "
- EXPR_APPLY@4695..4807
- EXPR_INDEX@4695..4703
- EXPR_VAR@4695..4698
- NAME@4695..4698
- IDENT@4695..4698 "std"
- DOT@4698..4699 "."
- NAME@4699..4703
- IDENT@4699..4703 "join"
- ARGS_DESC@4703..4807
- L_PAREN@4703..4704 "("
- WHITESPACE@4704..4713 "\n "
- ARG@4713..4722
- EXPR_STRING@4713..4722
- STRING_SINGLE@4713..4722 "'\\n---\\n'"
- COMMA@4722..4723 ","
- WHITESPACE@4723..4724 " "
- ARG@4724..4799
- EXPR_ARRAY_COMP@4724..4799
- L_BRACK@4724..4725 "["
- EXPR_APPLY@4725..4783
- EXPR_INDEX@4725..4744
- EXPR_VAR@4725..4728
- NAME@4725..4728
- IDENT@4725..4728 "std"
- DOT@4728..4729 "."
- NAME@4729..4744
- IDENT@4729..4744 "manifestYamlDoc"
- ARGS_DESC@4744..4783
- L_PAREN@4744..4745 "("
- ARG@4745..4746
- EXPR_VAR@4745..4746
- NAME@4745..4746
- IDENT@4745..4746 "e"
- COMMA@4746..4747 ","
- WHITESPACE@4747..4748 " "
- ARG@4748..4770
- EXPR_VAR@4748..4770
- NAME@4748..4770
- IDENT@4748..4770 "indent_array_in_object"
- COMMA@4770..4771 ","
- WHITESPACE@4771..4772 " "
- ARG@4772..4782
- EXPR_VAR@4772..4782
- NAME@4772..4782
- IDENT@4772..4782 "quote_keys"
- R_PAREN@4782..4783 ")"
- WHITESPACE@4783..4784 " "
- FOR_SPEC@4784..4798
- FOR_KW@4784..4787 "for"
- WHITESPACE@4787..4788 " "
- NAME@4788..4789
- IDENT@4788..4789 "e"
- WHITESPACE@4789..4790 " "
- IN_KW@4790..4792 "in"
- WHITESPACE@4792..4793 " "
- EXPR_VAR@4793..4798
- NAME@4793..4798
- IDENT@4793..4798 "value"
- R_BRACK@4798..4799 "]"
- WHITESPACE@4799..4806 "\n "
- R_PAREN@4806..4807 ")"
- WHITESPACE@4807..4808 " "
- PLUS@4808..4809 "+"
- WHITESPACE@4809..4810 " "
- EXPR_IF_THEN_ELSE@4810..4852
- IF_KW@4810..4812 "if"
- WHITESPACE@4812..4813 " "
- EXPR_VAR@4813..4827
- NAME@4813..4827
- IDENT@4813..4827 "c_document_end"
- WHITESPACE@4827..4828 " "
- THEN_KW@4828..4832 "then"
- WHITESPACE@4832..4833 " "
- TRUE_EXPR@4833..4842
- EXPR_STRING@4833..4842
- STRING_SINGLE@4833..4842 "'\\n...\\n'"
- WHITESPACE@4842..4843 " "
- ELSE_KW@4843..4847 "else"
- WHITESPACE@4847..4848 " "
- FALSE_EXPR@4848..4852
- EXPR_STRING@4848..4852
- STRING_SINGLE@4848..4852 "'\\n'"
- COMMA@4852..4853 ","
- WHITESPACE@4853..4857 "\n\n "
- MEMBER_FIELD_METHOD@4857..5513
- FIELD_NAME_FIXED@4857..4871
- NAME@4857..4871
- IDENT@4857..4871 "manifestPython"
- PARAMS_DESC@4871..4874
- L_PAREN@4871..4872 "("
- PARAM@4872..4873
- DESTRUCT_FULL@4872..4873
- NAME@4872..4873
- IDENT@4872..4873 "v"
- R_PAREN@4873..4874 ")"
- COLONCOLON@4874..4876 "::"
- WHITESPACE@4876..4881 "\n "
- EXPR_IF_THEN_ELSE@4881..5513
- IF_KW@4881..4883 "if"
- WHITESPACE@4883..4884 " "
- EXPR_APPLY@4884..4899
- EXPR_INDEX@4884..4896
- EXPR_VAR@4884..4887
- NAME@4884..4887
- IDENT@4884..4887 "std"
- DOT@4887..4888 "."
- NAME@4888..4896
- IDENT@4888..4896 "isObject"
- ARGS_DESC@4896..4899
- L_PAREN@4896..4897 "("
- ARG@4897..4898
- EXPR_VAR@4897..4898
- NAME@4897..4898
- IDENT@4897..4898 "v"
- R_PAREN@4898..4899 ")"
- WHITESPACE@4899..4900 " "
- THEN_KW@4900..4904 "then"
- WHITESPACE@4904..4911 "\n "
- STMT_LOCAL@4911..5046
- LOCAL_KW@4911..4916 "local"
- WHITESPACE@4916..4917 " "
- BIND_DESTRUCT@4917..5045
- DESTRUCT_FULL@4917..4923
- NAME@4917..4923
- IDENT@4917..4923 "fields"
- WHITESPACE@4923..4924 " "
- ASSIGN@4924..4925 "="
- WHITESPACE@4925..4926 " "
- EXPR_ARRAY_COMP@4926..5045
- L_BRACK@4926..4927 "["
- WHITESPACE@4927..4936 "\n "
- EXPR_BINARY@4936..5000
- LHS_EXPR@4936..4944
- EXPR_STRING@4936..4944
- STRING_SINGLE@4936..4944 "'%s: %s'"
- WHITESPACE@4944..4945 " "
- MODULO@4945..4946 "%"
- WHITESPACE@4946..4947 " "
- EXPR_ARRAY@4947..5000
- L_BRACK@4947..4948 "["
- EXPR_APPLY@4948..4973
- EXPR_INDEX@4948..4970
- EXPR_VAR@4948..4951
- NAME@4948..4951
- IDENT@4948..4951 "std"
- DOT@4951..4952 "."
- NAME@4952..4970
- IDENT@4952..4970 "escapeStringPython"
- ARGS_DESC@4970..4973
- L_PAREN@4970..4971 "("
- ARG@4971..4972
- EXPR_VAR@4971..4972
- NAME@4971..4972
- IDENT@4971..4972 "k"
- R_PAREN@4972..4973 ")"
- COMMA@4973..4974 ","
- WHITESPACE@4974..4975 " "
- EXPR_APPLY@4975..4999
- EXPR_INDEX@4975..4993
- EXPR_VAR@4975..4978
- NAME@4975..4978
- IDENT@4975..4978 "std"
- DOT@4978..4979 "."
- NAME@4979..4993
- IDENT@4979..4993 "manifestPython"
- ARGS_DESC@4993..4999
- L_PAREN@4993..4994 "("
- ARG@4994..4998
- EXPR_INDEX_EXPR@4994..4998
- LHS_EXPR@4994..4995
- EXPR_VAR@4994..4995
- NAME@4994..4995
- IDENT@4994..4995 "v"
- L_BRACK@4995..4996 "["
- EXPR_VAR@4996..4997
- NAME@4996..4997
- IDENT@4996..4997 "k"
- R_BRACK@4997..4998 "]"
- R_PAREN@4998..4999 ")"
- R_BRACK@4999..5000 "]"
- WHITESPACE@5000..5009 "\n "
- FOR_SPEC@5009..5037
- FOR_KW@5009..5012 "for"
- WHITESPACE@5012..5013 " "
- NAME@5013..5014
- IDENT@5013..5014 "k"
- WHITESPACE@5014..5015 " "
- IN_KW@5015..5017 "in"
- WHITESPACE@5017..5018 " "
- EXPR_APPLY@5018..5037
- EXPR_INDEX@5018..5034
- EXPR_VAR@5018..5021
- NAME@5018..5021
- IDENT@5018..5021 "std"
- DOT@5021..5022 "."
- NAME@5022..5034
- IDENT@5022..5034 "objectFields"
- ARGS_DESC@5034..5037
- L_PAREN@5034..5035 "("
- ARG@5035..5036
- EXPR_VAR@5035..5036
- NAME@5035..5036
- IDENT@5035..5036 "v"
- R_PAREN@5036..5037 ")"
- WHITESPACE@5037..5044 "\n "
- R_BRACK@5044..5045 "]"
- SEMI@5045..5046 ";"
- WHITESPACE@5046..5053 "\n "
- TRUE_EXPR@5053..5086
- EXPR_BINARY@5053..5086
- LHS_EXPR@5053..5059
- EXPR_STRING@5053..5059
- STRING_SINGLE@5053..5059 "'{%s}'"
- WHITESPACE@5059..5060 " "
- MODULO@5060..5061 "%"
- WHITESPACE@5061..5062 " "
- EXPR_ARRAY@5062..5086
- L_BRACK@5062..5063 "["
- EXPR_APPLY@5063..5085
- EXPR_INDEX@5063..5071
- EXPR_VAR@5063..5066
- NAME@5063..5066
- IDENT@5063..5066 "std"
- DOT@5066..5067 "."
- NAME@5067..5071
- IDENT@5067..5071 "join"
- ARGS_DESC@5071..5085
- L_PAREN@5071..5072 "("
- ARG@5072..5076
- EXPR_STRING@5072..5076
- STRING_SINGLE@5072..5076 "', '"
- COMMA@5076..5077 ","
- WHITESPACE@5077..5078 " "
- ARG@5078..5084
- EXPR_VAR@5078..5084
- NAME@5078..5084
- IDENT@5078..5084 "fields"
- R_PAREN@5084..5085 ")"
- R_BRACK@5085..5086 "]"
- WHITESPACE@5086..5091 "\n "
- ELSE_KW@5091..5095 "else"
- WHITESPACE@5095..5096 " "
- FALSE_EXPR@5096..5513
- EXPR_IF_THEN_ELSE@5096..5513
- IF_KW@5096..5098 "if"
- WHITESPACE@5098..5099 " "
- EXPR_APPLY@5099..5113
- EXPR_INDEX@5099..5110
- EXPR_VAR@5099..5102
- NAME@5099..5102
- IDENT@5099..5102 "std"
- DOT@5102..5103 "."
- NAME@5103..5110
- IDENT@5103..5110 "isArray"
- ARGS_DESC@5110..5113
- L_PAREN@5110..5111 "("
- ARG@5111..5112
- EXPR_VAR@5111..5112
- NAME@5111..5112
- IDENT@5111..5112 "v"
- R_PAREN@5112..5113 ")"
- WHITESPACE@5113..5114 " "
- THEN_KW@5114..5118 "then"
- WHITESPACE@5118..5125 "\n "
- TRUE_EXPR@5125..5188
- EXPR_BINARY@5125..5188
- LHS_EXPR@5125..5131
- EXPR_STRING@5125..5131
- STRING_SINGLE@5125..5131 "'[%s]'"
- WHITESPACE@5131..5132 " "
- MODULO@5132..5133 "%"
- WHITESPACE@5133..5134 " "
- EXPR_ARRAY@5134..5188
- L_BRACK@5134..5135 "["
- EXPR_APPLY@5135..5187
- EXPR_INDEX@5135..5143
- EXPR_VAR@5135..5138
- NAME@5135..5138
- IDENT@5135..5138 "std"
- DOT@5138..5139 "."
- NAME@5139..5143
- IDENT@5139..5143 "join"
- ARGS_DESC@5143..5187
- L_PAREN@5143..5144 "("
- ARG@5144..5148
- EXPR_STRING@5144..5148
- STRING_SINGLE@5144..5148 "', '"
- COMMA@5148..5149 ","
- WHITESPACE@5149..5150 " "
- ARG@5150..5186
- EXPR_ARRAY_COMP@5150..5186
- L_BRACK@5150..5151 "["
- EXPR_APPLY@5151..5173
- EXPR_INDEX@5151..5169
- EXPR_VAR@5151..5154
- NAME@5151..5154
- IDENT@5151..5154 "std"
- DOT@5154..5155 "."
- NAME@5155..5169
- IDENT@5155..5169 "manifestPython"
- ARGS_DESC@5169..5173
- L_PAREN@5169..5170 "("
- ARG@5170..5172
- EXPR_VAR@5170..5172
- NAME@5170..5172
- IDENT@5170..5172 "v2"
- R_PAREN@5172..5173 ")"
- WHITESPACE@5173..5174 " "
- FOR_SPEC@5174..5185
- FOR_KW@5174..5177 "for"
- WHITESPACE@5177..5178 " "
- NAME@5178..5180
- IDENT@5178..5180 "v2"
- WHITESPACE@5180..5181 " "
- IN_KW@5181..5183 "in"
- WHITESPACE@5183..5184 " "
- EXPR_VAR@5184..5185
- NAME@5184..5185
- IDENT@5184..5185 "v"
- R_BRACK@5185..5186 "]"
- R_PAREN@5186..5187 ")"
- R_BRACK@5187..5188 "]"
- WHITESPACE@5188..5193 "\n "
- ELSE_KW@5193..5197 "else"
- WHITESPACE@5197..5198 " "
- FALSE_EXPR@5198..5513
- EXPR_IF_THEN_ELSE@5198..5513
- IF_KW@5198..5200 "if"
- WHITESPACE@5200..5201 " "
- EXPR_APPLY@5201..5216
- EXPR_INDEX@5201..5213
- EXPR_VAR@5201..5204
- NAME@5201..5204
- IDENT@5201..5204 "std"
- DOT@5204..5205 "."
- NAME@5205..5213
- IDENT@5205..5213 "isString"
- ARGS_DESC@5213..5216
- L_PAREN@5213..5214 "("
- ARG@5214..5215
- EXPR_VAR@5214..5215
- NAME@5214..5215
- IDENT@5214..5215 "v"
- R_PAREN@5215..5216 ")"
- WHITESPACE@5216..5217 " "
- THEN_KW@5217..5221 "then"
- WHITESPACE@5221..5228 "\n "
- TRUE_EXPR@5228..5262
- EXPR_BINARY@5228..5262
- LHS_EXPR@5228..5232
- EXPR_STRING@5228..5232
- STRING_SINGLE@5228..5232 "'%s'"
- WHITESPACE@5232..5233 " "
- MODULO@5233..5234 "%"
- WHITESPACE@5234..5235 " "
- EXPR_ARRAY@5235..5262
- L_BRACK@5235..5236 "["
- EXPR_APPLY@5236..5261
- EXPR_INDEX@5236..5258
- EXPR_VAR@5236..5239
- NAME@5236..5239
- IDENT@5236..5239 "std"
- DOT@5239..5240 "."
- NAME@5240..5258
- IDENT@5240..5258 "escapeStringPython"
- ARGS_DESC@5258..5261
- L_PAREN@5258..5259 "("
- ARG@5259..5260
- EXPR_VAR@5259..5260
- NAME@5259..5260
- IDENT@5259..5260 "v"
- R_PAREN@5260..5261 ")"
- R_BRACK@5261..5262 "]"
- WHITESPACE@5262..5267 "\n "
- ELSE_KW@5267..5271 "else"
- WHITESPACE@5271..5272 " "
- FALSE_EXPR@5272..5513
- EXPR_IF_THEN_ELSE@5272..5513
- IF_KW@5272..5274 "if"
- WHITESPACE@5274..5275 " "
- EXPR_APPLY@5275..5292
- EXPR_INDEX@5275..5289
- EXPR_VAR@5275..5278
- NAME@5275..5278
- IDENT@5275..5278 "std"
- DOT@5278..5279 "."
- NAME@5279..5289
- IDENT@5279..5289 "isFunction"
- ARGS_DESC@5289..5292
- L_PAREN@5289..5290 "("
- ARG@5290..5291
- EXPR_VAR@5290..5291
- NAME@5290..5291
- IDENT@5290..5291 "v"
- R_PAREN@5291..5292 ")"
- WHITESPACE@5292..5293 " "
- THEN_KW@5293..5297 "then"
- WHITESPACE@5297..5304 "\n "
- TRUE_EXPR@5304..5336
- EXPR_ERROR@5304..5336
- ERROR_KW@5304..5309 "error"
- WHITESPACE@5309..5310 " "
- EXPR_STRING@5310..5336
- STRING_SINGLE@5310..5336 "'cannot manifest func ..."
- WHITESPACE@5336..5341 "\n "
- ELSE_KW@5341..5345 "else"
- WHITESPACE@5345..5346 " "
- FALSE_EXPR@5346..5513
- EXPR_IF_THEN_ELSE@5346..5513
- IF_KW@5346..5348 "if"
- WHITESPACE@5348..5349 " "
- EXPR_APPLY@5349..5364
- EXPR_INDEX@5349..5361
- EXPR_VAR@5349..5352
- NAME@5349..5352
- IDENT@5349..5352 "std"
- DOT@5352..5353 "."
- NAME@5353..5361
- IDENT@5353..5361 "isNumber"
- ARGS_DESC@5361..5364
- L_PAREN@5361..5362 "("
- ARG@5362..5363
- EXPR_VAR@5362..5363
- NAME@5362..5363
- IDENT@5362..5363 "v"
- R_PAREN@5363..5364 ")"
- WHITESPACE@5364..5365 " "
- THEN_KW@5365..5369 "then"
- WHITESPACE@5369..5376 "\n "
- TRUE_EXPR@5376..5391
- EXPR_APPLY@5376..5391
- EXPR_INDEX@5376..5388
- EXPR_VAR@5376..5379
- NAME@5376..5379
- IDENT@5376..5379 "std"
- DOT@5379..5380 "."
- NAME@5380..5388
- IDENT@5380..5388 "toString"
- ARGS_DESC@5388..5391
- L_PAREN@5388..5389 "("
- ARG@5389..5390
- EXPR_VAR@5389..5390
- NAME@5389..5390
- IDENT@5389..5390 "v"
- R_PAREN@5390..5391 ")"
- WHITESPACE@5391..5396 "\n "
- ELSE_KW@5396..5400 "else"
- WHITESPACE@5400..5401 " "
- FALSE_EXPR@5401..5513
- EXPR_IF_THEN_ELSE@5401..5513
- IF_KW@5401..5403 "if"
- WHITESPACE@5403..5404 " "
- EXPR_BINARY@5404..5413
- LHS_EXPR@5404..5405
- EXPR_VAR@5404..5405
- NAME@5404..5405
- IDENT@5404..5405 "v"
- WHITESPACE@5405..5406 " "
- EQ@5406..5408 "=="
- WHITESPACE@5408..5409 " "
- EXPR_LITERAL@5409..5413
- TRUE_KW@5409..5413 "true"
- WHITESPACE@5413..5414 " "
- THEN_KW@5414..5418 "then"
- WHITESPACE@5418..5425 "\n "
- TRUE_EXPR@5425..5431
- EXPR_STRING@5425..5431
- STRING_SINGLE@5425..5431 "'True'"
- WHITESPACE@5431..5436 "\n "
- ELSE_KW@5436..5440 "else"
- WHITESPACE@5440..5441 " "
- FALSE_EXPR@5441..5513
- EXPR_IF_THEN_ELSE@5441..5513
- IF_KW@5441..5443 "if"
- WHITESPACE@5443..5444 " "
- EXPR_BINARY@5444..5454
- LHS_EXPR@5444..5445
- EXPR_VAR@5444..5445
- NAME@5444..5445
- IDENT@5444..5445 "v"
- WHITESPACE@5445..5446 " "
- EQ@5446..5448 "=="
- WHITESPACE@5448..5449 " "
- EXPR_LITERAL@5449..5454
- FALSE_KW@5449..5454 "false"
- WHITESPACE@5454..5455 " "
- THEN_KW@5455..5459 "then"
- WHITESPACE@5459..5466 "\n "
- TRUE_EXPR@5466..5473
- EXPR_STRING@5466..5473
- STRING_SINGLE@5466..5473 "'False'"
- WHITESPACE@5473..5478 "\n "
- ELSE_KW@5478..5482 "else"
- WHITESPACE@5482..5483 " "
- FALSE_EXPR@5483..5513
- EXPR_IF_THEN_ELSE@5483..5513
- IF_KW@5483..5485 "if"
- WHITESPACE@5485..5486 " "
- EXPR_BINARY@5486..5495
- LHS_EXPR@5486..5487
- EXPR_VAR@5486..5487
- NAME@5486..5487
- IDENT@5486..5487 "v"
- WHITESPACE@5487..5488 " "
- EQ@5488..5490 "=="
- WHITESPACE@5490..5491 " "
- EXPR_LITERAL@5491..5495
- NULL_KW@5491..5495 "null"
- WHITESPACE@5495..5496 " "
- THEN_KW@5496..5500 "then"
- WHITESPACE@5500..5507 "\n "
- TRUE_EXPR@5507..5513
- EXPR_STRING@5507..5513
- STRING_SINGLE@5507..5513 "'None'"
- COMMA@5513..5514 ","
- WHITESPACE@5514..5518 "\n\n "
- MEMBER_FIELD_METHOD@5518..5673
- FIELD_NAME_FIXED@5518..5536
- NAME@5518..5536
- IDENT@5518..5536 "manifestPythonVars"
- PARAMS_DESC@5536..5542
- L_PAREN@5536..5537 "("
- PARAM@5537..5541
- DESTRUCT_FULL@5537..5541
- NAME@5537..5541
- IDENT@5537..5541 "conf"
- R_PAREN@5541..5542 ")"
- COLONCOLON@5542..5544 "::"
- WHITESPACE@5544..5549 "\n "
- STMT_LOCAL@5549..5641
- LOCAL_KW@5549..5554 "local"
- WHITESPACE@5554..5555 " "
- BIND_DESTRUCT@5555..5640
- DESTRUCT_FULL@5555..5559
- NAME@5555..5559
- IDENT@5555..5559 "vars"
- WHITESPACE@5559..5560 " "
- ASSIGN@5560..5561 "="
- WHITESPACE@5561..5562 " "
- EXPR_ARRAY_COMP@5562..5640
- L_BRACK@5562..5563 "["
- EXPR_BINARY@5563..5607
- LHS_EXPR@5563..5572
- EXPR_STRING@5563..5572
- STRING_SINGLE@5563..5572 "'%s = %s'"
- WHITESPACE@5572..5573 " "
- MODULO@5573..5574 "%"
- WHITESPACE@5574..5575 " "
- EXPR_ARRAY@5575..5607
- L_BRACK@5575..5576 "["
- EXPR_VAR@5576..5577
- NAME@5576..5577
- IDENT@5576..5577 "k"
- COMMA@5577..5578 ","
- WHITESPACE@5578..5579 " "
- EXPR_APPLY@5579..5606
- EXPR_INDEX@5579..5597
- EXPR_VAR@5579..5582
- NAME@5579..5582
- IDENT@5579..5582 "std"
- DOT@5582..5583 "."
- NAME@5583..5597
- IDENT@5583..5597 "manifestPython"
- ARGS_DESC@5597..5606
- L_PAREN@5597..5598 "("
- ARG@5598..5605
- EXPR_INDEX_EXPR@5598..5605
- LHS_EXPR@5598..5602
- EXPR_VAR@5598..5602
- NAME@5598..5602
- IDENT@5598..5602 "conf"
- L_BRACK@5602..5603 "["
- EXPR_VAR@5603..5604
- NAME@5603..5604
- IDENT@5603..5604 "k"
- R_BRACK@5604..5605 "]"
- R_PAREN@5605..5606 ")"
- R_BRACK@5606..5607 "]"
- WHITESPACE@5607..5608 " "
- FOR_SPEC@5608..5639
- FOR_KW@5608..5611 "for"
- WHITESPACE@5611..5612 " "
- NAME@5612..5613
- IDENT@5612..5613 "k"
- WHITESPACE@5613..5614 " "
- IN_KW@5614..5616 "in"
- WHITESPACE@5616..5617 " "
- EXPR_APPLY@5617..5639
- EXPR_INDEX@5617..5633
- EXPR_VAR@5617..5620
- NAME@5617..5620
- IDENT@5617..5620 "std"
- DOT@5620..5621 "."
- NAME@5621..5633
- IDENT@5621..5633 "objectFields"
- ARGS_DESC@5633..5639
- L_PAREN@5633..5634 "("
- ARG@5634..5638
- EXPR_VAR@5634..5638
- NAME@5634..5638
- IDENT@5634..5638 "conf"
- R_PAREN@5638..5639 ")"
- R_BRACK@5639..5640 "]"
- SEMI@5640..5641 ";"
- WHITESPACE@5641..5646 "\n "
- EXPR_APPLY@5646..5673
- EXPR_INDEX@5646..5654
- EXPR_VAR@5646..5649
- NAME@5646..5649
- IDENT@5646..5649 "std"
- DOT@5649..5650 "."
- NAME@5650..5654
- IDENT@5650..5654 "join"
- ARGS_DESC@5654..5673
- L_PAREN@5654..5655 "("
- ARG@5655..5659
- EXPR_STRING@5655..5659
- STRING_SINGLE@5655..5659 "'\\n'"
- COMMA@5659..5660 ","
- WHITESPACE@5660..5661 " "
- ARG@5661..5672
- EXPR_BINARY@5661..5672
- LHS_EXPR@5661..5665
- EXPR_VAR@5661..5665
- NAME@5661..5665
- IDENT@5661..5665 "vars"
- WHITESPACE@5665..5666 " "
- PLUS@5666..5667 "+"
- WHITESPACE@5667..5668 " "
- EXPR_ARRAY@5668..5672
- L_BRACK@5668..5669 "["
- EXPR_STRING@5669..5671
- STRING_SINGLE@5669..5671 "''"
- R_BRACK@5671..5672 "]"
- R_PAREN@5672..5673 ")"
- COMMA@5673..5674 ","
- WHITESPACE@5674..5678 "\n\n "
- MEMBER_FIELD_METHOD@5678..6345
- FIELD_NAME_FIXED@5678..5695
- NAME@5678..5695
- IDENT@5678..5695 "manifestXmlJsonml"
- PARAMS_DESC@5695..5702
- L_PAREN@5695..5696 "("
- PARAM@5696..5701
- DESTRUCT_FULL@5696..5701
- NAME@5696..5701
- IDENT@5696..5701 "value"
- R_PAREN@5701..5702 ")"
- COLONCOLON@5702..5704 "::"
- WHITESPACE@5704..5709 "\n "
- EXPR_IF_THEN_ELSE@5709..6345
- IF_KW@5709..5711 "if"
- WHITESPACE@5711..5712 " "
- EXPR_UNARY@5712..5731
- NOT@5712..5713 "!"
- EXPR_APPLY@5713..5731
- EXPR_INDEX@5713..5724
- EXPR_VAR@5713..5716
- NAME@5713..5716
- IDENT@5713..5716 "std"
- DOT@5716..5717 "."
- NAME@5717..5724
- IDENT@5717..5724 "isArray"
- ARGS_DESC@5724..5731
- L_PAREN@5724..5725 "("
- ARG@5725..5730
- EXPR_VAR@5725..5730
- NAME@5725..5730
- IDENT@5725..5730 "value"
- R_PAREN@5730..5731 ")"
- WHITESPACE@5731..5732 " "
- THEN_KW@5732..5736 "then"
- WHITESPACE@5736..5743 "\n "
- TRUE_EXPR@5743..5811
- EXPR_ERROR@5743..5811
- ERROR_KW@5743..5748 "error"
- WHITESPACE@5748..5749 " "
- EXPR_BINARY@5749..5811
- LHS_EXPR@5749..5793
- EXPR_STRING@5749..5793
- STRING_SINGLE@5749..5793 "'Expected a JSONML va ..."
- WHITESPACE@5793..5794 " "
- MODULO@5794..5795 "%"
- WHITESPACE@5795..5796 " "
- EXPR_APPLY@5796..5811
- EXPR_INDEX@5796..5804
- EXPR_VAR@5796..5799
- NAME@5796..5799
- IDENT@5796..5799 "std"
- DOT@5799..5800 "."
- NAME@5800..5804
- IDENT@5800..5804 "type"
- ARGS_DESC@5804..5811
- L_PAREN@5804..5805 "("
- ARG@5805..5810
- EXPR_VAR@5805..5810
- NAME@5805..5810
- IDENT@5805..5810 "value"
- R_PAREN@5810..5811 ")"
- WHITESPACE@5811..5816 "\n "
- ELSE_KW@5816..5820 "else"
- WHITESPACE@5820..5827 "\n "
- STMT_LOCAL@5827..6327
- LOCAL_KW@5827..5832 "local"
- WHITESPACE@5832..5833 " "
- BIND_FUNCTION@5833..6326
- NAME@5833..5836
- IDENT@5833..5836 "aux"
- PARAMS_DESC@5836..5839
- L_PAREN@5836..5837 "("
- PARAM@5837..5838
- DESTRUCT_FULL@5837..5838
- NAME@5837..5838
- IDENT@5837..5838 "v"
- R_PAREN@5838..5839 ")"
- WHITESPACE@5839..5840 " "
- ASSIGN@5840..5841 "="
- WHITESPACE@5841..5850 "\n "
- EXPR_IF_THEN_ELSE@5850..6326
- IF_KW@5850..5852 "if"
- WHITESPACE@5852..5853 " "
- EXPR_APPLY@5853..5868
- EXPR_INDEX@5853..5865
- EXPR_VAR@5853..5856
- NAME@5853..5856
- IDENT@5853..5856 "std"
- DOT@5856..5857 "."
- NAME@5857..5865
- IDENT@5857..5865 "isString"
- ARGS_DESC@5865..5868
- L_PAREN@5865..5866 "("
- ARG@5866..5867
- EXPR_VAR@5866..5867
- NAME@5866..5867
- IDENT@5866..5867 "v"
- R_PAREN@5867..5868 ")"
- WHITESPACE@5868..5869 " "
- THEN_KW@5869..5873 "then"
- WHITESPACE@5873..5884 "\n "
- TRUE_EXPR@5884..5885
- EXPR_VAR@5884..5885
- NAME@5884..5885
- IDENT@5884..5885 "v"
- WHITESPACE@5885..5894 "\n "
- ELSE_KW@5894..5898 "else"
- WHITESPACE@5898..5909 "\n "
- STMT_LOCAL@5909..5926
- LOCAL_KW@5909..5914 "local"
- WHITESPACE@5914..5915 " "
- BIND_DESTRUCT@5915..5925
- DESTRUCT_FULL@5915..5918
- NAME@5915..5918
- IDENT@5915..5918 "tag"
- WHITESPACE@5918..5919 " "
- ASSIGN@5919..5920 "="
- WHITESPACE@5920..5921 " "
- EXPR_INDEX_EXPR@5921..5925
- LHS_EXPR@5921..5922
- EXPR_VAR@5921..5922
- NAME@5921..5922
- IDENT@5921..5922 "v"
- L_BRACK@5922..5923 "["
- EXPR_NUMBER@5923..5924
- FLOAT@5923..5924 "0"
- R_BRACK@5924..5925 "]"
- SEMI@5925..5926 ";"
- WHITESPACE@5926..5937 "\n "
- STMT_LOCAL@5937..5995
- LOCAL_KW@5937..5942 "local"
- WHITESPACE@5942..5943 " "
- BIND_DESTRUCT@5943..5994
- DESTRUCT_FULL@5943..5952
- NAME@5943..5952
- IDENT@5943..5952 "has_attrs"
- WHITESPACE@5952..5953 " "
- ASSIGN@5953..5954 "="
- WHITESPACE@5954..5955 " "
- EXPR_BINARY@5955..5994
- LHS_EXPR@5955..5972
- EXPR_BINARY@5955..5972
- LHS_EXPR@5955..5968
- EXPR_APPLY@5955..5968
- EXPR_INDEX@5955..5965
- EXPR_VAR@5955..5958
- NAME@5955..5958
- IDENT@5955..5958 "std"
- DOT@5958..5959 "."
- NAME@5959..5965
- IDENT@5959..5965 "length"
- ARGS_DESC@5965..5968
- L_PAREN@5965..5966 "("
- ARG@5966..5967
- EXPR_VAR@5966..5967
- NAME@5966..5967
- IDENT@5966..5967 "v"
- R_PAREN@5967..5968 ")"
- WHITESPACE@5968..5969 " "
- GT@5969..5970 ">"
- WHITESPACE@5970..5971 " "
- EXPR_NUMBER@5971..5972
- FLOAT@5971..5972 "1"
- WHITESPACE@5972..5973 " "
- AND@5973..5975 "&&"
- WHITESPACE@5975..5976 " "
- EXPR_APPLY@5976..5994
- EXPR_INDEX@5976..5988
- EXPR_VAR@5976..5979
- NAME@5976..5979
- IDENT@5976..5979 "std"
- DOT@5979..5980 "."
- NAME@5980..5988
- IDENT@5980..5988 "isObject"
- ARGS_DESC@5988..5994
- L_PAREN@5988..5989 "("
- ARG@5989..5993
- EXPR_INDEX_EXPR@5989..5993
- LHS_EXPR@5989..5990
- EXPR_VAR@5989..5990
- NAME@5989..5990
- IDENT@5989..5990 "v"
- L_BRACK@5990..5991 "["
- EXPR_NUMBER@5991..5992
- FLOAT@5991..5992 "1"
- R_BRACK@5992..5993 "]"
- R_PAREN@5993..5994 ")"
- SEMI@5994..5995 ";"
- WHITESPACE@5995..6006 "\n "
- STMT_LOCAL@6006..6051
- LOCAL_KW@6006..6011 "local"
- WHITESPACE@6011..6012 " "
- BIND_DESTRUCT@6012..6050
- DESTRUCT_FULL@6012..6017
- NAME@6012..6017
- IDENT@6012..6017 "attrs"
- WHITESPACE@6017..6018 " "
- ASSIGN@6018..6019 "="
- WHITESPACE@6019..6020 " "
- EXPR_IF_THEN_ELSE@6020..6050
- IF_KW@6020..6022 "if"
- WHITESPACE@6022..6023 " "
- EXPR_VAR@6023..6032
- NAME@6023..6032
- IDENT@6023..6032 "has_attrs"
- WHITESPACE@6032..6033 " "
- THEN_KW@6033..6037 "then"
- WHITESPACE@6037..6038 " "
- TRUE_EXPR@6038..6042
- EXPR_INDEX_EXPR@6038..6042
- LHS_EXPR@6038..6039
- EXPR_VAR@6038..6039
- NAME@6038..6039
- IDENT@6038..6039 "v"
- L_BRACK@6039..6040 "["
- EXPR_NUMBER@6040..6041
- FLOAT@6040..6041 "1"
- R_BRACK@6041..6042 "]"
- WHITESPACE@6042..6043 " "
- ELSE_KW@6043..6047 "else"
- WHITESPACE@6047..6048 " "
- FALSE_EXPR@6048..6050
- EXPR_OBJECT@6048..6050
- OBJ_BODY_MEMBER_LIST@6048..6050
- L_BRACE@6048..6049 "{"
- R_BRACE@6049..6050 "}"
- SEMI@6050..6051 ";"
- WHITESPACE@6051..6062 "\n "
- STMT_LOCAL@6062..6114
- LOCAL_KW@6062..6067 "local"
- WHITESPACE@6067..6068 " "
- BIND_DESTRUCT@6068..6113
- DESTRUCT_FULL@6068..6076
- NAME@6068..6076
- IDENT@6068..6076 "children"
- WHITESPACE@6076..6077 " "
- ASSIGN@6077..6078 "="
- WHITESPACE@6078..6079 " "
- EXPR_IF_THEN_ELSE@6079..6113
- IF_KW@6079..6081 "if"
- WHITESPACE@6081..6082 " "
- EXPR_VAR@6082..6091
- NAME@6082..6091
- IDENT@6082..6091 "has_attrs"
- WHITESPACE@6091..6092 " "
- THEN_KW@6092..6096 "then"
- WHITESPACE@6096..6097 " "
- TRUE_EXPR@6097..6102
- EXPR_SLICE@6097..6102
- EXPR_VAR@6097..6098
- NAME@6097..6098
- IDENT@6097..6098 "v"
- SLICE_DESC@6098..6102
- L_BRACK@6098..6099 "["
- EXPR_NUMBER@6099..6100
- FLOAT@6099..6100 "2"
- COLON@6100..6101 ":"
- R_BRACK@6101..6102 "]"
- WHITESPACE@6102..6103 " "
- ELSE_KW@6103..6107 "else"
- WHITESPACE@6107..6108 " "
- FALSE_EXPR@6108..6113
- EXPR_SLICE@6108..6113
- EXPR_VAR@6108..6109
- NAME@6108..6109
- IDENT@6108..6109 "v"
- SLICE_DESC@6109..6113
- L_BRACK@6109..6110 "["
- EXPR_NUMBER@6110..6111
- FLOAT@6110..6111 "1"
- COLON@6111..6112 ":"
- R_BRACK@6112..6113 "]"
- SEMI@6113..6114 ";"
- WHITESPACE@6114..6125 "\n "
- STMT_LOCAL@6125..6231
- LOCAL_KW@6125..6130 "local"
- WHITESPACE@6130..6131 " "
- BIND_DESTRUCT@6131..6230
- DESTRUCT_FULL@6131..6140
- NAME@6131..6140
- IDENT@6131..6140 "attrs_str"
- WHITESPACE@6140..6141 " "
- ASSIGN@6141..6142 "="
- WHITESPACE@6142..6155 "\n "
- EXPR_APPLY@6155..6230
- EXPR_INDEX@6155..6163
- EXPR_VAR@6155..6158
- NAME@6155..6158
- IDENT@6155..6158 "std"
- DOT@6158..6159 "."
- NAME@6159..6163
- IDENT@6159..6163 "join"
- ARGS_DESC@6163..6230
- L_PAREN@6163..6164 "("
- ARG@6164..6166
- EXPR_STRING@6164..6166
- STRING_SINGLE@6164..6166 "''"
- COMMA@6166..6167 ","
- WHITESPACE@6167..6168 " "
- ARG@6168..6229
- EXPR_ARRAY_COMP@6168..6229
- L_BRACK@6168..6169 "["
- EXPR_BINARY@6169..6195
- LHS_EXPR@6169..6179
- EXPR_STRING@6169..6179
- STRING_SINGLE@6169..6179 "' %s=\"%s\"'"
- WHITESPACE@6179..6180 " "
- MODULO@6180..6181 "%"
- WHITESPACE@6181..6182 " "
- EXPR_ARRAY@6182..6195
- L_BRACK@6182..6183 "["
- EXPR_VAR@6183..6184
- NAME@6183..6184
- IDENT@6183..6184 "k"
- COMMA@6184..6185 ","
- WHITESPACE@6185..6186 " "
- EXPR_INDEX_EXPR@6186..6194
- LHS_EXPR@6186..6191
- EXPR_VAR@6186..6191
- NAME@6186..6191
- IDENT@6186..6191 "attrs"
- L_BRACK@6191..6192 "["
- EXPR_VAR@6192..6193
- NAME@6192..6193
- IDENT@6192..6193 "k"
- R_BRACK@6193..6194 "]"
- R_BRACK@6194..6195 "]"
- WHITESPACE@6195..6196 " "
- FOR_SPEC@6196..6228
- FOR_KW@6196..6199 "for"
- WHITESPACE@6199..6200 " "
- NAME@6200..6201
- IDENT@6200..6201 "k"
- WHITESPACE@6201..6202 " "
- IN_KW@6202..6204 "in"
- WHITESPACE@6204..6205 " "
- EXPR_APPLY@6205..6228
- EXPR_INDEX@6205..6221
- EXPR_VAR@6205..6208
- NAME@6205..6208
- IDENT@6205..6208 "std"
- DOT@6208..6209 "."
- NAME@6209..6221
- IDENT@6209..6221 "objectFields"
- ARGS_DESC@6221..6228
- L_PAREN@6221..6222 "("
- ARG@6222..6227
- EXPR_VAR@6222..6227
- NAME@6222..6227
- IDENT@6222..6227 "attrs"
- R_PAREN@6227..6228 ")"
- R_BRACK@6228..6229 "]"
- R_PAREN@6229..6230 ")"
- SEMI@6230..6231 ";"
- WHITESPACE@6231..6242 "\n "
- FALSE_EXPR@6242..6326
- EXPR_APPLY@6242..6326
- EXPR_INDEX@6242..6254
- EXPR_VAR@6242..6245
- NAME@6242..6245
- IDENT@6242..6245 "std"
- DOT@6245..6246 "."
- NAME@6246..6254
- IDENT@6246..6254 "deepJoin"
- ARGS_DESC@6254..6326
- L_PAREN@6254..6255 "("
- ARG@6255..6325
- EXPR_ARRAY@6255..6325
- L_BRACK@6255..6256 "["
- EXPR_STRING@6256..6259
- STRING_SINGLE@6256..6259 "'<'"
- COMMA@6259..6260 ","
- WHITESPACE@6260..6261 " "
- EXPR_VAR@6261..6264
- NAME@6261..6264
- IDENT@6261..6264 "tag"
- COMMA@6264..6265 ","
- WHITESPACE@6265..6266 " "
- EXPR_VAR@6266..6275
- NAME@6266..6275
- IDENT@6266..6275 "attrs_str"
- COMMA@6275..6276 ","
- WHITESPACE@6276..6277 " "
- EXPR_STRING@6277..6280
- STRING_SINGLE@6277..6280 "'>'"
- COMMA@6280..6281 ","
- WHITESPACE@6281..6282 " "
- EXPR_ARRAY_COMP@6282..6308
- L_BRACK@6282..6283 "["
- EXPR_APPLY@6283..6289
- EXPR_VAR@6283..6286
- NAME@6283..6286
- IDENT@6283..6286 "aux"
- ARGS_DESC@6286..6289
- L_PAREN@6286..6287 "("
- ARG@6287..6288
- EXPR_VAR@6287..6288
- NAME@6287..6288
- IDENT@6287..6288 "x"
- R_PAREN@6288..6289 ")"
- WHITESPACE@6289..6290 " "
- FOR_SPEC@6290..6307
- FOR_KW@6290..6293 "for"
- WHITESPACE@6293..6294 " "
- NAME@6294..6295
- IDENT@6294..6295 "x"
- WHITESPACE@6295..6296 " "
- IN_KW@6296..6298 "in"
- WHITESPACE@6298..6299 " "
- EXPR_VAR@6299..6307
- NAME@6299..6307
- IDENT@6299..6307 "children"
- R_BRACK@6307..6308 "]"
- COMMA@6308..6309 ","
- WHITESPACE@6309..6310 " "
- EXPR_STRING@6310..6314
- STRING_SINGLE@6310..6314 "'</'"
- COMMA@6314..6315 ","
- WHITESPACE@6315..6316 " "
- EXPR_VAR@6316..6319
- NAME@6316..6319
- IDENT@6316..6319 "tag"
- COMMA@6319..6320 ","
- WHITESPACE@6320..6321 " "
- EXPR_STRING@6321..6324
- STRING_SINGLE@6321..6324 "'>'"
- R_BRACK@6324..6325 "]"
- R_PAREN@6325..6326 ")"
- SEMI@6326..6327 ";"
- WHITESPACE@6327..6335 "\n\n "
- FALSE_EXPR@6335..6345
- EXPR_APPLY@6335..6345
- EXPR_VAR@6335..6338
- NAME@6335..6338
- IDENT@6335..6338 "aux"
- ARGS_DESC@6338..6345
- L_PAREN@6338..6339 "("
- ARG@6339..6344
- EXPR_VAR@6339..6344
- NAME@6339..6344
- IDENT@6339..6344 "value"
- R_PAREN@6344..6345 ")"
- COMMA@6345..6346 ","
- WHITESPACE@6346..6350 "\n\n "
- MEMBER_FIELD_METHOD@6350..6899
- FIELD_NAME_FIXED@6350..6358
- NAME@6350..6358
- IDENT@6350..6358 "setUnion"
- PARAMS_DESC@6358..6373
- L_PAREN@6358..6359 "("
- PARAM@6359..6360
- DESTRUCT_FULL@6359..6360
- NAME@6359..6360
- IDENT@6359..6360 "a"
- COMMA@6360..6361 ","
- WHITESPACE@6361..6362 " "
- PARAM@6362..6363
- DESTRUCT_FULL@6362..6363
- NAME@6362..6363
- IDENT@6362..6363 "b"
- COMMA@6363..6364 ","
- WHITESPACE@6364..6365 " "
- PARAM@6365..6372
- DESTRUCT_FULL@6365..6369
- NAME@6365..6369
- IDENT@6365..6369 "keyF"
- ASSIGN@6369..6370 "="
- EXPR_VAR@6370..6372
- NAME@6370..6372
- IDENT@6370..6372 "id"
- R_PAREN@6372..6373 ")"
- COLONCOLON@6373..6375 "::"
- WHITESPACE@6375..6380 "\n "
- SINGLE_LINE_SLASH_COMMENT@6380..6422 "// NOTE: order matter ..."
- WHITESPACE@6422..6426 " "
- STMT_LOCAL@6426..6875
- LOCAL_KW@6426..6431 "local"
- WHITESPACE@6431..6432 " "
- BIND_FUNCTION@6432..6874
- NAME@6432..6435
- IDENT@6432..6435 "aux"
- PARAMS_DESC@6435..6452
- L_PAREN@6435..6436 "("
- PARAM@6436..6437
- DESTRUCT_FULL@6436..6437
- NAME@6436..6437
- IDENT@6436..6437 "a"
- COMMA@6437..6438 ","
- WHITESPACE@6438..6439 " "
- PARAM@6439..6440
- DESTRUCT_FULL@6439..6440
- NAME@6439..6440
- IDENT@6439..6440 "b"
- COMMA@6440..6441 ","
- WHITESPACE@6441..6442 " "
- PARAM@6442..6443
- DESTRUCT_FULL@6442..6443
- NAME@6442..6443
- IDENT@6442..6443 "i"
- COMMA@6443..6444 ","
- WHITESPACE@6444..6445 " "
- PARAM@6445..6446
- DESTRUCT_FULL@6445..6446
- NAME@6445..6446
- IDENT@6445..6446 "j"
- COMMA@6446..6447 ","
- WHITESPACE@6447..6448 " "
- PARAM@6448..6451
- DESTRUCT_FULL@6448..6451
- NAME@6448..6451
- IDENT@6448..6451 "acc"
- R_PAREN@6451..6452 ")"
- WHITESPACE@6452..6453 " "
- ASSIGN@6453..6454 "="
- WHITESPACE@6454..6461 "\n "
- EXPR_IF_THEN_ELSE@6461..6874
- IF_KW@6461..6463 "if"
- WHITESPACE@6463..6464 " "
- EXPR_BINARY@6464..6482
- LHS_EXPR@6464..6465
- EXPR_VAR@6464..6465
- NAME@6464..6465
- IDENT@6464..6465 "i"
- WHITESPACE@6465..6466 " "
- GE@6466..6468 ">="
- WHITESPACE@6468..6469 " "
- EXPR_APPLY@6469..6482
- EXPR_INDEX@6469..6479
- EXPR_VAR@6469..6472
- NAME@6469..6472
- IDENT@6469..6472 "std"
- DOT@6472..6473 "."
- NAME@6473..6479
- IDENT@6473..6479 "length"
- ARGS_DESC@6479..6482
- L_PAREN@6479..6480 "("
- ARG@6480..6481
- EXPR_VAR@6480..6481
- NAME@6480..6481
- IDENT@6480..6481 "a"
- R_PAREN@6481..6482 ")"
- WHITESPACE@6482..6483 " "
- THEN_KW@6483..6487 "then"
- WHITESPACE@6487..6496 "\n "
- TRUE_EXPR@6496..6507
- EXPR_BINARY@6496..6507
- LHS_EXPR@6496..6499
- EXPR_VAR@6496..6499
- NAME@6496..6499
- IDENT@6496..6499 "acc"
- WHITESPACE@6499..6500 " "
- PLUS@6500..6501 "+"
- WHITESPACE@6501..6502 " "
- EXPR_SLICE@6502..6507
- EXPR_VAR@6502..6503
- NAME@6502..6503
- IDENT@6502..6503 "b"
- SLICE_DESC@6503..6507
- L_BRACK@6503..6504 "["
- EXPR_VAR@6504..6505
- NAME@6504..6505
- IDENT@6504..6505 "j"
- COLON@6505..6506 ":"
- R_BRACK@6506..6507 "]"
- WHITESPACE@6507..6514 "\n "
- ELSE_KW@6514..6518 "else"
- WHITESPACE@6518..6519 " "
- FALSE_EXPR@6519..6874
- EXPR_IF_THEN_ELSE@6519..6874
- IF_KW@6519..6521 "if"
- WHITESPACE@6521..6522 " "
- EXPR_BINARY@6522..6540
- LHS_EXPR@6522..6523
- EXPR_VAR@6522..6523
- NAME@6522..6523
- IDENT@6522..6523 "j"
- WHITESPACE@6523..6524 " "
- GE@6524..6526 ">="
- WHITESPACE@6526..6527 " "
- EXPR_APPLY@6527..6540
- EXPR_INDEX@6527..6537
- EXPR_VAR@6527..6530
- NAME@6527..6530
- IDENT@6527..6530 "std"
- DOT@6530..6531 "."
- NAME@6531..6537
- IDENT@6531..6537 "length"
- ARGS_DESC@6537..6540
- L_PAREN@6537..6538 "("
- ARG@6538..6539
- EXPR_VAR@6538..6539
- NAME@6538..6539
- IDENT@6538..6539 "b"
- R_PAREN@6539..6540 ")"
- WHITESPACE@6540..6541 " "
- THEN_KW@6541..6545 "then"
- WHITESPACE@6545..6554 "\n "
- TRUE_EXPR@6554..6565
- EXPR_BINARY@6554..6565
- LHS_EXPR@6554..6557
- EXPR_VAR@6554..6557
- NAME@6554..6557
- IDENT@6554..6557 "acc"
- WHITESPACE@6557..6558 " "
- PLUS@6558..6559 "+"
- WHITESPACE@6559..6560 " "
- EXPR_SLICE@6560..6565
- EXPR_VAR@6560..6561
- NAME@6560..6561
- IDENT@6560..6561 "a"
- SLICE_DESC@6561..6565
- L_BRACK@6561..6562 "["
- EXPR_VAR@6562..6563
- NAME@6562..6563
- IDENT@6562..6563 "i"
- COLON@6563..6564 ":"
- R_BRACK@6564..6565 "]"
- WHITESPACE@6565..6572 "\n "
- ELSE_KW@6572..6576 "else"
- WHITESPACE@6576..6585 "\n "
- STMT_LOCAL@6585..6607
- LOCAL_KW@6585..6590 "local"
- WHITESPACE@6590..6591 " "
- BIND_DESTRUCT@6591..6606
- DESTRUCT_FULL@6591..6593
- NAME@6591..6593
- IDENT@6591..6593 "ak"
- WHITESPACE@6593..6594 " "
- ASSIGN@6594..6595 "="
- WHITESPACE@6595..6596 " "
- EXPR_APPLY@6596..6606
- EXPR_VAR@6596..6600
- NAME@6596..6600
- IDENT@6596..6600 "keyF"
- ARGS_DESC@6600..6606
- L_PAREN@6600..6601 "("
- ARG@6601..6605
- EXPR_INDEX_EXPR@6601..6605
- LHS_EXPR@6601..6602
- EXPR_VAR@6601..6602
- NAME@6601..6602
- IDENT@6601..6602 "a"
- L_BRACK@6602..6603 "["
- EXPR_VAR@6603..6604
- NAME@6603..6604
- IDENT@6603..6604 "i"
- R_BRACK@6604..6605 "]"
- R_PAREN@6605..6606 ")"
- SEMI@6606..6607 ";"
- WHITESPACE@6607..6616 "\n "
- STMT_LOCAL@6616..6638
- LOCAL_KW@6616..6621 "local"
- WHITESPACE@6621..6622 " "
- BIND_DESTRUCT@6622..6637
- DESTRUCT_FULL@6622..6624
- NAME@6622..6624
- IDENT@6622..6624 "bk"
- WHITESPACE@6624..6625 " "
- ASSIGN@6625..6626 "="
- WHITESPACE@6626..6627 " "
- EXPR_APPLY@6627..6637
- EXPR_VAR@6627..6631
- NAME@6627..6631
- IDENT@6627..6631 "keyF"
- ARGS_DESC@6631..6637
- L_PAREN@6631..6632 "("
- ARG@6632..6636
- EXPR_INDEX_EXPR@6632..6636
- LHS_EXPR@6632..6633
- EXPR_VAR@6632..6633
- NAME@6632..6633
- IDENT@6632..6633 "b"
- L_BRACK@6633..6634 "["
- EXPR_VAR@6634..6635
- NAME@6634..6635
- IDENT@6634..6635 "j"
- R_BRACK@6635..6636 "]"
- R_PAREN@6636..6637 ")"
- SEMI@6637..6638 ";"
- WHITESPACE@6638..6647 "\n "
- FALSE_EXPR@6647..6874
- EXPR_IF_THEN_ELSE@6647..6874
- IF_KW@6647..6649 "if"
- WHITESPACE@6649..6650 " "
- EXPR_BINARY@6650..6658
- LHS_EXPR@6650..6652
- EXPR_VAR@6650..6652
- NAME@6650..6652
- IDENT@6650..6652 "ak"
- WHITESPACE@6652..6653 " "
- EQ@6653..6655 "=="
- WHITESPACE@6655..6656 " "
- EXPR_VAR@6656..6658
- NAME@6656..6658
- IDENT@6656..6658 "bk"
- WHITESPACE@6658..6659 " "
- THEN_KW@6659..6663 "then"
- WHITESPACE@6663..6674 "\n "
- TRUE_EXPR@6674..6722
- EXPR_APPLY@6674..6722
- EXPR_VAR@6674..6677
- NAME@6674..6677
- IDENT@6674..6677 "aux"
- ARGS_DESC@6677..6722
- L_PAREN@6677..6678 "("
- ARG@6678..6679
- EXPR_VAR@6678..6679
- NAME@6678..6679
- IDENT@6678..6679 "a"
- COMMA@6679..6680 ","
- WHITESPACE@6680..6681 " "
- ARG@6681..6682
- EXPR_VAR@6681..6682
- NAME@6681..6682
- IDENT@6681..6682 "b"
- COMMA@6682..6683 ","
- WHITESPACE@6683..6684 " "
- ARG@6684..6689
- EXPR_BINARY@6684..6689
- LHS_EXPR@6684..6685
- EXPR_VAR@6684..6685
- NAME@6684..6685
- IDENT@6684..6685 "i"
- WHITESPACE@6685..6686 " "
- PLUS@6686..6687 "+"
- WHITESPACE@6687..6688 " "
- EXPR_NUMBER@6688..6689
- FLOAT@6688..6689 "1"
- COMMA@6689..6690 ","
- WHITESPACE@6690..6691 " "
- ARG@6691..6696
- EXPR_BINARY@6691..6696
- LHS_EXPR@6691..6692
- EXPR_VAR@6691..6692
- NAME@6691..6692
- IDENT@6691..6692 "j"
- WHITESPACE@6692..6693 " "
- PLUS@6693..6694 "+"
- WHITESPACE@6694..6695 " "
- EXPR_NUMBER@6695..6696
- FLOAT@6695..6696 "1"
- COMMA@6696..6697 ","
- WHITESPACE@6697..6698 " "
- ARG@6698..6710
- EXPR_BINARY@6698..6710
- LHS_EXPR@6698..6701
- EXPR_VAR@6698..6701
- NAME@6698..6701
- IDENT@6698..6701 "acc"
+ THEN_KW@3935..3939 "then"
+ WHITESPACE@3939..3946 "\n "
+ TRUE_EXPR@3946..4014
+ EXPR@3946..4014
+ EXPR_ERROR@3946..4014
+ ERROR_KW@3946..3951 "error"
+ WHITESPACE@3951..3952 " "
+ EXPR@3952..4014
+ EXPR_BINARY@3952..4014
+ EXPR@3952..3996
+ EXPR_STRING@3952..3996
+ STRING_SINGLE@3952..3996 "'manifestYamlStream o ..."
+ WHITESPACE@3996..3997 " "
+ PLUS@3997..3998 "+"
+ WHITESPACE@3998..3999 " "
+ EXPR@3999..4014
+ EXPR_VAR@3999..4002
+ NAME@3999..4002
+ IDENT@3999..4002 "std"
+ SUFFIX_INDEX@4002..4007
+ DOT@4002..4003 "."
+ NAME@4003..4007
+ IDENT@4003..4007 "type"
+ SUFFIX_APPLY@4007..4014
+ ARGS_DESC@4007..4014
+ L_PAREN@4007..4008 "("
+ ARG@4008..4013
+ EXPR@4008..4013
+ EXPR_VAR@4008..4013
+ NAME@4008..4013
+ IDENT@4008..4013 "value"
+ R_PAREN@4013..4014 ")"
+ WHITESPACE@4014..4019 "\n "
+ ELSE_KW@4019..4023 "else"
+ WHITESPACE@4023..4030 "\n "
+ FALSE_EXPR@4030..4197
+ EXPR@4030..4197
+ EXPR_BINARY@4030..4197
+ EXPR@4030..4152
+ EXPR_BINARY@4030..4152
+ EXPR@4030..4037
+ EXPR_STRING@4030..4037
+ STRING_SINGLE@4030..4037 "'---\\n'"
+ WHITESPACE@4037..4038 " "
+ PLUS@4038..4039 "+"
+ WHITESPACE@4039..4040 " "
+ EXPR@4040..4152
+ EXPR_VAR@4040..4043
+ NAME@4040..4043
+ IDENT@4040..4043 "std"
+ SUFFIX_INDEX@4043..4048
+ DOT@4043..4044 "."
+ NAME@4044..4048
+ IDENT@4044..4048 "join"
+ SUFFIX_APPLY@4048..4152
+ ARGS_DESC@4048..4152
+ L_PAREN@4048..4049 "("
+ WHITESPACE@4049..4058 "\n "
+ ARG@4058..4067
+ EXPR@4058..4067
+ EXPR_STRING@4058..4067
+ STRING_SINGLE@4058..4067 "'\\n---\\n'"
+ COMMA@4067..4068 ","
+ WHITESPACE@4068..4069 " "
+ ARG@4069..4144
+ EXPR@4069..4144
+ EXPR_ARRAY_COMP@4069..4144
+ L_BRACK@4069..4070 "["
+ EXPR@4070..4128
+ EXPR_VAR@4070..4073
+ NAME@4070..4073
+ IDENT@4070..4073 "std"
+ SUFFIX_INDEX@4073..4089
+ DOT@4073..4074 "."
+ NAME@4074..4089
+ IDENT@4074..4089 "manifestYamlDoc"
+ SUFFIX_APPLY@4089..4128
+ ARGS_DESC@4089..4128
+ L_PAREN@4089..4090 "("
+ ARG@4090..4091
+ EXPR@4090..4091
+ EXPR_VAR@4090..4091
+ NAME@4090..4091
+ IDENT@4090..4091 "e"
+ COMMA@4091..4092 ","
+ WHITESPACE@4092..4093 " "
+ ARG@4093..4115
+ EXPR@4093..4115
+ EXPR_VAR@4093..4115
+ NAME@4093..4115
+ IDENT@4093..4115 "indent_array_in_object"
+ COMMA@4115..4116 ","
+ WHITESPACE@4116..4117 " "
+ ARG@4117..4127
+ EXPR@4117..4127
+ EXPR_VAR@4117..4127
+ NAME@4117..4127
+ IDENT@4117..4127 "quote_keys"
+ R_PAREN@4127..4128 ")"
+ WHITESPACE@4128..4129 " "
+ FOR_SPEC@4129..4143
+ FOR_KW@4129..4132 "for"
+ WHITESPACE@4132..4133 " "
+ DESTRUCT_FULL@4133..4134
+ NAME@4133..4134
+ IDENT@4133..4134 "e"
+ WHITESPACE@4134..4135 " "
+ IN_KW@4135..4137 "in"
+ WHITESPACE@4137..4138 " "
+ EXPR@4138..4143
+ EXPR_VAR@4138..4143
+ NAME@4138..4143
+ IDENT@4138..4143 "value"
+ R_BRACK@4143..4144 "]"
+ WHITESPACE@4144..4151 "\n "
+ R_PAREN@4151..4152 ")"
+ WHITESPACE@4152..4153 " "
+ PLUS@4153..4154 "+"
+ WHITESPACE@4154..4155 " "
+ EXPR@4155..4197
+ EXPR_IF_THEN_ELSE@4155..4197
+ IF_KW@4155..4157 "if"
+ WHITESPACE@4157..4158 " "
+ EXPR@4158..4172
+ EXPR_VAR@4158..4172
+ NAME@4158..4172
+ IDENT@4158..4172 "c_document_end"
+ WHITESPACE@4172..4173 " "
+ THEN_KW@4173..4177 "then"
+ WHITESPACE@4177..4178 " "
+ TRUE_EXPR@4178..4187
+ EXPR@4178..4187
+ EXPR_STRING@4178..4187
+ STRING_SINGLE@4178..4187 "'\\n...\\n'"
+ WHITESPACE@4187..4188 " "
+ ELSE_KW@4188..4192 "else"
+ WHITESPACE@4192..4193 " "
+ FALSE_EXPR@4193..4197
+ EXPR@4193..4197
+ EXPR_STRING@4193..4197
+ STRING_SINGLE@4193..4197 "'\\n'"
+ COMMA@4197..4198 ","
+ WHITESPACE@4198..4202 "\n\n "
+ MEMBER_FIELD_METHOD@4202..4858
+ FIELD_NAME_FIXED@4202..4216
+ NAME@4202..4216
+ IDENT@4202..4216 "manifestPython"
+ PARAMS_DESC@4216..4219
+ L_PAREN@4216..4217 "("
+ PARAM@4217..4218
+ DESTRUCT_FULL@4217..4218
+ NAME@4217..4218
+ IDENT@4217..4218 "v"
+ R_PAREN@4218..4219 ")"
+ COLONCOLON@4219..4221 "::"
+ WHITESPACE@4221..4226 "\n "
+ EXPR@4226..4858
+ EXPR_IF_THEN_ELSE@4226..4858
+ IF_KW@4226..4228 "if"
+ WHITESPACE@4228..4229 " "
+ EXPR@4229..4244
+ EXPR_VAR@4229..4232
+ NAME@4229..4232
+ IDENT@4229..4232 "std"
+ SUFFIX_INDEX@4232..4241
+ DOT@4232..4233 "."
+ NAME@4233..4241
+ IDENT@4233..4241 "isObject"
+ SUFFIX_APPLY@4241..4244
+ ARGS_DESC@4241..4244
+ L_PAREN@4241..4242 "("
+ ARG@4242..4243
+ EXPR@4242..4243
+ EXPR_VAR@4242..4243
+ NAME@4242..4243
+ IDENT@4242..4243 "v"
+ R_PAREN@4243..4244 ")"
+ WHITESPACE@4244..4245 " "
+ THEN_KW@4245..4249 "then"
+ WHITESPACE@4249..4256 "\n "
+ TRUE_EXPR@4256..4431
+ EXPR@4256..4431
+ STMT_LOCAL@4256..4391
+ LOCAL_KW@4256..4261 "local"
+ WHITESPACE@4261..4262 " "
+ BIND_DESTRUCT@4262..4390
+ DESTRUCT_FULL@4262..4268
+ NAME@4262..4268
+ IDENT@4262..4268 "fields"
+ WHITESPACE@4268..4269 " "
+ ASSIGN@4269..4270 "="
+ WHITESPACE@4270..4271 " "
+ EXPR@4271..4390
+ EXPR_ARRAY_COMP@4271..4390
+ L_BRACK@4271..4272 "["
+ WHITESPACE@4272..4281 "\n "
+ EXPR@4281..4345
+ EXPR_BINARY@4281..4345
+ EXPR@4281..4289
+ EXPR_STRING@4281..4289
+ STRING_SINGLE@4281..4289 "'%s: %s'"
+ WHITESPACE@4289..4290 " "
+ MODULO@4290..4291 "%"
+ WHITESPACE@4291..4292 " "
+ EXPR@4292..4345
+ EXPR_ARRAY@4292..4345
+ L_BRACK@4292..4293 "["
+ EXPR@4293..4318
+ EXPR_VAR@4293..4296
+ NAME@4293..4296
+ IDENT@4293..4296 "std"
+ SUFFIX_INDEX@4296..4315
+ DOT@4296..4297 "."
+ NAME@4297..4315
+ IDENT@4297..4315 "escapeStringPython"
+ SUFFIX_APPLY@4315..4318
+ ARGS_DESC@4315..4318
+ L_PAREN@4315..4316 "("
+ ARG@4316..4317
+ EXPR@4316..4317
+ EXPR_VAR@4316..4317
+ NAME@4316..4317
+ IDENT@4316..4317 "k"
+ R_PAREN@4317..4318 ")"
+ COMMA@4318..4319 ","
+ WHITESPACE@4319..4320 " "
+ EXPR@4320..4344
+ EXPR_VAR@4320..4323
+ NAME@4320..4323
+ IDENT@4320..4323 "std"
+ SUFFIX_INDEX@4323..4338
+ DOT@4323..4324 "."
+ NAME@4324..4338
+ IDENT@4324..4338 "manifestPython"
+ SUFFIX_APPLY@4338..4344
+ ARGS_DESC@4338..4344
+ L_PAREN@4338..4339 "("
+ ARG@4339..4343
+ EXPR@4339..4343
+ EXPR_VAR@4339..4340
+ NAME@4339..4340
+ IDENT@4339..4340 "v"
+ SUFFIX_INDEX_EXPR@4340..4343
+ L_BRACK@4340..4341 "["
+ EXPR@4341..4342
+ EXPR_VAR@4341..4342
+ NAME@4341..4342
+ IDENT@4341..4342 "k"
+ R_BRACK@4342..4343 "]"
+ R_PAREN@4343..4344 ")"
+ R_BRACK@4344..4345 "]"
+ WHITESPACE@4345..4354 "\n "
+ FOR_SPEC@4354..4382
+ FOR_KW@4354..4357 "for"
+ WHITESPACE@4357..4358 " "
+ DESTRUCT_FULL@4358..4359
+ NAME@4358..4359
+ IDENT@4358..4359 "k"
+ WHITESPACE@4359..4360 " "
+ IN_KW@4360..4362 "in"
+ WHITESPACE@4362..4363 " "
+ EXPR@4363..4382
+ EXPR_VAR@4363..4366
+ NAME@4363..4366
+ IDENT@4363..4366 "std"
+ SUFFIX_INDEX@4366..4379
+ DOT@4366..4367 "."
+ NAME@4367..4379
+ IDENT@4367..4379 "objectFields"
+ SUFFIX_APPLY@4379..4382
+ ARGS_DESC@4379..4382
+ L_PAREN@4379..4380 "("
+ ARG@4380..4381
+ EXPR@4380..4381
+ EXPR_VAR@4380..4381
+ NAME@4380..4381
+ IDENT@4380..4381 "v"
+ R_PAREN@4381..4382 ")"
+ WHITESPACE@4382..4389 "\n "
+ R_BRACK@4389..4390 "]"
+ SEMI@4390..4391 ";"
+ WHITESPACE@4391..4398 "\n "
+ EXPR_BINARY@4398..4431
+ EXPR@4398..4404
+ EXPR_STRING@4398..4404
+ STRING_SINGLE@4398..4404 "'{%s}'"
+ WHITESPACE@4404..4405 " "
+ MODULO@4405..4406 "%"
+ WHITESPACE@4406..4407 " "
+ EXPR@4407..4431
+ EXPR_ARRAY@4407..4431
+ L_BRACK@4407..4408 "["
+ EXPR@4408..4430
+ EXPR_VAR@4408..4411
+ NAME@4408..4411
+ IDENT@4408..4411 "std"
+ SUFFIX_INDEX@4411..4416
+ DOT@4411..4412 "."
+ NAME@4412..4416
+ IDENT@4412..4416 "join"
+ SUFFIX_APPLY@4416..4430
+ ARGS_DESC@4416..4430
+ L_PAREN@4416..4417 "("
+ ARG@4417..4421
+ EXPR@4417..4421
+ EXPR_STRING@4417..4421
+ STRING_SINGLE@4417..4421 "', '"
+ COMMA@4421..4422 ","
+ WHITESPACE@4422..4423 " "
+ ARG@4423..4429
+ EXPR@4423..4429
+ EXPR_VAR@4423..4429
+ NAME@4423..4429
+ IDENT@4423..4429 "fields"
+ R_PAREN@4429..4430 ")"
+ R_BRACK@4430..4431 "]"
+ WHITESPACE@4431..4436 "\n "
+ ELSE_KW@4436..4440 "else"
+ WHITESPACE@4440..4441 " "
+ FALSE_EXPR@4441..4858
+ EXPR@4441..4858
+ EXPR_IF_THEN_ELSE@4441..4858
+ IF_KW@4441..4443 "if"
+ WHITESPACE@4443..4444 " "
+ EXPR@4444..4458
+ EXPR_VAR@4444..4447
+ NAME@4444..4447
+ IDENT@4444..4447 "std"
+ SUFFIX_INDEX@4447..4455
+ DOT@4447..4448 "."
+ NAME@4448..4455
+ IDENT@4448..4455 "isArray"
+ SUFFIX_APPLY@4455..4458
+ ARGS_DESC@4455..4458
+ L_PAREN@4455..4456 "("
+ ARG@4456..4457
+ EXPR@4456..4457
+ EXPR_VAR@4456..4457
+ NAME@4456..4457
+ IDENT@4456..4457 "v"
+ R_PAREN@4457..4458 ")"
+ WHITESPACE@4458..4459 " "
+ THEN_KW@4459..4463 "then"
+ WHITESPACE@4463..4470 "\n "
+ TRUE_EXPR@4470..4533
+ EXPR@4470..4533
+ EXPR_BINARY@4470..4533
+ EXPR@4470..4476
+ EXPR_STRING@4470..4476
+ STRING_SINGLE@4470..4476 "'[%s]'"
+ WHITESPACE@4476..4477 " "
+ MODULO@4477..4478 "%"
+ WHITESPACE@4478..4479 " "
+ EXPR@4479..4533
+ EXPR_ARRAY@4479..4533
+ L_BRACK@4479..4480 "["
+ EXPR@4480..4532
+ EXPR_VAR@4480..4483
+ NAME@4480..4483
+ IDENT@4480..4483 "std"
+ SUFFIX_INDEX@4483..4488
+ DOT@4483..4484 "."
+ NAME@4484..4488
+ IDENT@4484..4488 "join"
+ SUFFIX_APPLY@4488..4532
+ ARGS_DESC@4488..4532
+ L_PAREN@4488..4489 "("
+ ARG@4489..4493
+ EXPR@4489..4493
+ EXPR_STRING@4489..4493
+ STRING_SINGLE@4489..4493 "', '"
+ COMMA@4493..4494 ","
+ WHITESPACE@4494..4495 " "
+ ARG@4495..4531
+ EXPR@4495..4531
+ EXPR_ARRAY_COMP@4495..4531
+ L_BRACK@4495..4496 "["
+ EXPR@4496..4518
+ EXPR_VAR@4496..4499
+ NAME@4496..4499
+ IDENT@4496..4499 "std"
+ SUFFIX_INDEX@4499..4514
+ DOT@4499..4500 "."
+ NAME@4500..4514
+ IDENT@4500..4514 "manifestPython"
+ SUFFIX_APPLY@4514..4518
+ ARGS_DESC@4514..4518
+ L_PAREN@4514..4515 "("
+ ARG@4515..4517
+ EXPR@4515..4517
+ EXPR_VAR@4515..4517
+ NAME@4515..4517
+ IDENT@4515..4517 "v2"
+ R_PAREN@4517..4518 ")"
+ WHITESPACE@4518..4519 " "
+ FOR_SPEC@4519..4530
+ FOR_KW@4519..4522 "for"
+ WHITESPACE@4522..4523 " "
+ DESTRUCT_FULL@4523..4525
+ NAME@4523..4525
+ IDENT@4523..4525 "v2"
+ WHITESPACE@4525..4526 " "
+ IN_KW@4526..4528 "in"
+ WHITESPACE@4528..4529 " "
+ EXPR@4529..4530
+ EXPR_VAR@4529..4530
+ NAME@4529..4530
+ IDENT@4529..4530 "v"
+ R_BRACK@4530..4531 "]"
+ R_PAREN@4531..4532 ")"
+ R_BRACK@4532..4533 "]"
+ WHITESPACE@4533..4538 "\n "
+ ELSE_KW@4538..4542 "else"
+ WHITESPACE@4542..4543 " "
+ FALSE_EXPR@4543..4858
+ EXPR@4543..4858
+ EXPR_IF_THEN_ELSE@4543..4858
+ IF_KW@4543..4545 "if"
+ WHITESPACE@4545..4546 " "
+ EXPR@4546..4561
+ EXPR_VAR@4546..4549
+ NAME@4546..4549
+ IDENT@4546..4549 "std"
+ SUFFIX_INDEX@4549..4558
+ DOT@4549..4550 "."
+ NAME@4550..4558
+ IDENT@4550..4558 "isString"
+ SUFFIX_APPLY@4558..4561
+ ARGS_DESC@4558..4561
+ L_PAREN@4558..4559 "("
+ ARG@4559..4560
+ EXPR@4559..4560
+ EXPR_VAR@4559..4560
+ NAME@4559..4560
+ IDENT@4559..4560 "v"
+ R_PAREN@4560..4561 ")"
+ WHITESPACE@4561..4562 " "
+ THEN_KW@4562..4566 "then"
+ WHITESPACE@4566..4573 "\n "
+ TRUE_EXPR@4573..4607
+ EXPR@4573..4607
+ EXPR_BINARY@4573..4607
+ EXPR@4573..4577
+ EXPR_STRING@4573..4577
+ STRING_SINGLE@4573..4577 "'%s'"
+ WHITESPACE@4577..4578 " "
+ MODULO@4578..4579 "%"
+ WHITESPACE@4579..4580 " "
+ EXPR@4580..4607
+ EXPR_ARRAY@4580..4607
+ L_BRACK@4580..4581 "["
+ EXPR@4581..4606
+ EXPR_VAR@4581..4584
+ NAME@4581..4584
+ IDENT@4581..4584 "std"
+ SUFFIX_INDEX@4584..4603
+ DOT@4584..4585 "."
+ NAME@4585..4603
+ IDENT@4585..4603 "escapeStringPython"
+ SUFFIX_APPLY@4603..4606
+ ARGS_DESC@4603..4606
+ L_PAREN@4603..4604 "("
+ ARG@4604..4605
+ EXPR@4604..4605
+ EXPR_VAR@4604..4605
+ NAME@4604..4605
+ IDENT@4604..4605 "v"
+ R_PAREN@4605..4606 ")"
+ R_BRACK@4606..4607 "]"
+ WHITESPACE@4607..4612 "\n "
+ ELSE_KW@4612..4616 "else"
+ WHITESPACE@4616..4617 " "
+ FALSE_EXPR@4617..4858
+ EXPR@4617..4858
+ EXPR_IF_THEN_ELSE@4617..4858
+ IF_KW@4617..4619 "if"
+ WHITESPACE@4619..4620 " "
+ EXPR@4620..4637
+ EXPR_VAR@4620..4623
+ NAME@4620..4623
+ IDENT@4620..4623 "std"
+ SUFFIX_INDEX@4623..4634
+ DOT@4623..4624 "."
+ NAME@4624..4634
+ IDENT@4624..4634 "isFunction"
+ SUFFIX_APPLY@4634..4637
+ ARGS_DESC@4634..4637
+ L_PAREN@4634..4635 "("
+ ARG@4635..4636
+ EXPR@4635..4636
+ EXPR_VAR@4635..4636
+ NAME@4635..4636
+ IDENT@4635..4636 "v"
+ R_PAREN@4636..4637 ")"
+ WHITESPACE@4637..4638 " "
+ THEN_KW@4638..4642 "then"
+ WHITESPACE@4642..4649 "\n "
+ TRUE_EXPR@4649..4681
+ EXPR@4649..4681
+ EXPR_ERROR@4649..4681
+ ERROR_KW@4649..4654 "error"
+ WHITESPACE@4654..4655 " "
+ EXPR@4655..4681
+ EXPR_STRING@4655..4681
+ STRING_SINGLE@4655..4681 "'cannot manifest func ..."
+ WHITESPACE@4681..4686 "\n "
+ ELSE_KW@4686..4690 "else"
+ WHITESPACE@4690..4691 " "
+ FALSE_EXPR@4691..4858
+ EXPR@4691..4858
+ EXPR_IF_THEN_ELSE@4691..4858
+ IF_KW@4691..4693 "if"
+ WHITESPACE@4693..4694 " "
+ EXPR@4694..4709
+ EXPR_VAR@4694..4697
+ NAME@4694..4697
+ IDENT@4694..4697 "std"
+ SUFFIX_INDEX@4697..4706
+ DOT@4697..4698 "."
+ NAME@4698..4706
+ IDENT@4698..4706 "isNumber"
+ SUFFIX_APPLY@4706..4709
+ ARGS_DESC@4706..4709
+ L_PAREN@4706..4707 "("
+ ARG@4707..4708
+ EXPR@4707..4708
+ EXPR_VAR@4707..4708
+ NAME@4707..4708
+ IDENT@4707..4708 "v"
+ R_PAREN@4708..4709 ")"
+ WHITESPACE@4709..4710 " "
+ THEN_KW@4710..4714 "then"
+ WHITESPACE@4714..4721 "\n "
+ TRUE_EXPR@4721..4736
+ EXPR@4721..4736
+ EXPR_VAR@4721..4724
+ NAME@4721..4724
+ IDENT@4721..4724 "std"
+ SUFFIX_INDEX@4724..4733
+ DOT@4724..4725 "."
+ NAME@4725..4733
+ IDENT@4725..4733 "toString"
+ SUFFIX_APPLY@4733..4736
+ ARGS_DESC@4733..4736
+ L_PAREN@4733..4734 "("
+ ARG@4734..4735
+ EXPR@4734..4735
+ EXPR_VAR@4734..4735
+ NAME@4734..4735
+ IDENT@4734..4735 "v"
+ R_PAREN@4735..4736 ")"
+ WHITESPACE@4736..4741 "\n "
+ ELSE_KW@4741..4745 "else"
+ WHITESPACE@4745..4746 " "
+ FALSE_EXPR@4746..4858
+ EXPR@4746..4858
+ EXPR_IF_THEN_ELSE@4746..4858
+ IF_KW@4746..4748 "if"
+ WHITESPACE@4748..4749 " "
+ EXPR@4749..4758
+ EXPR_BINARY@4749..4758
+ EXPR@4749..4750
+ EXPR_VAR@4749..4750
+ NAME@4749..4750
+ IDENT@4749..4750 "v"
+ WHITESPACE@4750..4751 " "
+ EQ@4751..4753 "=="
+ WHITESPACE@4753..4754 " "
+ EXPR@4754..4758
+ EXPR_LITERAL@4754..4758
+ TRUE_KW@4754..4758 "true"
+ WHITESPACE@4758..4759 " "
+ THEN_KW@4759..4763 "then"
+ WHITESPACE@4763..4770 "\n "
+ TRUE_EXPR@4770..4776
+ EXPR@4770..4776
+ EXPR_STRING@4770..4776
+ STRING_SINGLE@4770..4776 "'True'"
+ WHITESPACE@4776..4781 "\n "
+ ELSE_KW@4781..4785 "else"
+ WHITESPACE@4785..4786 " "
+ FALSE_EXPR@4786..4858
+ EXPR@4786..4858
+ EXPR_IF_THEN_ELSE@4786..4858
+ IF_KW@4786..4788 "if"
+ WHITESPACE@4788..4789 " "
+ EXPR@4789..4799
+ EXPR_BINARY@4789..4799
+ EXPR@4789..4790
+ EXPR_VAR@4789..4790
+ NAME@4789..4790
+ IDENT@4789..4790 "v"
+ WHITESPACE@4790..4791 " "
+ EQ@4791..4793 "=="
+ WHITESPACE@4793..4794 " "
+ EXPR@4794..4799
+ EXPR_LITERAL@4794..4799
+ FALSE_KW@4794..4799 "false"
+ WHITESPACE@4799..4800 " "
+ THEN_KW@4800..4804 "then"
+ WHITESPACE@4804..4811 "\n "
+ TRUE_EXPR@4811..4818
+ EXPR@4811..4818
+ EXPR_STRING@4811..4818
+ STRING_SINGLE@4811..4818 "'False'"
+ WHITESPACE@4818..4823 "\n "
+ ELSE_KW@4823..4827 "else"
+ WHITESPACE@4827..4828 " "
+ FALSE_EXPR@4828..4858
+ EXPR@4828..4858
+ EXPR_IF_THEN_ELSE@4828..4858
+ IF_KW@4828..4830 "if"
+ WHITESPACE@4830..4831 " "
+ EXPR@4831..4840
+ EXPR_BINARY@4831..4840
+ EXPR@4831..4832
+ EXPR_VAR@4831..4832
+ NAME@4831..4832
+ IDENT@4831..4832 "v"
+ WHITESPACE@4832..4833 " "
+ EQ@4833..4835 "=="
+ WHITESPACE@4835..4836 " "
+ EXPR@4836..4840
+ EXPR_LITERAL@4836..4840
+ NULL_KW@4836..4840 "null"
+ WHITESPACE@4840..4841 " "
+ THEN_KW@4841..4845 "then"
+ WHITESPACE@4845..4852 "\n "
+ TRUE_EXPR@4852..4858
+ EXPR@4852..4858
+ EXPR_STRING@4852..4858
+ STRING_SINGLE@4852..4858 "'None'"
+ COMMA@4858..4859 ","
+ WHITESPACE@4859..4863 "\n\n "
+ MEMBER_FIELD_METHOD@4863..5018
+ FIELD_NAME_FIXED@4863..4881
+ NAME@4863..4881
+ IDENT@4863..4881 "manifestPythonVars"
+ PARAMS_DESC@4881..4887
+ L_PAREN@4881..4882 "("
+ PARAM@4882..4886
+ DESTRUCT_FULL@4882..4886
+ NAME@4882..4886
+ IDENT@4882..4886 "conf"
+ R_PAREN@4886..4887 ")"
+ COLONCOLON@4887..4889 "::"
+ WHITESPACE@4889..4894 "\n "
+ EXPR@4894..5018
+ STMT_LOCAL@4894..4986
+ LOCAL_KW@4894..4899 "local"
+ WHITESPACE@4899..4900 " "
+ BIND_DESTRUCT@4900..4985
+ DESTRUCT_FULL@4900..4904
+ NAME@4900..4904
+ IDENT@4900..4904 "vars"
+ WHITESPACE@4904..4905 " "
+ ASSIGN@4905..4906 "="
+ WHITESPACE@4906..4907 " "
+ EXPR@4907..4985
+ EXPR_ARRAY_COMP@4907..4985
+ L_BRACK@4907..4908 "["
+ EXPR@4908..4952
+ EXPR_BINARY@4908..4952
+ EXPR@4908..4917
+ EXPR_STRING@4908..4917
+ STRING_SINGLE@4908..4917 "'%s = %s'"
+ WHITESPACE@4917..4918 " "
+ MODULO@4918..4919 "%"
+ WHITESPACE@4919..4920 " "
+ EXPR@4920..4952
+ EXPR_ARRAY@4920..4952
+ L_BRACK@4920..4921 "["
+ EXPR@4921..4922
+ EXPR_VAR@4921..4922
+ NAME@4921..4922
+ IDENT@4921..4922 "k"
+ COMMA@4922..4923 ","
+ WHITESPACE@4923..4924 " "
+ EXPR@4924..4951
+ EXPR_VAR@4924..4927
+ NAME@4924..4927
+ IDENT@4924..4927 "std"
+ SUFFIX_INDEX@4927..4942
+ DOT@4927..4928 "."
+ NAME@4928..4942
+ IDENT@4928..4942 "manifestPython"
+ SUFFIX_APPLY@4942..4951
+ ARGS_DESC@4942..4951
+ L_PAREN@4942..4943 "("
+ ARG@4943..4950
+ EXPR@4943..4950
+ EXPR_VAR@4943..4947
+ NAME@4943..4947
+ IDENT@4943..4947 "conf"
+ SUFFIX_INDEX_EXPR@4947..4950
+ L_BRACK@4947..4948 "["
+ EXPR@4948..4949
+ EXPR_VAR@4948..4949
+ NAME@4948..4949
+ IDENT@4948..4949 "k"
+ R_BRACK@4949..4950 "]"
+ R_PAREN@4950..4951 ")"
+ R_BRACK@4951..4952 "]"
+ WHITESPACE@4952..4953 " "
+ FOR_SPEC@4953..4984
+ FOR_KW@4953..4956 "for"
+ WHITESPACE@4956..4957 " "
+ DESTRUCT_FULL@4957..4958
+ NAME@4957..4958
+ IDENT@4957..4958 "k"
+ WHITESPACE@4958..4959 " "
+ IN_KW@4959..4961 "in"
+ WHITESPACE@4961..4962 " "
+ EXPR@4962..4984
+ EXPR_VAR@4962..4965
+ NAME@4962..4965
+ IDENT@4962..4965 "std"
+ SUFFIX_INDEX@4965..4978
+ DOT@4965..4966 "."
+ NAME@4966..4978
+ IDENT@4966..4978 "objectFields"
+ SUFFIX_APPLY@4978..4984
+ ARGS_DESC@4978..4984
+ L_PAREN@4978..4979 "("
+ ARG@4979..4983
+ EXPR@4979..4983
+ EXPR_VAR@4979..4983
+ NAME@4979..4983
+ IDENT@4979..4983 "conf"
+ R_PAREN@4983..4984 ")"
+ R_BRACK@4984..4985 "]"
+ SEMI@4985..4986 ";"
+ WHITESPACE@4986..4991 "\n "
+ EXPR_VAR@4991..4994
+ NAME@4991..4994
+ IDENT@4991..4994 "std"
+ SUFFIX_INDEX@4994..4999
+ DOT@4994..4995 "."
+ NAME@4995..4999
+ IDENT@4995..4999 "join"
+ SUFFIX_APPLY@4999..5018
+ ARGS_DESC@4999..5018
+ L_PAREN@4999..5000 "("
+ ARG@5000..5004
+ EXPR@5000..5004
+ EXPR_STRING@5000..5004
+ STRING_SINGLE@5000..5004 "'\\n'"
+ COMMA@5004..5005 ","
+ WHITESPACE@5005..5006 " "
+ ARG@5006..5017
+ EXPR@5006..5017
+ EXPR_BINARY@5006..5017
+ EXPR@5006..5010
+ EXPR_VAR@5006..5010
+ NAME@5006..5010
+ IDENT@5006..5010 "vars"
+ WHITESPACE@5010..5011 " "
+ PLUS@5011..5012 "+"
+ WHITESPACE@5012..5013 " "
+ EXPR@5013..5017
+ EXPR_ARRAY@5013..5017
+ L_BRACK@5013..5014 "["
+ EXPR@5014..5016
+ EXPR_STRING@5014..5016
+ STRING_SINGLE@5014..5016 "''"
+ R_BRACK@5016..5017 "]"
+ R_PAREN@5017..5018 ")"
+ COMMA@5018..5019 ","
+ WHITESPACE@5019..5023 "\n\n "
+ MEMBER_FIELD_METHOD@5023..5690
+ FIELD_NAME_FIXED@5023..5040
+ NAME@5023..5040
+ IDENT@5023..5040 "manifestXmlJsonml"
+ PARAMS_DESC@5040..5047
+ L_PAREN@5040..5041 "("
+ PARAM@5041..5046
+ DESTRUCT_FULL@5041..5046
+ NAME@5041..5046
+ IDENT@5041..5046 "value"
+ R_PAREN@5046..5047 ")"
+ COLONCOLON@5047..5049 "::"
+ WHITESPACE@5049..5054 "\n "
+ EXPR@5054..5690
+ EXPR_IF_THEN_ELSE@5054..5690
+ IF_KW@5054..5056 "if"
+ WHITESPACE@5056..5057 " "
+ EXPR@5057..5076
+ EXPR_UNARY@5057..5076
+ NOT@5057..5058 "!"
+ EXPR_VAR@5058..5061
+ NAME@5058..5061
+ IDENT@5058..5061 "std"
+ SUFFIX_INDEX@5061..5069
+ DOT@5061..5062 "."
+ NAME@5062..5069
+ IDENT@5062..5069 "isArray"
+ SUFFIX_APPLY@5069..5076
+ ARGS_DESC@5069..5076
+ L_PAREN@5069..5070 "("
+ ARG@5070..5075
+ EXPR@5070..5075
+ EXPR_VAR@5070..5075
+ NAME@5070..5075
+ IDENT@5070..5075 "value"
+ R_PAREN@5075..5076 ")"
+ WHITESPACE@5076..5077 " "
+ THEN_KW@5077..5081 "then"
+ WHITESPACE@5081..5088 "\n "
+ TRUE_EXPR@5088..5156
+ EXPR@5088..5156
+ EXPR_ERROR@5088..5156
+ ERROR_KW@5088..5093 "error"
+ WHITESPACE@5093..5094 " "
+ EXPR@5094..5156
+ EXPR_BINARY@5094..5156
+ EXPR@5094..5138
+ EXPR_STRING@5094..5138
+ STRING_SINGLE@5094..5138 "'Expected a JSONML va ..."
+ WHITESPACE@5138..5139 " "
+ MODULO@5139..5140 "%"
+ WHITESPACE@5140..5141 " "
+ EXPR@5141..5156
+ EXPR_VAR@5141..5144
+ NAME@5141..5144
+ IDENT@5141..5144 "std"
+ SUFFIX_INDEX@5144..5149
+ DOT@5144..5145 "."
+ NAME@5145..5149
+ IDENT@5145..5149 "type"
+ SUFFIX_APPLY@5149..5156
+ ARGS_DESC@5149..5156
+ L_PAREN@5149..5150 "("
+ ARG@5150..5155
+ EXPR@5150..5155
+ EXPR_VAR@5150..5155
+ NAME@5150..5155
+ IDENT@5150..5155 "value"
+ R_PAREN@5155..5156 ")"
+ WHITESPACE@5156..5161 "\n "
+ ELSE_KW@5161..5165 "else"
+ WHITESPACE@5165..5172 "\n "
+ FALSE_EXPR@5172..5690
+ EXPR@5172..5690
+ STMT_LOCAL@5172..5672
+ LOCAL_KW@5172..5177 "local"
+ WHITESPACE@5177..5178 " "
+ BIND_FUNCTION@5178..5671
+ NAME@5178..5181
+ IDENT@5178..5181 "aux"
+ PARAMS_DESC@5181..5184
+ L_PAREN@5181..5182 "("
+ PARAM@5182..5183
+ DESTRUCT_FULL@5182..5183
+ NAME@5182..5183
+ IDENT@5182..5183 "v"
+ R_PAREN@5183..5184 ")"
+ WHITESPACE@5184..5185 " "
+ ASSIGN@5185..5186 "="
+ WHITESPACE@5186..5195 "\n "
+ EXPR@5195..5671
+ EXPR_IF_THEN_ELSE@5195..5671
+ IF_KW@5195..5197 "if"
+ WHITESPACE@5197..5198 " "
+ EXPR@5198..5213
+ EXPR_VAR@5198..5201
+ NAME@5198..5201
+ IDENT@5198..5201 "std"
+ SUFFIX_INDEX@5201..5210
+ DOT@5201..5202 "."
+ NAME@5202..5210
+ IDENT@5202..5210 "isString"
+ SUFFIX_APPLY@5210..5213
+ ARGS_DESC@5210..5213
+ L_PAREN@5210..5211 "("
+ ARG@5211..5212
+ EXPR@5211..5212
+ EXPR_VAR@5211..5212
+ NAME@5211..5212
+ IDENT@5211..5212 "v"
+ R_PAREN@5212..5213 ")"
+ WHITESPACE@5213..5214 " "
+ THEN_KW@5214..5218 "then"
+ WHITESPACE@5218..5229 "\n "
+ TRUE_EXPR@5229..5230
+ EXPR@5229..5230
+ EXPR_VAR@5229..5230
+ NAME@5229..5230
+ IDENT@5229..5230 "v"
+ WHITESPACE@5230..5239 "\n "
+ ELSE_KW@5239..5243 "else"
+ WHITESPACE@5243..5254 "\n "
+ FALSE_EXPR@5254..5671
+ EXPR@5254..5671
+ STMT_LOCAL@5254..5271
+ LOCAL_KW@5254..5259 "local"
+ WHITESPACE@5259..5260 " "
+ BIND_DESTRUCT@5260..5270
+ DESTRUCT_FULL@5260..5263
+ NAME@5260..5263
+ IDENT@5260..5263 "tag"
+ WHITESPACE@5263..5264 " "
+ ASSIGN@5264..5265 "="
+ WHITESPACE@5265..5266 " "
+ EXPR@5266..5270
+ EXPR_VAR@5266..5267
+ NAME@5266..5267
+ IDENT@5266..5267 "v"
+ SUFFIX_INDEX_EXPR@5267..5270
+ L_BRACK@5267..5268 "["
+ EXPR@5268..5269
+ EXPR_NUMBER@5268..5269
+ FLOAT@5268..5269 "0"
+ R_BRACK@5269..5270 "]"
+ SEMI@5270..5271 ";"
+ WHITESPACE@5271..5282 "\n "
+ STMT_LOCAL@5282..5340
+ LOCAL_KW@5282..5287 "local"
+ WHITESPACE@5287..5288 " "
+ BIND_DESTRUCT@5288..5339
+ DESTRUCT_FULL@5288..5297
+ NAME@5288..5297
+ IDENT@5288..5297 "has_attrs"
+ WHITESPACE@5297..5298 " "
+ ASSIGN@5298..5299 "="
+ WHITESPACE@5299..5300 " "
+ EXPR@5300..5339
+ EXPR_BINARY@5300..5339
+ EXPR@5300..5317
+ EXPR_BINARY@5300..5317
+ EXPR@5300..5303
+ EXPR_VAR@5300..5303
+ NAME@5300..5303
+ IDENT@5300..5303 "std"
+ SUFFIX_INDEX@5303..5310
+ DOT@5303..5304 "."
+ NAME@5304..5310
+ IDENT@5304..5310 "length"
+ SUFFIX_APPLY@5310..5313
+ ARGS_DESC@5310..5313
+ L_PAREN@5310..5311 "("
+ ARG@5311..5312
+ EXPR@5311..5312
+ EXPR_VAR@5311..5312
+ NAME@5311..5312
+ IDENT@5311..5312 "v"
+ R_PAREN@5312..5313 ")"
+ WHITESPACE@5313..5314 " "
+ GT@5314..5315 ">"
+ WHITESPACE@5315..5316 " "
+ EXPR@5316..5317
+ EXPR_NUMBER@5316..5317
+ FLOAT@5316..5317 "1"
+ WHITESPACE@5317..5318 " "
+ AND@5318..5320 "&&"
+ WHITESPACE@5320..5321 " "
+ EXPR@5321..5339
+ EXPR_VAR@5321..5324
+ NAME@5321..5324
+ IDENT@5321..5324 "std"
+ SUFFIX_INDEX@5324..5333
+ DOT@5324..5325 "."
+ NAME@5325..5333
+ IDENT@5325..5333 "isObject"
+ SUFFIX_APPLY@5333..5339
+ ARGS_DESC@5333..5339
+ L_PAREN@5333..5334 "("
+ ARG@5334..5338
+ EXPR@5334..5338
+ EXPR_VAR@5334..5335
+ NAME@5334..5335
+ IDENT@5334..5335 "v"
+ SUFFIX_INDEX_EXPR@5335..5338
+ L_BRACK@5335..5336 "["
+ EXPR@5336..5337
+ EXPR_NUMBER@5336..5337
+ FLOAT@5336..5337 "1"
+ R_BRACK@5337..5338 "]"
+ R_PAREN@5338..5339 ")"
+ SEMI@5339..5340 ";"
+ WHITESPACE@5340..5351 "\n "
+ STMT_LOCAL@5351..5396
+ LOCAL_KW@5351..5356 "local"
+ WHITESPACE@5356..5357 " "
+ BIND_DESTRUCT@5357..5395
+ DESTRUCT_FULL@5357..5362
+ NAME@5357..5362
+ IDENT@5357..5362 "attrs"
+ WHITESPACE@5362..5363 " "
+ ASSIGN@5363..5364 "="
+ WHITESPACE@5364..5365 " "
+ EXPR@5365..5395
+ EXPR_IF_THEN_ELSE@5365..5395
+ IF_KW@5365..5367 "if"
+ WHITESPACE@5367..5368 " "
+ EXPR@5368..5377
+ EXPR_VAR@5368..5377
+ NAME@5368..5377
+ IDENT@5368..5377 "has_attrs"
+ WHITESPACE@5377..5378 " "
+ THEN_KW@5378..5382 "then"
+ WHITESPACE@5382..5383 " "
+ TRUE_EXPR@5383..5387
+ EXPR@5383..5387
+ EXPR_VAR@5383..5384
+ NAME@5383..5384
+ IDENT@5383..5384 "v"
+ SUFFIX_INDEX_EXPR@5384..5387
+ L_BRACK@5384..5385 "["
+ EXPR@5385..5386
+ EXPR_NUMBER@5385..5386
+ FLOAT@5385..5386 "1"
+ R_BRACK@5386..5387 "]"
+ WHITESPACE@5387..5388 " "
+ ELSE_KW@5388..5392 "else"
+ WHITESPACE@5392..5393 " "
+ FALSE_EXPR@5393..5395
+ EXPR@5393..5395
+ EXPR_OBJECT@5393..5395
+ OBJ_BODY_MEMBER_LIST@5393..5395
+ L_BRACE@5393..5394 "{"
+ R_BRACE@5394..5395 "}"
+ SEMI@5395..5396 ";"
+ WHITESPACE@5396..5407 "\n "
+ STMT_LOCAL@5407..5459
+ LOCAL_KW@5407..5412 "local"
+ WHITESPACE@5412..5413 " "
+ BIND_DESTRUCT@5413..5458
+ DESTRUCT_FULL@5413..5421
+ NAME@5413..5421
+ IDENT@5413..5421 "children"
+ WHITESPACE@5421..5422 " "
+ ASSIGN@5422..5423 "="
+ WHITESPACE@5423..5424 " "
+ EXPR@5424..5458
+ EXPR_IF_THEN_ELSE@5424..5458
+ IF_KW@5424..5426 "if"
+ WHITESPACE@5426..5427 " "
+ EXPR@5427..5436
+ EXPR_VAR@5427..5436
+ NAME@5427..5436
+ IDENT@5427..5436 "has_attrs"
+ WHITESPACE@5436..5437 " "
+ THEN_KW@5437..5441 "then"
+ WHITESPACE@5441..5442 " "
+ TRUE_EXPR@5442..5447
+ EXPR@5442..5447
+ EXPR_VAR@5442..5443
+ NAME@5442..5443
+ IDENT@5442..5443 "v"
+ SUFFIX_SLICE@5443..5447
+ SLICE_DESC@5443..5447
+ L_BRACK@5443..5444 "["
+ EXPR@5444..5445
+ EXPR_NUMBER@5444..5445
+ FLOAT@5444..5445 "2"
+ COLON@5445..5446 ":"
+ R_BRACK@5446..5447 "]"
+ WHITESPACE@5447..5448 " "
+ ELSE_KW@5448..5452 "else"
+ WHITESPACE@5452..5453 " "
+ FALSE_EXPR@5453..5458
+ EXPR@5453..5458
+ EXPR_VAR@5453..5454
+ NAME@5453..5454
+ IDENT@5453..5454 "v"
+ SUFFIX_SLICE@5454..5458
+ SLICE_DESC@5454..5458
+ L_BRACK@5454..5455 "["
+ EXPR@5455..5456
+ EXPR_NUMBER@5455..5456
+ FLOAT@5455..5456 "1"
+ COLON@5456..5457 ":"
+ R_BRACK@5457..5458 "]"
+ SEMI@5458..5459 ";"
+ WHITESPACE@5459..5470 "\n "
+ STMT_LOCAL@5470..5576
+ LOCAL_KW@5470..5475 "local"
+ WHITESPACE@5475..5476 " "
+ BIND_DESTRUCT@5476..5575
+ DESTRUCT_FULL@5476..5485
+ NAME@5476..5485
+ IDENT@5476..5485 "attrs_str"
+ WHITESPACE@5485..5486 " "
+ ASSIGN@5486..5487 "="
+ WHITESPACE@5487..5500 "\n "
+ EXPR@5500..5575
+ EXPR_VAR@5500..5503
+ NAME@5500..5503
+ IDENT@5500..5503 "std"
+ SUFFIX_INDEX@5503..5508
+ DOT@5503..5504 "."
+ NAME@5504..5508
+ IDENT@5504..5508 "join"
+ SUFFIX_APPLY@5508..5575
+ ARGS_DESC@5508..5575
+ L_PAREN@5508..5509 "("
+ ARG@5509..5511
+ EXPR@5509..5511
+ EXPR_STRING@5509..5511
+ STRING_SINGLE@5509..5511 "''"
+ COMMA@5511..5512 ","
+ WHITESPACE@5512..5513 " "
+ ARG@5513..5574
+ EXPR@5513..5574
+ EXPR_ARRAY_COMP@5513..5574
+ L_BRACK@5513..5514 "["
+ EXPR@5514..5540
+ EXPR_BINARY@5514..5540
+ EXPR@5514..5524
+ EXPR_STRING@5514..5524
+ STRING_SINGLE@5514..5524 "' %s=\"%s\"'"
+ WHITESPACE@5524..5525 " "
+ MODULO@5525..5526 "%"
+ WHITESPACE@5526..5527 " "
+ EXPR@5527..5540
+ EXPR_ARRAY@5527..5540
+ L_BRACK@5527..5528 "["
+ EXPR@5528..5529
+ EXPR_VAR@5528..5529
+ NAME@5528..5529
+ IDENT@5528..5529 "k"
+ COMMA@5529..5530 ","
+ WHITESPACE@5530..5531 " "
+ EXPR@5531..5539
+ EXPR_VAR@5531..5536
+ NAME@5531..5536
+ IDENT@5531..5536 "attrs"
+ SUFFIX_INDEX_EXPR@5536..5539
+ L_BRACK@5536..5537 "["
+ EXPR@5537..5538
+ EXPR_VAR@5537..5538
+ NAME@5537..5538
+ IDENT@5537..5538 "k"
+ R_BRACK@5538..5539 "]"
+ R_BRACK@5539..5540 "]"
+ WHITESPACE@5540..5541 " "
+ FOR_SPEC@5541..5573
+ FOR_KW@5541..5544 "for"
+ WHITESPACE@5544..5545 " "
+ DESTRUCT_FULL@5545..5546
+ NAME@5545..5546
+ IDENT@5545..5546 "k"
+ WHITESPACE@5546..5547 " "
+ IN_KW@5547..5549 "in"
+ WHITESPACE@5549..5550 " "
+ EXPR@5550..5573
+ EXPR_VAR@5550..5553
+ NAME@5550..5553
+ IDENT@5550..5553 "std"
+ SUFFIX_INDEX@5553..5566
+ DOT@5553..5554 "."
+ NAME@5554..5566
+ IDENT@5554..5566 "objectFields"
+ SUFFIX_APPLY@5566..5573
+ ARGS_DESC@5566..5573
+ L_PAREN@5566..5567 "("
+ ARG@5567..5572
+ EXPR@5567..5572
+ EXPR_VAR@5567..5572
+ NAME@5567..5572
+ IDENT@5567..5572 "attrs"
+ R_PAREN@5572..5573 ")"
+ R_BRACK@5573..5574 "]"
+ R_PAREN@5574..5575 ")"
+ SEMI@5575..5576 ";"
+ WHITESPACE@5576..5587 "\n "
+ EXPR_VAR@5587..5590
+ NAME@5587..5590
+ IDENT@5587..5590 "std"
+ SUFFIX_INDEX@5590..5599
+ DOT@5590..5591 "."
+ NAME@5591..5599
+ IDENT@5591..5599 "deepJoin"
+ SUFFIX_APPLY@5599..5671
+ ARGS_DESC@5599..5671
+ L_PAREN@5599..5600 "("
+ ARG@5600..5670
+ EXPR@5600..5670
+ EXPR_ARRAY@5600..5670
+ L_BRACK@5600..5601 "["
+ EXPR@5601..5604
+ EXPR_STRING@5601..5604
+ STRING_SINGLE@5601..5604 "'<'"
+ COMMA@5604..5605 ","
+ WHITESPACE@5605..5606 " "
+ EXPR@5606..5609
+ EXPR_VAR@5606..5609
+ NAME@5606..5609
+ IDENT@5606..5609 "tag"
+ COMMA@5609..5610 ","
+ WHITESPACE@5610..5611 " "
+ EXPR@5611..5620
+ EXPR_VAR@5611..5620
+ NAME@5611..5620
+ IDENT@5611..5620 "attrs_str"
+ COMMA@5620..5621 ","
+ WHITESPACE@5621..5622 " "
+ EXPR@5622..5625
+ EXPR_STRING@5622..5625
+ STRING_SINGLE@5622..5625 "'>'"
+ COMMA@5625..5626 ","
+ WHITESPACE@5626..5627 " "
+ EXPR@5627..5653
+ EXPR_ARRAY_COMP@5627..5653
+ L_BRACK@5627..5628 "["
+ EXPR@5628..5634
+ EXPR_VAR@5628..5631
+ NAME@5628..5631
+ IDENT@5628..5631 "aux"
+ SUFFIX_APPLY@5631..5634
+ ARGS_DESC@5631..5634
+ L_PAREN@5631..5632 "("
+ ARG@5632..5633
+ EXPR@5632..5633
+ EXPR_VAR@5632..5633
+ NAME@5632..5633
+ IDENT@5632..5633 "x"
+ R_PAREN@5633..5634 ")"
+ WHITESPACE@5634..5635 " "
+ FOR_SPEC@5635..5652
+ FOR_KW@5635..5638 "for"
+ WHITESPACE@5638..5639 " "
+ DESTRUCT_FULL@5639..5640
+ NAME@5639..5640
+ IDENT@5639..5640 "x"
+ WHITESPACE@5640..5641 " "
+ IN_KW@5641..5643 "in"
+ WHITESPACE@5643..5644 " "
+ EXPR@5644..5652
+ EXPR_VAR@5644..5652
+ NAME@5644..5652
+ IDENT@5644..5652 "children"
+ R_BRACK@5652..5653 "]"
+ COMMA@5653..5654 ","
+ WHITESPACE@5654..5655 " "
+ EXPR@5655..5659
+ EXPR_STRING@5655..5659
+ STRING_SINGLE@5655..5659 "'</'"
+ COMMA@5659..5660 ","
+ WHITESPACE@5660..5661 " "
+ EXPR@5661..5664
+ EXPR_VAR@5661..5664
+ NAME@5661..5664
+ IDENT@5661..5664 "tag"
+ COMMA@5664..5665 ","
+ WHITESPACE@5665..5666 " "
+ EXPR@5666..5669
+ EXPR_STRING@5666..5669
+ STRING_SINGLE@5666..5669 "'>'"
+ R_BRACK@5669..5670 "]"
+ R_PAREN@5670..5671 ")"
+ SEMI@5671..5672 ";"
+ WHITESPACE@5672..5680 "\n\n "
+ EXPR_VAR@5680..5683
+ NAME@5680..5683
+ IDENT@5680..5683 "aux"
+ SUFFIX_APPLY@5683..5690
+ ARGS_DESC@5683..5690
+ L_PAREN@5683..5684 "("
+ ARG@5684..5689
+ EXPR@5684..5689
+ EXPR_VAR@5684..5689
+ NAME@5684..5689
+ IDENT@5684..5689 "value"
+ R_PAREN@5689..5690 ")"
+ COMMA@5690..5691 ","
+ WHITESPACE@5691..5695 "\n\n "
+ MEMBER_FIELD_METHOD@5695..6483
+ FIELD_NAME_FIXED@5695..5705
+ NAME@5695..5705
+ IDENT@5695..5705 "mergePatch"
+ PARAMS_DESC@5705..5720
+ L_PAREN@5705..5706 "("
+ PARAM@5706..5712
+ DESTRUCT_FULL@5706..5712
+ NAME@5706..5712
+ IDENT@5706..5712 "target"
+ COMMA@5712..5713 ","
+ WHITESPACE@5713..5714 " "
+ PARAM@5714..5719
+ DESTRUCT_FULL@5714..5719
+ NAME@5714..5719
+ IDENT@5714..5719 "patch"
+ R_PAREN@5719..5720 ")"
+ COLONCOLON@5720..5722 "::"
+ WHITESPACE@5722..5727 "\n "
+ EXPR@5727..6483
+ EXPR_IF_THEN_ELSE@5727..6483
+ IF_KW@5727..5729 "if"
+ WHITESPACE@5729..5730 " "
+ EXPR@5730..5749
+ EXPR_VAR@5730..5733
+ NAME@5730..5733
+ IDENT@5730..5733 "std"
+ SUFFIX_INDEX@5733..5742
+ DOT@5733..5734 "."
+ NAME@5734..5742
+ IDENT@5734..5742 "isObject"
+ SUFFIX_APPLY@5742..5749
+ ARGS_DESC@5742..5749
+ L_PAREN@5742..5743 "("
+ ARG@5743..5748
+ EXPR@5743..5748
+ EXPR_VAR@5743..5748
+ NAME@5743..5748
+ IDENT@5743..5748 "patch"
+ R_PAREN@5748..5749 ")"
+ WHITESPACE@5749..5750 " "
+ THEN_KW@5750..5754 "then"
+ WHITESPACE@5754..5761 "\n "
+ TRUE_EXPR@5761..6462
+ EXPR@5761..6462
+ STMT_LOCAL@5761..5835
+ LOCAL_KW@5761..5766 "local"
+ WHITESPACE@5766..5767 " "
+ BIND_DESTRUCT@5767..5834
+ DESTRUCT_FULL@5767..5780
+ NAME@5767..5780
+ IDENT@5767..5780 "target_object"
+ WHITESPACE@5780..5781 " "
+ ASSIGN@5781..5782 "="
+ WHITESPACE@5782..5791 "\n "
+ EXPR@5791..5834
+ EXPR_IF_THEN_ELSE@5791..5834
+ IF_KW@5791..5793 "if"
+ WHITESPACE@5793..5794 " "
+ EXPR@5794..5814
+ EXPR_VAR@5794..5797
+ NAME@5794..5797
+ IDENT@5794..5797 "std"
+ SUFFIX_INDEX@5797..5806
+ DOT@5797..5798 "."
+ NAME@5798..5806
+ IDENT@5798..5806 "isObject"
+ SUFFIX_APPLY@5806..5814
+ ARGS_DESC@5806..5814
+ L_PAREN@5806..5807 "("
+ ARG@5807..5813
+ EXPR@5807..5813
+ EXPR_VAR@5807..5813
+ NAME@5807..5813
+ IDENT@5807..5813 "target"
+ R_PAREN@5813..5814 ")"
+ WHITESPACE@5814..5815 " "
+ THEN_KW@5815..5819 "then"
+ WHITESPACE@5819..5820 " "
+ TRUE_EXPR@5820..5826
+ EXPR@5820..5826
+ EXPR_VAR@5820..5826
+ NAME@5820..5826
+ IDENT@5820..5826 "target"
+ WHITESPACE@5826..5827 " "
+ ELSE_KW@5827..5831 "else"
+ WHITESPACE@5831..5832 " "
+ FALSE_EXPR@5832..5834
+ EXPR@5832..5834
+ EXPR_OBJECT@5832..5834
+ OBJ_BODY_MEMBER_LIST@5832..5834
+ L_BRACE@5832..5833 "{"
+ R_BRACE@5833..5834 "}"
+ SEMI@5834..5835 ";"
+ WHITESPACE@5835..5843 "\n\n "
+ STMT_LOCAL@5843..5949
+ LOCAL_KW@5843..5848 "local"
+ WHITESPACE@5848..5849 " "
+ BIND_DESTRUCT@5849..5948
+ DESTRUCT_FULL@5849..5862
+ NAME@5849..5862
+ IDENT@5849..5862 "target_fields"
+ WHITESPACE@5862..5863 " "
+ ASSIGN@5863..5864 "="
+ WHITESPACE@5864..5873 "\n "
+ EXPR@5873..5948
+ EXPR_IF_THEN_ELSE@5873..5948
+ IF_KW@5873..5875 "if"
+ WHITESPACE@5875..5876 " "
+ EXPR@5876..5903
+ EXPR_VAR@5876..5879
+ NAME@5876..5879
+ IDENT@5876..5879 "std"
+ SUFFIX_INDEX@5879..5888
+ DOT@5879..5880 "."
+ NAME@5880..5888
+ IDENT@5880..5888 "isObject"
+ SUFFIX_APPLY@5888..5903
+ ARGS_DESC@5888..5903
+ L_PAREN@5888..5889 "("
+ ARG@5889..5902
+ EXPR@5889..5902
+ EXPR_VAR@5889..5902
+ NAME@5889..5902
+ IDENT@5889..5902 "target_object"
+ R_PAREN@5902..5903 ")"
+ WHITESPACE@5903..5904 " "
+ THEN_KW@5904..5908 "then"
+ WHITESPACE@5908..5909 " "
+ TRUE_EXPR@5909..5940
+ EXPR@5909..5940
+ EXPR_VAR@5909..5912
+ NAME@5909..5912
+ IDENT@5909..5912 "std"
+ SUFFIX_INDEX@5912..5925
+ DOT@5912..5913 "."
+ NAME@5913..5925
+ IDENT@5913..5925 "objectFields"
+ SUFFIX_APPLY@5925..5940
+ ARGS_DESC@5925..5940
+ L_PAREN@5925..5926 "("
+ ARG@5926..5939
+ EXPR@5926..5939
+ EXPR_VAR@5926..5939
+ NAME@5926..5939
+ IDENT@5926..5939 "target_object"
+ R_PAREN@5939..5940 ")"
+ WHITESPACE@5940..5941 " "
+ ELSE_KW@5941..5945 "else"
+ WHITESPACE@5945..5946 " "
+ FALSE_EXPR@5946..5948
+ EXPR@5946..5948
+ EXPR_ARRAY@5946..5948
+ L_BRACK@5946..5947 "["
+ R_BRACK@5947..5948 "]"
+ SEMI@5948..5949 ";"
+ WHITESPACE@5949..5957 "\n\n "
+ STMT_LOCAL@5957..6034
+ LOCAL_KW@5957..5962 "local"
+ WHITESPACE@5962..5963 " "
+ BIND_DESTRUCT@5963..6033
+ DESTRUCT_FULL@5963..5974
+ NAME@5963..5974
+ IDENT@5963..5974 "null_fields"
+ WHITESPACE@5974..5975 " "
+ ASSIGN@5975..5976 "="
+ WHITESPACE@5976..5977 " "
+ EXPR@5977..6033
+ EXPR_ARRAY_COMP@5977..6033
+ L_BRACK@5977..5978 "["
+ EXPR@5978..5979
+ EXPR_VAR@5978..5979
+ NAME@5978..5979
+ IDENT@5978..5979 "k"
+ WHITESPACE@5979..5980 " "
+ FOR_SPEC@5980..6012
+ FOR_KW@5980..5983 "for"
+ WHITESPACE@5983..5984 " "
+ DESTRUCT_FULL@5984..5985
+ NAME@5984..5985
+ IDENT@5984..5985 "k"
+ WHITESPACE@5985..5986 " "
+ IN_KW@5986..5988 "in"
+ WHITESPACE@5988..5989 " "
+ EXPR@5989..6012
+ EXPR_VAR@5989..5992
+ NAME@5989..5992
+ IDENT@5989..5992 "std"
+ SUFFIX_INDEX@5992..6005
+ DOT@5992..5993 "."
+ NAME@5993..6005
+ IDENT@5993..6005 "objectFields"
+ SUFFIX_APPLY@6005..6012
+ ARGS_DESC@6005..6012
+ L_PAREN@6005..6006 "("
+ ARG@6006..6011
+ EXPR@6006..6011
+ EXPR_VAR@6006..6011
+ NAME@6006..6011
+ IDENT@6006..6011 "patch"
+ R_PAREN@6011..6012 ")"
+ WHITESPACE@6012..6013 " "
+ IF_SPEC@6013..6032
+ IF_KW@6013..6015 "if"
+ WHITESPACE@6015..6016 " "
+ EXPR@6016..6032
+ EXPR_BINARY@6016..6032
+ EXPR@6016..6021
+ EXPR_VAR@6016..6021
+ NAME@6016..6021
+ IDENT@6016..6021 "patch"
+ SUFFIX_INDEX_EXPR@6021..6024
+ L_BRACK@6021..6022 "["
+ EXPR@6022..6023
+ EXPR_VAR@6022..6023
+ NAME@6022..6023
+ IDENT@6022..6023 "k"
+ R_BRACK@6023..6024 "]"
+ WHITESPACE@6024..6025 " "
+ EQ@6025..6027 "=="
+ WHITESPACE@6027..6028 " "
+ EXPR@6028..6032
+ EXPR_LITERAL@6028..6032
+ NULL_KW@6028..6032 "null"
+ R_BRACK@6032..6033 "]"
+ SEMI@6033..6034 ";"
+ WHITESPACE@6034..6041 "\n "
+ STMT_LOCAL@6041..6114
+ LOCAL_KW@6041..6046 "local"
+ WHITESPACE@6046..6047 " "
+ BIND_DESTRUCT@6047..6113
+ DESTRUCT_FULL@6047..6058
+ NAME@6047..6058
+ IDENT@6047..6058 "both_fields"
+ WHITESPACE@6058..6059 " "
+ ASSIGN@6059..6060 "="
+ WHITESPACE@6060..6061 " "
+ EXPR@6061..6113
+ EXPR_VAR@6061..6064
+ NAME@6061..6064
+ IDENT@6061..6064 "std"
+ SUFFIX_INDEX@6064..6073
+ DOT@6064..6065 "."
+ NAME@6065..6073
+ IDENT@6065..6073 "setUnion"
+ SUFFIX_APPLY@6073..6113
+ ARGS_DESC@6073..6113
+ L_PAREN@6073..6074 "("
+ ARG@6074..6087
+ EXPR@6074..6087
+ EXPR_VAR@6074..6087
+ NAME@6074..6087
+ IDENT@6074..6087 "target_fields"
+ COMMA@6087..6088 ","
+ WHITESPACE@6088..6089 " "
+ ARG@6089..6112
+ EXPR@6089..6112
+ EXPR_VAR@6089..6092
+ NAME@6089..6092
+ IDENT@6089..6092 "std"
+ SUFFIX_INDEX@6092..6105
+ DOT@6092..6093 "."
+ NAME@6093..6105
+ IDENT@6093..6105 "objectFields"
+ SUFFIX_APPLY@6105..6112
+ ARGS_DESC@6105..6112
+ L_PAREN@6105..6106 "("
+ ARG@6106..6111
+ EXPR@6106..6111
+ EXPR_VAR@6106..6111
+ NAME@6106..6111
+ IDENT@6106..6111 "patch"
+ R_PAREN@6111..6112 ")"
+ R_PAREN@6112..6113 ")"
+ SEMI@6113..6114 ";"
+ WHITESPACE@6114..6122 "\n\n "
+ EXPR_OBJECT@6122..6462
+ OBJ_BODY_COMP@6122..6462
+ L_BRACE@6122..6123 "{"
+ WHITESPACE@6123..6132 "\n "
+ MEMBER_FIELD_NORMAL@6132..6399
+ FIELD_NAME_DYNAMIC@6132..6135
+ L_BRACK@6132..6133 "["
+ EXPR@6133..6134
+ EXPR_VAR@6133..6134
+ NAME@6133..6134
+ IDENT@6133..6134 "k"
+ R_BRACK@6134..6135 "]"
+ COLON@6135..6136 ":"
+ WHITESPACE@6136..6147 "\n "
+ EXPR@6147..6399
+ EXPR_IF_THEN_ELSE@6147..6399
+ IF_KW@6147..6149 "if"
+ WHITESPACE@6149..6150 " "
+ EXPR@6150..6174
+ EXPR_UNARY@6150..6174
+ NOT@6150..6151 "!"
+ EXPR_VAR@6151..6154
+ NAME@6151..6154
+ IDENT@6151..6154 "std"
+ SUFFIX_INDEX@6154..6164
+ DOT@6154..6155 "."
+ NAME@6155..6164
+ IDENT@6155..6164 "objectHas"
+ SUFFIX_APPLY@6164..6174
+ ARGS_DESC@6164..6174
+ L_PAREN@6164..6165 "("
+ ARG@6165..6170
+ EXPR@6165..6170
+ EXPR_VAR@6165..6170
+ NAME@6165..6170
+ IDENT@6165..6170 "patch"
+ COMMA@6170..6171 ","
+ WHITESPACE@6171..6172 " "
+ ARG@6172..6173
+ EXPR@6172..6173
+ EXPR_VAR@6172..6173
+ NAME@6172..6173
+ IDENT@6172..6173 "k"
+ R_PAREN@6173..6174 ")"
+ WHITESPACE@6174..6175 " "
+ THEN_KW@6175..6179 "then"
+ WHITESPACE@6179..6192 "\n "
+ TRUE_EXPR@6192..6208
+ EXPR@6192..6208
+ EXPR_VAR@6192..6205
+ NAME@6192..6205
+ IDENT@6192..6205 "target_object"
+ SUFFIX_INDEX_EXPR@6205..6208
+ L_BRACK@6205..6206 "["
+ EXPR@6206..6207
+ EXPR_VAR@6206..6207
+ NAME@6206..6207
+ IDENT@6206..6207 "k"
+ R_BRACK@6207..6208 "]"
+ WHITESPACE@6208..6219 "\n "
+ ELSE_KW@6219..6223 "else"
+ WHITESPACE@6223..6224 " "
+ FALSE_EXPR@6224..6399
+ EXPR@6224..6399
+ EXPR_IF_THEN_ELSE@6224..6399
+ IF_KW@6224..6226 "if"
+ WHITESPACE@6226..6227 " "
+ EXPR@6227..6259
+ EXPR_UNARY@6227..6259
+ NOT@6227..6228 "!"
+ EXPR_VAR@6228..6231
+ NAME@6228..6231
+ IDENT@6228..6231 "std"
+ SUFFIX_INDEX@6231..6241
+ DOT@6231..6232 "."
+ NAME@6232..6241
+ IDENT@6232..6241 "objectHas"
+ SUFFIX_APPLY@6241..6259
+ ARGS_DESC@6241..6259
+ L_PAREN@6241..6242 "("
+ ARG@6242..6255
+ EXPR@6242..6255
+ EXPR_VAR@6242..6255
+ NAME@6242..6255
+ IDENT@6242..6255 "target_object"
+ COMMA@6255..6256 ","
+ WHITESPACE@6256..6257 " "
+ ARG@6257..6258
+ EXPR@6257..6258
+ EXPR_VAR@6257..6258
+ NAME@6257..6258
+ IDENT@6257..6258 "k"
+ R_PAREN@6258..6259 ")"
+ WHITESPACE@6259..6260 " "
+ THEN_KW@6260..6264 "then"
+ WHITESPACE@6264..6277 "\n "
+ TRUE_EXPR@6277..6318
+ EXPR@6277..6318
+ EXPR_VAR@6277..6280
+ NAME@6277..6280
+ IDENT@6277..6280 "std"
+ SUFFIX_INDEX@6280..6291
+ DOT@6280..6281 "."
+ NAME@6281..6291
+ IDENT@6281..6291 "mergePatch"
+ SUFFIX_APPLY@6291..6318
+ ARGS_DESC@6291..6318
+ L_PAREN@6291..6292 "("
+ ARG@6292..6296
+ EXPR@6292..6296
+ EXPR_LITERAL@6292..6296
+ NULL_KW@6292..6296 "null"
+ COMMA@6296..6297 ","
+ WHITESPACE@6297..6298 " "
+ ARG@6298..6306
+ EXPR@6298..6306
+ EXPR_VAR@6298..6303
+ NAME@6298..6303
+ IDENT@6298..6303 "patch"
+ SUFFIX_INDEX_EXPR@6303..6306
+ L_BRACK@6303..6304 "["
+ EXPR@6304..6305
+ EXPR_VAR@6304..6305
+ NAME@6304..6305
+ IDENT@6304..6305 "k"
+ R_BRACK@6305..6306 "]"
+ R_PAREN@6306..6307 ")"
+ WHITESPACE@6307..6308 " "
+ TAILSTRICT_KW@6308..6318 "tailstrict"
+ WHITESPACE@6318..6329 "\n "
+ ELSE_KW@6329..6333 "else"
+ WHITESPACE@6333..6346 "\n "
+ FALSE_EXPR@6346..6399
+ EXPR@6346..6399
+ EXPR_VAR@6346..6349
+ NAME@6346..6349
+ IDENT@6346..6349 "std"
+ SUFFIX_INDEX@6349..6360
+ DOT@6349..6350 "."
+ NAME@6350..6360
+ IDENT@6350..6360 "mergePatch"
+ SUFFIX_APPLY@6360..6399
+ ARGS_DESC@6360..6399
+ L_PAREN@6360..6361 "("
+ ARG@6361..6377
+ EXPR@6361..6377
+ EXPR_VAR@6361..6374
+ NAME@6361..6374
+ IDENT@6361..6374 "target_object"
+ SUFFIX_INDEX_EXPR@6374..6377
+ L_BRACK@6374..6375 "["
+ EXPR@6375..6376
+ EXPR_VAR@6375..6376
+ NAME@6375..6376
+ IDENT@6375..6376 "k"
+ R_BRACK@6376..6377 "]"
+ COMMA@6377..6378 ","
+ WHITESPACE@6378..6379 " "
+ ARG@6379..6387
+ EXPR@6379..6387
+ EXPR_VAR@6379..6384
+ NAME@6379..6384
+ IDENT@6379..6384 "patch"
+ SUFFIX_INDEX_EXPR@6384..6387
+ L_BRACK@6384..6385 "["
+ EXPR@6385..6386
+ EXPR_VAR@6385..6386
+ NAME@6385..6386
+ IDENT@6385..6386 "k"
+ R_BRACK@6386..6387 "]"
+ R_PAREN@6387..6388 ")"
+ WHITESPACE@6388..6389 " "
+ TAILSTRICT_KW@6389..6399 "tailstrict"
+ WHITESPACE@6399..6408 "\n "
+ FOR_SPEC@6408..6454
+ FOR_KW@6408..6411 "for"
+ WHITESPACE@6411..6412 " "
+ DESTRUCT_FULL@6412..6413
+ NAME@6412..6413
+ IDENT@6412..6413 "k"
+ WHITESPACE@6413..6414 " "
+ IN_KW@6414..6416 "in"
+ WHITESPACE@6416..6417 " "
+ EXPR@6417..6454
+ EXPR_VAR@6417..6420
+ NAME@6417..6420
+ IDENT@6417..6420 "std"
+ SUFFIX_INDEX@6420..6428
+ DOT@6420..6421 "."
+ NAME@6421..6428
+ IDENT@6421..6428 "setDiff"
+ SUFFIX_APPLY@6428..6454
+ ARGS_DESC@6428..6454
+ L_PAREN@6428..6429 "("
+ ARG@6429..6440
+ EXPR@6429..6440
+ EXPR_VAR@6429..6440
+ NAME@6429..6440
+ IDENT@6429..6440 "both_fields"
+ COMMA@6440..6441 ","
+ WHITESPACE@6441..6442 " "
+ ARG@6442..6453
+ EXPR@6442..6453
+ EXPR_VAR@6442..6453
+ NAME@6442..6453
+ IDENT@6442..6453 "null_fields"
+ R_PAREN@6453..6454 ")"
+ WHITESPACE@6454..6461 "\n "
+ R_BRACE@6461..6462 "}"
+ WHITESPACE@6462..6467 "\n "
+ ELSE_KW@6467..6471 "else"
+ WHITESPACE@6471..6478 "\n "
+ FALSE_EXPR@6478..6483
+ EXPR@6478..6483
+ EXPR_VAR@6478..6483
+ NAME@6478..6483
+ IDENT@6478..6483 "patch"
+ COMMA@6483..6484 ","
+ WHITESPACE@6484..6488 "\n\n "
+ MEMBER_FIELD_METHOD@6488..6594
+ FIELD_NAME_FIXED@6488..6491
+ NAME@6488..6491
+ IDENT@6488..6491 "get"
+ PARAMS_DESC@6491..6528
+ L_PAREN@6491..6492 "("
+ PARAM@6492..6493
+ DESTRUCT_FULL@6492..6493
+ NAME@6492..6493
+ IDENT@6492..6493 "o"
+ COMMA@6493..6494 ","
+ WHITESPACE@6494..6495 " "
+ PARAM@6495..6496
+ DESTRUCT_FULL@6495..6496
+ NAME@6495..6496
+ IDENT@6495..6496 "f"
+ COMMA@6496..6497 ","
+ WHITESPACE@6497..6498 " "
+ PARAM@6498..6510
+ DESTRUCT_FULL@6498..6505
+ NAME@6498..6505
+ IDENT@6498..6505 "default"
+ ASSIGN@6505..6506 "="
+ EXPR@6506..6510
+ EXPR_LITERAL@6506..6510
+ NULL_KW@6506..6510 "null"
+ COMMA@6510..6511 ","
+ WHITESPACE@6511..6512 " "
+ PARAM@6512..6527
+ DESTRUCT_FULL@6512..6522
+ NAME@6512..6522
+ IDENT@6512..6522 "inc_hidden"
+ ASSIGN@6522..6523 "="
+ EXPR@6523..6527
+ EXPR_LITERAL@6523..6527
+ TRUE_KW@6523..6527 "true"
+ R_PAREN@6527..6528 ")"
+ COLONCOLON@6528..6530 "::"
+ WHITESPACE@6530..6535 "\n "
+ EXPR@6535..6594
+ EXPR_IF_THEN_ELSE@6535..6594
+ IF_KW@6535..6537 "if"
+ WHITESPACE@6537..6538 " "
+ EXPR@6538..6571
+ EXPR_VAR@6538..6541
+ NAME@6538..6541
+ IDENT@6538..6541 "std"
+ SUFFIX_INDEX@6541..6553
+ DOT@6541..6542 "."
+ NAME@6542..6553
+ IDENT@6542..6553 "objectHasEx"
+ SUFFIX_APPLY@6553..6571
+ ARGS_DESC@6553..6571
+ L_PAREN@6553..6554 "("
+ ARG@6554..6555
+ EXPR@6554..6555
+ EXPR_VAR@6554..6555
+ NAME@6554..6555
+ IDENT@6554..6555 "o"
+ COMMA@6555..6556 ","
+ WHITESPACE@6556..6557 " "
+ ARG@6557..6558
+ EXPR@6557..6558
+ EXPR_VAR@6557..6558
+ NAME@6557..6558
+ IDENT@6557..6558 "f"
+ COMMA@6558..6559 ","
+ WHITESPACE@6559..6560 " "
+ ARG@6560..6570
+ EXPR@6560..6570
+ EXPR_VAR@6560..6570
+ NAME@6560..6570
+ IDENT@6560..6570 "inc_hidden"
+ R_PAREN@6570..6571 ")"
+ WHITESPACE@6571..6572 " "
+ THEN_KW@6572..6576 "then"
+ WHITESPACE@6576..6577 " "
+ TRUE_EXPR@6577..6581
+ EXPR@6577..6581
+ EXPR_VAR@6577..6578
+ NAME@6577..6578
+ IDENT@6577..6578 "o"
+ SUFFIX_INDEX_EXPR@6578..6581
+ L_BRACK@6578..6579 "["
+ EXPR@6579..6580
+ EXPR_VAR@6579..6580
+ NAME@6579..6580
+ IDENT@6579..6580 "f"
+ R_BRACK@6580..6581 "]"
+ WHITESPACE@6581..6582 " "
+ ELSE_KW@6582..6586 "else"
+ WHITESPACE@6586..6587 " "
+ FALSE_EXPR@6587..6594
+ EXPR@6587..6594
+ EXPR_VAR@6587..6594
+ NAME@6587..6594
+ IDENT@6587..6594 "default"
+ COMMA@6594..6595 ","
+ WHITESPACE@6595..6599 "\n\n "
+ MEMBER_FIELD_METHOD@6599..6733
+ FIELD_NAME_FIXED@6599..6610
+ NAME@6599..6610
+ IDENT@6599..6610 "resolvePath"
+ PARAMS_DESC@6610..6616
+ L_PAREN@6610..6611 "("
+ PARAM@6611..6612
+ DESTRUCT_FULL@6611..6612
+ NAME@6611..6612
+ IDENT@6611..6612 "f"
+ COMMA@6612..6613 ","
+ WHITESPACE@6613..6614 " "
+ PARAM@6614..6615
+ DESTRUCT_FULL@6614..6615
+ NAME@6614..6615
+ IDENT@6614..6615 "r"
+ R_PAREN@6615..6616 ")"
+ COLONCOLON@6616..6618 "::"
+ WHITESPACE@6618..6623 "\n "
+ EXPR@6623..6733
+ STMT_LOCAL@6623..6653
+ LOCAL_KW@6623..6628 "local"
+ WHITESPACE@6628..6629 " "
+ BIND_DESTRUCT@6629..6652
+ DESTRUCT_FULL@6629..6632
+ NAME@6629..6632
+ IDENT@6629..6632 "arr"
+ WHITESPACE@6632..6633 " "
+ ASSIGN@6633..6634 "="
+ WHITESPACE@6634..6635 " "
+ EXPR@6635..6652
+ EXPR_VAR@6635..6638
+ NAME@6635..6638
+ IDENT@6635..6638 "std"
+ SUFFIX_INDEX@6638..6644
+ DOT@6638..6639 "."
+ NAME@6639..6644
+ IDENT@6639..6644 "split"
+ SUFFIX_APPLY@6644..6652
+ ARGS_DESC@6644..6652
+ L_PAREN@6644..6645 "("
+ ARG@6645..6646
+ EXPR@6645..6646
+ EXPR_VAR@6645..6646
+ NAME@6645..6646
+ IDENT@6645..6646 "f"
+ COMMA@6646..6647 ","
+ WHITESPACE@6647..6648 " "
+ ARG@6648..6651
+ EXPR@6648..6651
+ EXPR_STRING@6648..6651
+ STRING_SINGLE@6648..6651 "'/'"
+ R_PAREN@6651..6652 ")"
+ SEMI@6652..6653 ";"
+ WHITESPACE@6653..6658 "\n "
+ EXPR_VAR@6658..6661
+ NAME@6658..6661
+ IDENT@6658..6661 "std"
+ SUFFIX_INDEX@6661..6666
+ DOT@6661..6662 "."
+ NAME@6662..6666
+ IDENT@6662..6666 "join"
+ SUFFIX_APPLY@6666..6733
+ ARGS_DESC@6666..6733
+ L_PAREN@6666..6667 "("
+ ARG@6667..6670
+ EXPR@6667..6670
+ EXPR_STRING@6667..6670
+ STRING_SINGLE@6667..6670 "'/'"
+ COMMA@6670..6671 ","
+ WHITESPACE@6671..6672 " "
+ ARG@6672..6732
+ EXPR@6672..6732
+ EXPR_BINARY@6672..6732
+ EXPR@6672..6675
+ EXPR_VAR@6672..6675
+ NAME@6672..6675
+ IDENT@6672..6675 "std"
+ SUFFIX_INDEX@6675..6685
+ DOT@6675..6676 "."
+ NAME@6676..6685
+ IDENT@6676..6685 "makeArray"
+ SUFFIX_APPLY@6685..6726
+ ARGS_DESC@6685..6726
+ L_PAREN@6685..6686 "("
+ ARG@6686..6705
+ EXPR@6686..6705
+ EXPR_BINARY@6686..6705
+ EXPR@6686..6689
+ EXPR_VAR@6686..6689
+ NAME@6686..6689
+ IDENT@6686..6689 "std"
+ SUFFIX_INDEX@6689..6696
+ DOT@6689..6690 "."
+ NAME@6690..6696
+ IDENT@6690..6696 "length"
+ SUFFIX_APPLY@6696..6701
+ ARGS_DESC@6696..6701
+ L_PAREN@6696..6697 "("
+ ARG@6697..6700
+ EXPR@6697..6700
+ EXPR_VAR@6697..6700
+ NAME@6697..6700
+ IDENT@6697..6700 "arr"
+ R_PAREN@6700..6701 ")"
WHITESPACE@6701..6702 " "
- PLUS@6702..6703 "+"
+ MINUS@6702..6703 "-"
WHITESPACE@6703..6704 " "
- EXPR_ARRAY@6704..6710
- L_BRACK@6704..6705 "["
- EXPR_INDEX_EXPR@6705..6709
- LHS_EXPR@6705..6706
- EXPR_VAR@6705..6706
- NAME@6705..6706
- IDENT@6705..6706 "a"
- L_BRACK@6706..6707 "["
- EXPR_VAR@6707..6708
- NAME@6707..6708
- IDENT@6707..6708 "i"
- R_BRACK@6708..6709 "]"
- R_BRACK@6709..6710 "]"
- R_PAREN@6710..6711 ")"
- WHITESPACE@6711..6712 " "
- TAILSTRICT_KW@6712..6722 "tailstrict"
- WHITESPACE@6722..6731 "\n "
- ELSE_KW@6731..6735 "else"
- WHITESPACE@6735..6736 " "
- FALSE_EXPR@6736..6874
- EXPR_IF_THEN_ELSE@6736..6874
- IF_KW@6736..6738 "if"
- WHITESPACE@6738..6739 " "
- EXPR_BINARY@6739..6746
- LHS_EXPR@6739..6741
- EXPR_VAR@6739..6741
- NAME@6739..6741
- IDENT@6739..6741 "ak"
- WHITESPACE@6741..6742 " "
- LT@6742..6743 "<"
- WHITESPACE@6743..6744 " "
- EXPR_VAR@6744..6746
- NAME@6744..6746
- IDENT@6744..6746 "bk"
- WHITESPACE@6746..6747 " "
- THEN_KW@6747..6751 "then"
- WHITESPACE@6751..6762 "\n "
- TRUE_EXPR@6762..6806
- EXPR_APPLY@6762..6806
- EXPR_VAR@6762..6765
- NAME@6762..6765
- IDENT@6762..6765 "aux"
- ARGS_DESC@6765..6806
- L_PAREN@6765..6766 "("
- ARG@6766..6767
- EXPR_VAR@6766..6767
- NAME@6766..6767
- IDENT@6766..6767 "a"
- COMMA@6767..6768 ","
- WHITESPACE@6768..6769 " "
- ARG@6769..6770
- EXPR_VAR@6769..6770
- NAME@6769..6770
- IDENT@6769..6770 "b"
- COMMA@6770..6771 ","
- WHITESPACE@6771..6772 " "
- ARG@6772..6777
- EXPR_BINARY@6772..6777
- LHS_EXPR@6772..6773
- EXPR_VAR@6772..6773
- NAME@6772..6773
- IDENT@6772..6773 "i"
- WHITESPACE@6773..6774 " "
- PLUS@6774..6775 "+"
- WHITESPACE@6775..6776 " "
- EXPR_NUMBER@6776..6777
- FLOAT@6776..6777 "1"
- COMMA@6777..6778 ","
- WHITESPACE@6778..6779 " "
- ARG@6779..6780
- EXPR_VAR@6779..6780
- NAME@6779..6780
- IDENT@6779..6780 "j"
- COMMA@6780..6781 ","
- WHITESPACE@6781..6782 " "
- ARG@6782..6794
- EXPR_BINARY@6782..6794
- LHS_EXPR@6782..6785
- EXPR_VAR@6782..6785
- NAME@6782..6785
- IDENT@6782..6785 "acc"
- WHITESPACE@6785..6786 " "
- PLUS@6786..6787 "+"
- WHITESPACE@6787..6788 " "
- EXPR_ARRAY@6788..6794
- L_BRACK@6788..6789 "["
- EXPR_INDEX_EXPR@6789..6793
- LHS_EXPR@6789..6790
- EXPR_VAR@6789..6790
- NAME@6789..6790
- IDENT@6789..6790 "a"
- L_BRACK@6790..6791 "["
- EXPR_VAR@6791..6792
- NAME@6791..6792
- IDENT@6791..6792 "i"
- R_BRACK@6792..6793 "]"
- R_BRACK@6793..6794 "]"
- R_PAREN@6794..6795 ")"
- WHITESPACE@6795..6796 " "
- TAILSTRICT_KW@6796..6806 "tailstrict"
- WHITESPACE@6806..6815 "\n "
- ELSE_KW@6815..6819 "else"
- WHITESPACE@6819..6830 "\n "
- FALSE_EXPR@6830..6874
- EXPR_APPLY@6830..6874
- EXPR_VAR@6830..6833
- NAME@6830..6833
- IDENT@6830..6833 "aux"
- ARGS_DESC@6833..6874
- L_PAREN@6833..6834 "("
- ARG@6834..6835
- EXPR_VAR@6834..6835
- NAME@6834..6835
- IDENT@6834..6835 "a"
- COMMA@6835..6836 ","
- WHITESPACE@6836..6837 " "
- ARG@6837..6838
- EXPR_VAR@6837..6838
- NAME@6837..6838
- IDENT@6837..6838 "b"
- COMMA@6838..6839 ","
- WHITESPACE@6839..6840 " "
- ARG@6840..6841
- EXPR_VAR@6840..6841
- NAME@6840..6841
- IDENT@6840..6841 "i"
- COMMA@6841..6842 ","
- WHITESPACE@6842..6843 " "
- ARG@6843..6848
- EXPR_BINARY@6843..6848
- LHS_EXPR@6843..6844
- EXPR_VAR@6843..6844
- NAME@6843..6844
- IDENT@6843..6844 "j"
- WHITESPACE@6844..6845 " "
- PLUS@6845..6846 "+"
- WHITESPACE@6846..6847 " "
- EXPR_NUMBER@6847..6848
- FLOAT@6847..6848 "1"
- COMMA@6848..6849 ","
- WHITESPACE@6849..6850 " "
- ARG@6850..6862
- EXPR_BINARY@6850..6862
- LHS_EXPR@6850..6853
- EXPR_VAR@6850..6853
- NAME@6850..6853
- IDENT@6850..6853 "acc"
- WHITESPACE@6853..6854 " "
- PLUS@6854..6855 "+"
- WHITESPACE@6855..6856 " "
- EXPR_ARRAY@6856..6862
- L_BRACK@6856..6857 "["
- EXPR_INDEX_EXPR@6857..6861
- LHS_EXPR@6857..6858
- EXPR_VAR@6857..6858
- NAME@6857..6858
- IDENT@6857..6858 "b"
- L_BRACK@6858..6859 "["
- EXPR_VAR@6859..6860
- NAME@6859..6860
- IDENT@6859..6860 "j"
- R_BRACK@6860..6861 "]"
- R_BRACK@6861..6862 "]"
- R_PAREN@6862..6863 ")"
- WHITESPACE@6863..6864 " "
- TAILSTRICT_KW@6864..6874 "tailstrict"
- SEMI@6874..6875 ";"
- WHITESPACE@6875..6880 "\n "
- EXPR_APPLY@6880..6899
- EXPR_VAR@6880..6883
- NAME@6880..6883
- IDENT@6880..6883 "aux"
- ARGS_DESC@6883..6899
- L_PAREN@6883..6884 "("
- ARG@6884..6885
- EXPR_VAR@6884..6885
- NAME@6884..6885
- IDENT@6884..6885 "a"
- COMMA@6885..6886 ","
- WHITESPACE@6886..6887 " "
- ARG@6887..6888
- EXPR_VAR@6887..6888
- NAME@6887..6888
- IDENT@6887..6888 "b"
- COMMA@6888..6889 ","
- WHITESPACE@6889..6890 " "
- ARG@6890..6891
- EXPR_NUMBER@6890..6891
- FLOAT@6890..6891 "0"
- COMMA@6891..6892 ","
- WHITESPACE@6892..6893 " "
- ARG@6893..6894
- EXPR_NUMBER@6893..6894
- FLOAT@6893..6894 "0"
- COMMA@6894..6895 ","
- WHITESPACE@6895..6896 " "
- ARG@6896..6898
- EXPR_ARRAY@6896..6898
- L_BRACK@6896..6897 "["
- R_BRACK@6897..6898 "]"
- R_PAREN@6898..6899 ")"
- COMMA@6899..6900 ","
- WHITESPACE@6900..6904 "\n\n "
- MEMBER_FIELD_METHOD@6904..7361
- FIELD_NAME_FIXED@6904..6911
- NAME@6904..6911
- IDENT@6904..6911 "setDiff"
- PARAMS_DESC@6911..6926
- L_PAREN@6911..6912 "("
- PARAM@6912..6913
- DESTRUCT_FULL@6912..6913
- NAME@6912..6913
- IDENT@6912..6913 "a"
- COMMA@6913..6914 ","
- WHITESPACE@6914..6915 " "
- PARAM@6915..6916
- DESTRUCT_FULL@6915..6916
- NAME@6915..6916
- IDENT@6915..6916 "b"
- COMMA@6916..6917 ","
- WHITESPACE@6917..6918 " "
- PARAM@6918..6925
- DESTRUCT_FULL@6918..6922
- NAME@6918..6922
- IDENT@6918..6922 "keyF"
- ASSIGN@6922..6923 "="
- EXPR_VAR@6923..6925
- NAME@6923..6925
- IDENT@6923..6925 "id"
- R_PAREN@6925..6926 ")"
- COLONCOLON@6926..6928 "::"
- WHITESPACE@6928..6933 "\n "
- STMT_LOCAL@6933..7326
- LOCAL_KW@6933..6938 "local"
- WHITESPACE@6938..6939 " "
- BIND_FUNCTION@6939..7325
- NAME@6939..6942
- IDENT@6939..6942 "aux"
- PARAMS_DESC@6942..6959
- L_PAREN@6942..6943 "("
- PARAM@6943..6944
- DESTRUCT_FULL@6943..6944
- NAME@6943..6944
- IDENT@6943..6944 "a"
- COMMA@6944..6945 ","
- WHITESPACE@6945..6946 " "
- PARAM@6946..6947
- DESTRUCT_FULL@6946..6947
- NAME@6946..6947
- IDENT@6946..6947 "b"
- COMMA@6947..6948 ","
- WHITESPACE@6948..6949 " "
- PARAM@6949..6950
- DESTRUCT_FULL@6949..6950
- NAME@6949..6950
- IDENT@6949..6950 "i"
- COMMA@6950..6951 ","
- WHITESPACE@6951..6952 " "
- PARAM@6952..6953
- DESTRUCT_FULL@6952..6953
- NAME@6952..6953
- IDENT@6952..6953 "j"
- COMMA@6953..6954 ","
- WHITESPACE@6954..6955 " "
- PARAM@6955..6958
- DESTRUCT_FULL@6955..6958
- NAME@6955..6958
- IDENT@6955..6958 "acc"
- R_PAREN@6958..6959 ")"
- WHITESPACE@6959..6960 " "
- ASSIGN@6960..6961 "="
- WHITESPACE@6961..6968 "\n "
- EXPR_IF_THEN_ELSE@6968..7325
- IF_KW@6968..6970 "if"
- WHITESPACE@6970..6971 " "
- EXPR_BINARY@6971..6989
- LHS_EXPR@6971..6972
- EXPR_VAR@6971..6972
- NAME@6971..6972
- IDENT@6971..6972 "i"
- WHITESPACE@6972..6973 " "
- GE@6973..6975 ">="
- WHITESPACE@6975..6976 " "
- EXPR_APPLY@6976..6989
- EXPR_INDEX@6976..6986
- EXPR_VAR@6976..6979
- NAME@6976..6979
- IDENT@6976..6979 "std"
- DOT@6979..6980 "."
- NAME@6980..6986
- IDENT@6980..6986 "length"
- ARGS_DESC@6986..6989
- L_PAREN@6986..6987 "("
- ARG@6987..6988
- EXPR_VAR@6987..6988
- NAME@6987..6988
- IDENT@6987..6988 "a"
- R_PAREN@6988..6989 ")"
- WHITESPACE@6989..6990 " "
- THEN_KW@6990..6994 "then"
- WHITESPACE@6994..7003 "\n "
- TRUE_EXPR@7003..7006
- EXPR_VAR@7003..7006
- NAME@7003..7006
- IDENT@7003..7006 "acc"
- WHITESPACE@7006..7013 "\n "
- ELSE_KW@7013..7017 "else"
- WHITESPACE@7017..7018 " "
- FALSE_EXPR@7018..7325
- EXPR_IF_THEN_ELSE@7018..7325
- IF_KW@7018..7020 "if"
- WHITESPACE@7020..7021 " "
- EXPR_BINARY@7021..7039
- LHS_EXPR@7021..7022
- EXPR_VAR@7021..7022
- NAME@7021..7022
- IDENT@7021..7022 "j"
- WHITESPACE@7022..7023 " "
- GE@7023..7025 ">="
- WHITESPACE@7025..7026 " "
- EXPR_APPLY@7026..7039
- EXPR_INDEX@7026..7036
- EXPR_VAR@7026..7029
- NAME@7026..7029
- IDENT@7026..7029 "std"
- DOT@7029..7030 "."
- NAME@7030..7036
- IDENT@7030..7036 "length"
- ARGS_DESC@7036..7039
- L_PAREN@7036..7037 "("
- ARG@7037..7038
- EXPR_VAR@7037..7038
- NAME@7037..7038
- IDENT@7037..7038 "b"
- R_PAREN@7038..7039 ")"
- WHITESPACE@7039..7040 " "
- THEN_KW@7040..7044 "then"
- WHITESPACE@7044..7053 "\n "
- TRUE_EXPR@7053..7064
- EXPR_BINARY@7053..7064
- LHS_EXPR@7053..7056
- EXPR_VAR@7053..7056
- NAME@7053..7056
- IDENT@7053..7056 "acc"
- WHITESPACE@7056..7057 " "
- PLUS@7057..7058 "+"
- WHITESPACE@7058..7059 " "
- EXPR_SLICE@7059..7064
- EXPR_VAR@7059..7060
- NAME@7059..7060
- IDENT@7059..7060 "a"
- SLICE_DESC@7060..7064
- L_BRACK@7060..7061 "["
- EXPR_VAR@7061..7062
- NAME@7061..7062
- IDENT@7061..7062 "i"
- COLON@7062..7063 ":"
- R_BRACK@7063..7064 "]"
- WHITESPACE@7064..7071 "\n "
- ELSE_KW@7071..7075 "else"
- WHITESPACE@7075..7084 "\n "
- FALSE_EXPR@7084..7325
- EXPR_IF_THEN_ELSE@7084..7325
- IF_KW@7084..7086 "if"
- WHITESPACE@7086..7087 " "
- EXPR_BINARY@7087..7111
- LHS_EXPR@7087..7097
- EXPR_APPLY@7087..7097
- EXPR_VAR@7087..7091
- NAME@7087..7091
- IDENT@7087..7091 "keyF"
- ARGS_DESC@7091..7097
- L_PAREN@7091..7092 "("
- ARG@7092..7096
- EXPR_INDEX_EXPR@7092..7096
- LHS_EXPR@7092..7093
- EXPR_VAR@7092..7093
- NAME@7092..7093
- IDENT@7092..7093 "a"
- L_BRACK@7093..7094 "["
- EXPR_VAR@7094..7095
- NAME@7094..7095
- IDENT@7094..7095 "i"
- R_BRACK@7095..7096 "]"
- R_PAREN@7096..7097 ")"
- WHITESPACE@7097..7098 " "
- EQ@7098..7100 "=="
- WHITESPACE@7100..7101 " "
- EXPR_APPLY@7101..7111
- EXPR_VAR@7101..7105
- NAME@7101..7105
- IDENT@7101..7105 "keyF"
- ARGS_DESC@7105..7111
- L_PAREN@7105..7106 "("
- ARG@7106..7110
- EXPR_INDEX_EXPR@7106..7110
- LHS_EXPR@7106..7107
- EXPR_VAR@7106..7107
- NAME@7106..7107
- IDENT@7106..7107 "b"
- L_BRACK@7107..7108 "["
- EXPR_VAR@7108..7109
- NAME@7108..7109
- IDENT@7108..7109 "j"
- R_BRACK@7109..7110 "]"
- R_PAREN@7110..7111 ")"
- WHITESPACE@7111..7112 " "
- THEN_KW@7112..7116 "then"
- WHITESPACE@7116..7127 "\n "
- TRUE_EXPR@7127..7166
- EXPR_APPLY@7127..7166
- EXPR_VAR@7127..7130
- NAME@7127..7130
- IDENT@7127..7130 "aux"
- ARGS_DESC@7130..7166
- L_PAREN@7130..7131 "("
- ARG@7131..7132
- EXPR_VAR@7131..7132
- NAME@7131..7132
- IDENT@7131..7132 "a"
- COMMA@7132..7133 ","
- WHITESPACE@7133..7134 " "
- ARG@7134..7135
- EXPR_VAR@7134..7135
- NAME@7134..7135
- IDENT@7134..7135 "b"
- COMMA@7135..7136 ","
- WHITESPACE@7136..7137 " "
- ARG@7137..7142
- EXPR_BINARY@7137..7142
- LHS_EXPR@7137..7138
- EXPR_VAR@7137..7138
- NAME@7137..7138
- IDENT@7137..7138 "i"
- WHITESPACE@7138..7139 " "
- PLUS@7139..7140 "+"
- WHITESPACE@7140..7141 " "
- EXPR_NUMBER@7141..7142
- FLOAT@7141..7142 "1"
- COMMA@7142..7143 ","
- WHITESPACE@7143..7144 " "
- ARG@7144..7149
- EXPR_BINARY@7144..7149
- LHS_EXPR@7144..7145
- EXPR_VAR@7144..7145
- NAME@7144..7145
- IDENT@7144..7145 "j"
- WHITESPACE@7145..7146 " "
- PLUS@7146..7147 "+"
- WHITESPACE@7147..7148 " "
- EXPR_NUMBER@7148..7149
- FLOAT@7148..7149 "1"
- COMMA@7149..7150 ","
- WHITESPACE@7150..7151 " "
- ARG@7151..7154
- EXPR_VAR@7151..7154
- NAME@7151..7154
- IDENT@7151..7154 "acc"
- R_PAREN@7154..7155 ")"
- WHITESPACE@7155..7156 " "
- TAILSTRICT_KW@7156..7166 "tailstrict"
- WHITESPACE@7166..7175 "\n "
- ELSE_KW@7175..7179 "else"
- WHITESPACE@7179..7180 " "
- FALSE_EXPR@7180..7325
- EXPR_IF_THEN_ELSE@7180..7325
- IF_KW@7180..7182 "if"
- WHITESPACE@7182..7183 " "
- EXPR_BINARY@7183..7206
- LHS_EXPR@7183..7193
- EXPR_APPLY@7183..7193
- EXPR_VAR@7183..7187
- NAME@7183..7187
- IDENT@7183..7187 "keyF"
- ARGS_DESC@7187..7193
- L_PAREN@7187..7188 "("
- ARG@7188..7192
- EXPR_INDEX_EXPR@7188..7192
- LHS_EXPR@7188..7189
- EXPR_VAR@7188..7189
- NAME@7188..7189
- IDENT@7188..7189 "a"
- L_BRACK@7189..7190 "["
- EXPR_VAR@7190..7191
- NAME@7190..7191
- IDENT@7190..7191 "i"
- R_BRACK@7191..7192 "]"
- R_PAREN@7192..7193 ")"
- WHITESPACE@7193..7194 " "
- LT@7194..7195 "<"
- WHITESPACE@7195..7196 " "
- EXPR_APPLY@7196..7206
- EXPR_VAR@7196..7200
- NAME@7196..7200
- IDENT@7196..7200 "keyF"
- ARGS_DESC@7200..7206
- L_PAREN@7200..7201 "("
- ARG@7201..7205
- EXPR_INDEX_EXPR@7201..7205
- LHS_EXPR@7201..7202
- EXPR_VAR@7201..7202
- NAME@7201..7202
- IDENT@7201..7202 "b"
- L_BRACK@7202..7203 "["
- EXPR_VAR@7203..7204
- NAME@7203..7204
- IDENT@7203..7204 "j"
- R_BRACK@7204..7205 "]"
- R_PAREN@7205..7206 ")"
- WHITESPACE@7206..7207 " "
- THEN_KW@7207..7211 "then"
- WHITESPACE@7211..7222 "\n "
- TRUE_EXPR@7222..7266
- EXPR_APPLY@7222..7266
- EXPR_VAR@7222..7225
- NAME@7222..7225
- IDENT@7222..7225 "aux"
- ARGS_DESC@7225..7266
- L_PAREN@7225..7226 "("
- ARG@7226..7227
- EXPR_VAR@7226..7227
- NAME@7226..7227
- IDENT@7226..7227 "a"
- COMMA@7227..7228 ","
- WHITESPACE@7228..7229 " "
- ARG@7229..7230
- EXPR_VAR@7229..7230
- NAME@7229..7230
- IDENT@7229..7230 "b"
- COMMA@7230..7231 ","
- WHITESPACE@7231..7232 " "
- ARG@7232..7237
- EXPR_BINARY@7232..7237
- LHS_EXPR@7232..7233
- EXPR_VAR@7232..7233
- NAME@7232..7233
- IDENT@7232..7233 "i"
- WHITESPACE@7233..7234 " "
- PLUS@7234..7235 "+"
- WHITESPACE@7235..7236 " "
- EXPR_NUMBER@7236..7237
- FLOAT@7236..7237 "1"
- COMMA@7237..7238 ","
- WHITESPACE@7238..7239 " "
- ARG@7239..7240
- EXPR_VAR@7239..7240
- NAME@7239..7240
- IDENT@7239..7240 "j"
- COMMA@7240..7241 ","
- WHITESPACE@7241..7242 " "
- ARG@7242..7254
- EXPR_BINARY@7242..7254
- LHS_EXPR@7242..7245
- EXPR_VAR@7242..7245
- NAME@7242..7245
- IDENT@7242..7245 "acc"
- WHITESPACE@7245..7246 " "
- PLUS@7246..7247 "+"
- WHITESPACE@7247..7248 " "
- EXPR_ARRAY@7248..7254
- L_BRACK@7248..7249 "["
- EXPR_INDEX_EXPR@7249..7253
- LHS_EXPR@7249..7250
- EXPR_VAR@7249..7250
- NAME@7249..7250
- IDENT@7249..7250 "a"
- L_BRACK@7250..7251 "["
- EXPR_VAR@7251..7252
- NAME@7251..7252
- IDENT@7251..7252 "i"
- R_BRACK@7252..7253 "]"
- R_BRACK@7253..7254 "]"
- R_PAREN@7254..7255 ")"
- WHITESPACE@7255..7256 " "
- TAILSTRICT_KW@7256..7266 "tailstrict"
- WHITESPACE@7266..7275 "\n "
- ELSE_KW@7275..7279 "else"
- WHITESPACE@7279..7290 "\n "
- FALSE_EXPR@7290..7325
- EXPR_APPLY@7290..7325
- EXPR_VAR@7290..7293
- NAME@7290..7293
- IDENT@7290..7293 "aux"
- ARGS_DESC@7293..7325
- L_PAREN@7293..7294 "("
- ARG@7294..7295
- EXPR_VAR@7294..7295
- NAME@7294..7295
- IDENT@7294..7295 "a"
- COMMA@7295..7296 ","
- WHITESPACE@7296..7297 " "
- ARG@7297..7298
- EXPR_VAR@7297..7298
- NAME@7297..7298
- IDENT@7297..7298 "b"
- COMMA@7298..7299 ","
- WHITESPACE@7299..7300 " "
- ARG@7300..7301
- EXPR_VAR@7300..7301
- NAME@7300..7301
- IDENT@7300..7301 "i"
- COMMA@7301..7302 ","
- WHITESPACE@7302..7303 " "
- ARG@7303..7308
- EXPR_BINARY@7303..7308
- LHS_EXPR@7303..7304
- EXPR_VAR@7303..7304
- NAME@7303..7304
- IDENT@7303..7304 "j"
- WHITESPACE@7304..7305 " "
- PLUS@7305..7306 "+"
- WHITESPACE@7306..7307 " "
- EXPR_NUMBER@7307..7308
- FLOAT@7307..7308 "1"
- COMMA@7308..7309 ","
- WHITESPACE@7309..7310 " "
- ARG@7310..7313
- EXPR_VAR@7310..7313
- NAME@7310..7313
- IDENT@7310..7313 "acc"
- R_PAREN@7313..7314 ")"
- WHITESPACE@7314..7315 " "
- TAILSTRICT_KW@7315..7325 "tailstrict"
- SEMI@7325..7326 ";"
- WHITESPACE@7326..7331 "\n "
- EXPR_APPLY@7331..7361
- EXPR_VAR@7331..7334
- NAME@7331..7334
- IDENT@7331..7334 "aux"
- ARGS_DESC@7334..7361
- L_PAREN@7334..7335 "("
- ARG@7335..7336
- EXPR_VAR@7335..7336
- NAME@7335..7336
- IDENT@7335..7336 "a"
- COMMA@7336..7337 ","
- WHITESPACE@7337..7338 " "
- ARG@7338..7339
- EXPR_VAR@7338..7339
- NAME@7338..7339
- IDENT@7338..7339 "b"
- COMMA@7339..7340 ","
- WHITESPACE@7340..7341 " "
- ARG@7341..7342
- EXPR_NUMBER@7341..7342
- FLOAT@7341..7342 "0"
- COMMA@7342..7343 ","
- WHITESPACE@7343..7344 " "
- ARG@7344..7345
- EXPR_NUMBER@7344..7345
- FLOAT@7344..7345 "0"
- COMMA@7345..7346 ","
- WHITESPACE@7346..7347 " "
- ARG@7347..7349
- EXPR_ARRAY@7347..7349
- L_BRACK@7347..7348 "["
- R_BRACK@7348..7349 "]"
- R_PAREN@7349..7350 ")"
- WHITESPACE@7350..7351 " "
- TAILSTRICT_KW@7351..7361 "tailstrict"
- COMMA@7361..7362 ","
- WHITESPACE@7362..7366 "\n\n "
- MEMBER_FIELD_METHOD@7366..8154
- FIELD_NAME_FIXED@7366..7376
- NAME@7366..7376
- IDENT@7366..7376 "mergePatch"
- PARAMS_DESC@7376..7391
- L_PAREN@7376..7377 "("
- PARAM@7377..7383
- DESTRUCT_FULL@7377..7383
- NAME@7377..7383
- IDENT@7377..7383 "target"
- COMMA@7383..7384 ","
- WHITESPACE@7384..7385 " "
- PARAM@7385..7390
- DESTRUCT_FULL@7385..7390
- NAME@7385..7390
- IDENT@7385..7390 "patch"
- R_PAREN@7390..7391 ")"
- COLONCOLON@7391..7393 "::"
- WHITESPACE@7393..7398 "\n "
- EXPR_IF_THEN_ELSE@7398..8154
- IF_KW@7398..7400 "if"
- WHITESPACE@7400..7401 " "
- EXPR_APPLY@7401..7420
- EXPR_INDEX@7401..7413
- EXPR_VAR@7401..7404
- NAME@7401..7404
- IDENT@7401..7404 "std"
- DOT@7404..7405 "."
- NAME@7405..7413
- IDENT@7405..7413 "isObject"
- ARGS_DESC@7413..7420
- L_PAREN@7413..7414 "("
- ARG@7414..7419
- EXPR_VAR@7414..7419
- NAME@7414..7419
- IDENT@7414..7419 "patch"
- R_PAREN@7419..7420 ")"
- WHITESPACE@7420..7421 " "
- THEN_KW@7421..7425 "then"
- WHITESPACE@7425..7432 "\n "
- STMT_LOCAL@7432..7506
- LOCAL_KW@7432..7437 "local"
- WHITESPACE@7437..7438 " "
- BIND_DESTRUCT@7438..7505
- DESTRUCT_FULL@7438..7451
- NAME@7438..7451
- IDENT@7438..7451 "target_object"
- WHITESPACE@7451..7452 " "
- ASSIGN@7452..7453 "="
- WHITESPACE@7453..7462 "\n "
- EXPR_IF_THEN_ELSE@7462..7505
- IF_KW@7462..7464 "if"
- WHITESPACE@7464..7465 " "
- EXPR_APPLY@7465..7485
- EXPR_INDEX@7465..7477
- EXPR_VAR@7465..7468
- NAME@7465..7468
- IDENT@7465..7468 "std"
- DOT@7468..7469 "."
- NAME@7469..7477
- IDENT@7469..7477 "isObject"
- ARGS_DESC@7477..7485
- L_PAREN@7477..7478 "("
- ARG@7478..7484
- EXPR_VAR@7478..7484
- NAME@7478..7484
- IDENT@7478..7484 "target"
- R_PAREN@7484..7485 ")"
- WHITESPACE@7485..7486 " "
- THEN_KW@7486..7490 "then"
- WHITESPACE@7490..7491 " "
- TRUE_EXPR@7491..7497
- EXPR_VAR@7491..7497
- NAME@7491..7497
- IDENT@7491..7497 "target"
- WHITESPACE@7497..7498 " "
- ELSE_KW@7498..7502 "else"
- WHITESPACE@7502..7503 " "
- FALSE_EXPR@7503..7505
- EXPR_OBJECT@7503..7505
- OBJ_BODY_MEMBER_LIST@7503..7505
- L_BRACE@7503..7504 "{"
- R_BRACE@7504..7505 "}"
- SEMI@7505..7506 ";"
- WHITESPACE@7506..7514 "\n\n "
- STMT_LOCAL@7514..7620
- LOCAL_KW@7514..7519 "local"
- WHITESPACE@7519..7520 " "
- BIND_DESTRUCT@7520..7619
- DESTRUCT_FULL@7520..7533
- NAME@7520..7533
- IDENT@7520..7533 "target_fields"
- WHITESPACE@7533..7534 " "
- ASSIGN@7534..7535 "="
- WHITESPACE@7535..7544 "\n "
- EXPR_IF_THEN_ELSE@7544..7619
- IF_KW@7544..7546 "if"
- WHITESPACE@7546..7547 " "
- EXPR_APPLY@7547..7574
- EXPR_INDEX@7547..7559
- EXPR_VAR@7547..7550
- NAME@7547..7550
- IDENT@7547..7550 "std"
- DOT@7550..7551 "."
- NAME@7551..7559
- IDENT@7551..7559 "isObject"
- ARGS_DESC@7559..7574
- L_PAREN@7559..7560 "("
- ARG@7560..7573
- EXPR_VAR@7560..7573
- NAME@7560..7573
- IDENT@7560..7573 "target_object"
- R_PAREN@7573..7574 ")"
- WHITESPACE@7574..7575 " "
- THEN_KW@7575..7579 "then"
- WHITESPACE@7579..7580 " "
- TRUE_EXPR@7580..7611
- EXPR_APPLY@7580..7611
- EXPR_INDEX@7580..7596
- EXPR_VAR@7580..7583
- NAME@7580..7583
- IDENT@7580..7583 "std"
- DOT@7583..7584 "."
- NAME@7584..7596
- IDENT@7584..7596 "objectFields"
- ARGS_DESC@7596..7611
- L_PAREN@7596..7597 "("
- ARG@7597..7610
- EXPR_VAR@7597..7610
- NAME@7597..7610
- IDENT@7597..7610 "target_object"
- R_PAREN@7610..7611 ")"
- WHITESPACE@7611..7612 " "
- ELSE_KW@7612..7616 "else"
- WHITESPACE@7616..7617 " "
- FALSE_EXPR@7617..7619
- EXPR_ARRAY@7617..7619
- L_BRACK@7617..7618 "["
- R_BRACK@7618..7619 "]"
- SEMI@7619..7620 ";"
- WHITESPACE@7620..7628 "\n\n "
- STMT_LOCAL@7628..7705
- LOCAL_KW@7628..7633 "local"
- WHITESPACE@7633..7634 " "
- BIND_DESTRUCT@7634..7704
- DESTRUCT_FULL@7634..7645
- NAME@7634..7645
- IDENT@7634..7645 "null_fields"
- WHITESPACE@7645..7646 " "
- ASSIGN@7646..7647 "="
- WHITESPACE@7647..7648 " "
- EXPR_ARRAY_COMP@7648..7704
- L_BRACK@7648..7649 "["
- EXPR_VAR@7649..7650
- NAME@7649..7650
- IDENT@7649..7650 "k"
- WHITESPACE@7650..7651 " "
- FOR_SPEC@7651..7683
- FOR_KW@7651..7654 "for"
- WHITESPACE@7654..7655 " "
- NAME@7655..7656
- IDENT@7655..7656 "k"
- WHITESPACE@7656..7657 " "
- IN_KW@7657..7659 "in"
- WHITESPACE@7659..7660 " "
- EXPR_APPLY@7660..7683
- EXPR_INDEX@7660..7676
- EXPR_VAR@7660..7663
- NAME@7660..7663
- IDENT@7660..7663 "std"
- DOT@7663..7664 "."
- NAME@7664..7676
- IDENT@7664..7676 "objectFields"
- ARGS_DESC@7676..7683
- L_PAREN@7676..7677 "("
- ARG@7677..7682
- EXPR_VAR@7677..7682
- NAME@7677..7682
- IDENT@7677..7682 "patch"
- R_PAREN@7682..7683 ")"
- WHITESPACE@7683..7684 " "
- IF_SPEC@7684..7703
- IF_KW@7684..7686 "if"
- WHITESPACE@7686..7687 " "
- EXPR_BINARY@7687..7703
- LHS_EXPR@7687..7695
- EXPR_INDEX_EXPR@7687..7695
- LHS_EXPR@7687..7692
- EXPR_VAR@7687..7692
- NAME@7687..7692
- IDENT@7687..7692 "patch"
- L_BRACK@7692..7693 "["
- EXPR_VAR@7693..7694
- NAME@7693..7694
- IDENT@7693..7694 "k"
- R_BRACK@7694..7695 "]"
- WHITESPACE@7695..7696 " "
- EQ@7696..7698 "=="
- WHITESPACE@7698..7699 " "
- EXPR_LITERAL@7699..7703
- NULL_KW@7699..7703 "null"
- R_BRACK@7703..7704 "]"
- SEMI@7704..7705 ";"
- WHITESPACE@7705..7712 "\n "
- STMT_LOCAL@7712..7785
- LOCAL_KW@7712..7717 "local"
- WHITESPACE@7717..7718 " "
- BIND_DESTRUCT@7718..7784
- DESTRUCT_FULL@7718..7729
- NAME@7718..7729
- IDENT@7718..7729 "both_fields"
- WHITESPACE@7729..7730 " "
- ASSIGN@7730..7731 "="
- WHITESPACE@7731..7732 " "
- EXPR_APPLY@7732..7784
- EXPR_INDEX@7732..7744
- EXPR_VAR@7732..7735
- NAME@7732..7735
- IDENT@7732..7735 "std"
- DOT@7735..7736 "."
- NAME@7736..7744
- IDENT@7736..7744 "setUnion"
- ARGS_DESC@7744..7784
- L_PAREN@7744..7745 "("
- ARG@7745..7758
- EXPR_VAR@7745..7758
- NAME@7745..7758
- IDENT@7745..7758 "target_fields"
- COMMA@7758..7759 ","
- WHITESPACE@7759..7760 " "
- ARG@7760..7783
- EXPR_APPLY@7760..7783
- EXPR_INDEX@7760..7776
- EXPR_VAR@7760..7763
- NAME@7760..7763
- IDENT@7760..7763 "std"
- DOT@7763..7764 "."
- NAME@7764..7776
- IDENT@7764..7776 "objectFields"
- ARGS_DESC@7776..7783
- L_PAREN@7776..7777 "("
- ARG@7777..7782
- EXPR_VAR@7777..7782
- NAME@7777..7782
- IDENT@7777..7782 "patch"
- R_PAREN@7782..7783 ")"
- R_PAREN@7783..7784 ")"
- SEMI@7784..7785 ";"
- WHITESPACE@7785..7793 "\n\n "
- TRUE_EXPR@7793..8133
- EXPR_OBJECT@7793..8133
- OBJ_BODY_COMP@7793..8133
- L_BRACE@7793..7794 "{"
- WHITESPACE@7794..7803 "\n "
- MEMBER_FIELD_NORMAL@7803..8070
- FIELD_NAME_DYNAMIC@7803..7806
- L_BRACK@7803..7804 "["
- EXPR_VAR@7804..7805
- NAME@7804..7805
- IDENT@7804..7805 "k"
- R_BRACK@7805..7806 "]"
- COLON@7806..7807 ":"
- WHITESPACE@7807..7818 "\n "
- EXPR_IF_THEN_ELSE@7818..8070
- IF_KW@7818..7820 "if"
- WHITESPACE@7820..7821 " "
- EXPR_UNARY@7821..7845
- NOT@7821..7822 "!"
- EXPR_APPLY@7822..7845
- EXPR_INDEX@7822..7835
- EXPR_VAR@7822..7825
- NAME@7822..7825
- IDENT@7822..7825 "std"
- DOT@7825..7826 "."
- NAME@7826..7835
- IDENT@7826..7835 "objectHas"
- ARGS_DESC@7835..7845
- L_PAREN@7835..7836 "("
- ARG@7836..7841
- EXPR_VAR@7836..7841
- NAME@7836..7841
- IDENT@7836..7841 "patch"
- COMMA@7841..7842 ","
- WHITESPACE@7842..7843 " "
- ARG@7843..7844
- EXPR_VAR@7843..7844
- NAME@7843..7844
- IDENT@7843..7844 "k"
- R_PAREN@7844..7845 ")"
- WHITESPACE@7845..7846 " "
- THEN_KW@7846..7850 "then"
- WHITESPACE@7850..7863 "\n "
- TRUE_EXPR@7863..7879
- EXPR_INDEX_EXPR@7863..7879
- LHS_EXPR@7863..7876
- EXPR_VAR@7863..7876
- NAME@7863..7876
- IDENT@7863..7876 "target_object"
- L_BRACK@7876..7877 "["
- EXPR_VAR@7877..7878
- NAME@7877..7878
- IDENT@7877..7878 "k"
- R_BRACK@7878..7879 "]"
- WHITESPACE@7879..7890 "\n "
- ELSE_KW@7890..7894 "else"
- WHITESPACE@7894..7895 " "
- FALSE_EXPR@7895..8070
- EXPR_IF_THEN_ELSE@7895..8070
- IF_KW@7895..7897 "if"
- WHITESPACE@7897..7898 " "
- EXPR_UNARY@7898..7930
- NOT@7898..7899 "!"
- EXPR_APPLY@7899..7930
- EXPR_INDEX@7899..7912
- EXPR_VAR@7899..7902
- NAME@7899..7902
- IDENT@7899..7902 "std"
- DOT@7902..7903 "."
- NAME@7903..7912
- IDENT@7903..7912 "objectHas"
- ARGS_DESC@7912..7930
- L_PAREN@7912..7913 "("
- ARG@7913..7926
- EXPR_VAR@7913..7926
- NAME@7913..7926
- IDENT@7913..7926 "target_object"
- COMMA@7926..7927 ","
- WHITESPACE@7927..7928 " "
- ARG@7928..7929
- EXPR_VAR@7928..7929
- NAME@7928..7929
- IDENT@7928..7929 "k"
- R_PAREN@7929..7930 ")"
- WHITESPACE@7930..7931 " "
- THEN_KW@7931..7935 "then"
- WHITESPACE@7935..7948 "\n "
- TRUE_EXPR@7948..7989
- EXPR_APPLY@7948..7989
- EXPR_INDEX@7948..7962
- EXPR_VAR@7948..7951
- NAME@7948..7951
- IDENT@7948..7951 "std"
- DOT@7951..7952 "."
- NAME@7952..7962
- IDENT@7952..7962 "mergePatch"
- ARGS_DESC@7962..7989
- L_PAREN@7962..7963 "("
- ARG@7963..7967
- EXPR_LITERAL@7963..7967
- NULL_KW@7963..7967 "null"
- COMMA@7967..7968 ","
- WHITESPACE@7968..7969 " "
- ARG@7969..7977
- EXPR_INDEX_EXPR@7969..7977
- LHS_EXPR@7969..7974
- EXPR_VAR@7969..7974
- NAME@7969..7974
- IDENT@7969..7974 "patch"
- L_BRACK@7974..7975 "["
- EXPR_VAR@7975..7976
- NAME@7975..7976
- IDENT@7975..7976 "k"
- R_BRACK@7976..7977 "]"
- R_PAREN@7977..7978 ")"
- WHITESPACE@7978..7979 " "
- TAILSTRICT_KW@7979..7989 "tailstrict"
- WHITESPACE@7989..8000 "\n "
- ELSE_KW@8000..8004 "else"
- WHITESPACE@8004..8017 "\n "
- FALSE_EXPR@8017..8070
- EXPR_APPLY@8017..8070
- EXPR_INDEX@8017..8031
- EXPR_VAR@8017..8020
- NAME@8017..8020
- IDENT@8017..8020 "std"
- DOT@8020..8021 "."
- NAME@8021..8031
- IDENT@8021..8031 "mergePatch"
- ARGS_DESC@8031..8070
- L_PAREN@8031..8032 "("
- ARG@8032..8048
- EXPR_INDEX_EXPR@8032..8048
- LHS_EXPR@8032..8045
- EXPR_VAR@8032..8045
- NAME@8032..8045
- IDENT@8032..8045 "target_object"
- L_BRACK@8045..8046 "["
- EXPR_VAR@8046..8047
- NAME@8046..8047
- IDENT@8046..8047 "k"
- R_BRACK@8047..8048 "]"
- COMMA@8048..8049 ","
- WHITESPACE@8049..8050 " "
- ARG@8050..8058
- EXPR_INDEX_EXPR@8050..8058
- LHS_EXPR@8050..8055
- EXPR_VAR@8050..8055
- NAME@8050..8055
- IDENT@8050..8055 "patch"
- L_BRACK@8055..8056 "["
- EXPR_VAR@8056..8057
- NAME@8056..8057
- IDENT@8056..8057 "k"
- R_BRACK@8057..8058 "]"
- R_PAREN@8058..8059 ")"
- WHITESPACE@8059..8060 " "
- TAILSTRICT_KW@8060..8070 "tailstrict"
- WHITESPACE@8070..8079 "\n "
- FOR_SPEC@8079..8125
- FOR_KW@8079..8082 "for"
- WHITESPACE@8082..8083 " "
- NAME@8083..8084
- IDENT@8083..8084 "k"
- WHITESPACE@8084..8085 " "
- IN_KW@8085..8087 "in"
- WHITESPACE@8087..8088 " "
- EXPR_APPLY@8088..8125
- EXPR_INDEX@8088..8099
- EXPR_VAR@8088..8091
- NAME@8088..8091
- IDENT@8088..8091 "std"
- DOT@8091..8092 "."
- NAME@8092..8099
- IDENT@8092..8099 "setDiff"
- ARGS_DESC@8099..8125
- L_PAREN@8099..8100 "("
- ARG@8100..8111
- EXPR_VAR@8100..8111
- NAME@8100..8111
- IDENT@8100..8111 "both_fields"
- COMMA@8111..8112 ","
- WHITESPACE@8112..8113 " "
- ARG@8113..8124
- EXPR_VAR@8113..8124
- NAME@8113..8124
- IDENT@8113..8124 "null_fields"
- R_PAREN@8124..8125 ")"
- WHITESPACE@8125..8132 "\n "
- R_BRACE@8132..8133 "}"
- WHITESPACE@8133..8138 "\n "
- ELSE_KW@8138..8142 "else"
- WHITESPACE@8142..8149 "\n "
- FALSE_EXPR@8149..8154
- EXPR_VAR@8149..8154
- NAME@8149..8154
- IDENT@8149..8154 "patch"
- COMMA@8154..8155 ","
- WHITESPACE@8155..8159 "\n\n "
- MEMBER_FIELD_METHOD@8159..8265
- FIELD_NAME_FIXED@8159..8162
- NAME@8159..8162
- IDENT@8159..8162 "get"
- PARAMS_DESC@8162..8199
- L_PAREN@8162..8163 "("
- PARAM@8163..8164
- DESTRUCT_FULL@8163..8164
- NAME@8163..8164
- IDENT@8163..8164 "o"
- COMMA@8164..8165 ","
- WHITESPACE@8165..8166 " "
- PARAM@8166..8167
- DESTRUCT_FULL@8166..8167
- NAME@8166..8167
- IDENT@8166..8167 "f"
- COMMA@8167..8168 ","
- WHITESPACE@8168..8169 " "
- PARAM@8169..8181
- DESTRUCT_FULL@8169..8176
- NAME@8169..8176
- IDENT@8169..8176 "default"
- ASSIGN@8176..8177 "="
- EXPR_LITERAL@8177..8181
- NULL_KW@8177..8181 "null"
- COMMA@8181..8182 ","
- WHITESPACE@8182..8183 " "
- PARAM@8183..8198
- DESTRUCT_FULL@8183..8193
- NAME@8183..8193
- IDENT@8183..8193 "inc_hidden"
- ASSIGN@8193..8194 "="
- EXPR_LITERAL@8194..8198
- TRUE_KW@8194..8198 "true"
- R_PAREN@8198..8199 ")"
- COLONCOLON@8199..8201 "::"
- WHITESPACE@8201..8206 "\n "
- EXPR_IF_THEN_ELSE@8206..8265
- IF_KW@8206..8208 "if"
- WHITESPACE@8208..8209 " "
- EXPR_APPLY@8209..8242
- EXPR_INDEX@8209..8224
- EXPR_VAR@8209..8212
- NAME@8209..8212
- IDENT@8209..8212 "std"
- DOT@8212..8213 "."
- NAME@8213..8224
- IDENT@8213..8224 "objectHasEx"
- ARGS_DESC@8224..8242
- L_PAREN@8224..8225 "("
- ARG@8225..8226
- EXPR_VAR@8225..8226
- NAME@8225..8226
- IDENT@8225..8226 "o"
- COMMA@8226..8227 ","
- WHITESPACE@8227..8228 " "
- ARG@8228..8229
- EXPR_VAR@8228..8229
- NAME@8228..8229
- IDENT@8228..8229 "f"
- COMMA@8229..8230 ","
- WHITESPACE@8230..8231 " "
- ARG@8231..8241
- EXPR_VAR@8231..8241
- NAME@8231..8241
- IDENT@8231..8241 "inc_hidden"
- R_PAREN@8241..8242 ")"
- WHITESPACE@8242..8243 " "
- THEN_KW@8243..8247 "then"
- WHITESPACE@8247..8248 " "
- TRUE_EXPR@8248..8252
- EXPR_INDEX_EXPR@8248..8252
- LHS_EXPR@8248..8249
- EXPR_VAR@8248..8249
- NAME@8248..8249
- IDENT@8248..8249 "o"
- L_BRACK@8249..8250 "["
- EXPR_VAR@8250..8251
- NAME@8250..8251
- IDENT@8250..8251 "f"
- R_BRACK@8251..8252 "]"
- WHITESPACE@8252..8253 " "
- ELSE_KW@8253..8257 "else"
- WHITESPACE@8257..8258 " "
- FALSE_EXPR@8258..8265
- EXPR_VAR@8258..8265
- NAME@8258..8265
- IDENT@8258..8265 "default"
- COMMA@8265..8266 ","
- WHITESPACE@8266..8270 "\n\n "
- MEMBER_FIELD_METHOD@8270..8320
- FIELD_NAME_FIXED@8270..8282
- NAME@8270..8282
- IDENT@8270..8282 "objectFields"
- PARAMS_DESC@8282..8285
- L_PAREN@8282..8283 "("
- PARAM@8283..8284
- DESTRUCT_FULL@8283..8284
- NAME@8283..8284
- IDENT@8283..8284 "o"
- R_PAREN@8284..8285 ")"
- COLONCOLON@8285..8287 "::"
- WHITESPACE@8287..8292 "\n "
- EXPR_APPLY@8292..8320
- EXPR_INDEX@8292..8310
- EXPR_VAR@8292..8295
- NAME@8292..8295
- IDENT@8292..8295 "std"
- DOT@8295..8296 "."
- NAME@8296..8310
- IDENT@8296..8310 "objectFieldsEx"
- ARGS_DESC@8310..8320
- L_PAREN@8310..8311 "("
- ARG@8311..8312
- EXPR_VAR@8311..8312
- NAME@8311..8312
- IDENT@8311..8312 "o"
- COMMA@8312..8313 ","
- WHITESPACE@8313..8314 " "
- ARG@8314..8319
- EXPR_LITERAL@8314..8319
- FALSE_KW@8314..8319 "false"
- R_PAREN@8319..8320 ")"
- COMMA@8320..8321 ","
- WHITESPACE@8321..8325 "\n\n "
- MEMBER_FIELD_METHOD@8325..8377
- FIELD_NAME_FIXED@8325..8340
- NAME@8325..8340
- IDENT@8325..8340 "objectFieldsAll"
- PARAMS_DESC@8340..8343
- L_PAREN@8340..8341 "("
- PARAM@8341..8342
- DESTRUCT_FULL@8341..8342
- NAME@8341..8342
- IDENT@8341..8342 "o"
- R_PAREN@8342..8343 ")"
- COLONCOLON@8343..8345 "::"
- WHITESPACE@8345..8350 "\n "
- EXPR_APPLY@8350..8377
- EXPR_INDEX@8350..8368
- EXPR_VAR@8350..8353
- NAME@8350..8353
- IDENT@8350..8353 "std"
- DOT@8353..8354 "."
- NAME@8354..8368
- IDENT@8354..8368 "objectFieldsEx"
- ARGS_DESC@8368..8377
- L_PAREN@8368..8369 "("
- ARG@8369..8370
- EXPR_VAR@8369..8370
- NAME@8369..8370
- IDENT@8369..8370 "o"
- COMMA@8370..8371 ","
- WHITESPACE@8371..8372 " "
- ARG@8372..8376
- EXPR_LITERAL@8372..8376
- TRUE_KW@8372..8376 "true"
- R_PAREN@8376..8377 ")"
- COMMA@8377..8378 ","
- WHITESPACE@8378..8382 "\n\n "
- MEMBER_FIELD_METHOD@8382..8432
- FIELD_NAME_FIXED@8382..8391
- NAME@8382..8391
- IDENT@8382..8391 "objectHas"
- PARAMS_DESC@8391..8397
- L_PAREN@8391..8392 "("
- PARAM@8392..8393
- DESTRUCT_FULL@8392..8393
- NAME@8392..8393
- IDENT@8392..8393 "o"
- COMMA@8393..8394 ","
- WHITESPACE@8394..8395 " "
- PARAM@8395..8396
- DESTRUCT_FULL@8395..8396
- NAME@8395..8396
- IDENT@8395..8396 "f"
- R_PAREN@8396..8397 ")"
- COLONCOLON@8397..8399 "::"
- WHITESPACE@8399..8404 "\n "
- EXPR_APPLY@8404..8432
- EXPR_INDEX@8404..8419
- EXPR_VAR@8404..8407
- NAME@8404..8407
- IDENT@8404..8407 "std"
- DOT@8407..8408 "."
- NAME@8408..8419
- IDENT@8408..8419 "objectHasEx"
- ARGS_DESC@8419..8432
- L_PAREN@8419..8420 "("
- ARG@8420..8421
- EXPR_VAR@8420..8421
- NAME@8420..8421
- IDENT@8420..8421 "o"
- COMMA@8421..8422 ","
- WHITESPACE@8422..8423 " "
- ARG@8423..8424
- EXPR_VAR@8423..8424
- NAME@8423..8424
- IDENT@8423..8424 "f"
- COMMA@8424..8425 ","
- WHITESPACE@8425..8426 " "
- ARG@8426..8431
- EXPR_LITERAL@8426..8431
- FALSE_KW@8426..8431 "false"
- R_PAREN@8431..8432 ")"
- COMMA@8432..8433 ","
- WHITESPACE@8433..8437 "\n\n "
- MEMBER_FIELD_METHOD@8437..8489
- FIELD_NAME_FIXED@8437..8449
- NAME@8437..8449
- IDENT@8437..8449 "objectHasAll"
- PARAMS_DESC@8449..8455
- L_PAREN@8449..8450 "("
- PARAM@8450..8451
- DESTRUCT_FULL@8450..8451
- NAME@8450..8451
- IDENT@8450..8451 "o"
- COMMA@8451..8452 ","
- WHITESPACE@8452..8453 " "
- PARAM@8453..8454
- DESTRUCT_FULL@8453..8454
- NAME@8453..8454
- IDENT@8453..8454 "f"
- R_PAREN@8454..8455 ")"
- COLONCOLON@8455..8457 "::"
- WHITESPACE@8457..8462 "\n "
- EXPR_APPLY@8462..8489
- EXPR_INDEX@8462..8477
- EXPR_VAR@8462..8465
- NAME@8462..8465
- IDENT@8462..8465 "std"
- DOT@8465..8466 "."
- NAME@8466..8477
- IDENT@8466..8477 "objectHasEx"
- ARGS_DESC@8477..8489
- L_PAREN@8477..8478 "("
- ARG@8478..8479
- EXPR_VAR@8478..8479
- NAME@8478..8479
- IDENT@8478..8479 "o"
- COMMA@8479..8480 ","
- WHITESPACE@8480..8481 " "
- ARG@8481..8482
- EXPR_VAR@8481..8482
- NAME@8481..8482
- IDENT@8481..8482 "f"
- COMMA@8482..8483 ","
- WHITESPACE@8483..8484 " "
- ARG@8484..8488
- EXPR_LITERAL@8484..8488
- TRUE_KW@8484..8488 "true"
- R_PAREN@8488..8489 ")"
- COMMA@8489..8490 ","
- WHITESPACE@8490..8494 "\n\n "
- MEMBER_FIELD_METHOD@8494..8551
- FIELD_NAME_FIXED@8494..8506
- NAME@8494..8506
- IDENT@8494..8506 "objectValues"
- PARAMS_DESC@8506..8509
- L_PAREN@8506..8507 "("
- PARAM@8507..8508
- DESTRUCT_FULL@8507..8508
- NAME@8507..8508
- IDENT@8507..8508 "o"
- R_PAREN@8508..8509 ")"
- COLONCOLON@8509..8511 "::"
- WHITESPACE@8511..8516 "\n "
- EXPR_ARRAY_COMP@8516..8551
- L_BRACK@8516..8517 "["
- EXPR_INDEX_EXPR@8517..8521
- LHS_EXPR@8517..8518
- EXPR_VAR@8517..8518
- NAME@8517..8518
- IDENT@8517..8518 "o"
- L_BRACK@8518..8519 "["
- EXPR_VAR@8519..8520
- NAME@8519..8520
- IDENT@8519..8520 "k"
- R_BRACK@8520..8521 "]"
- WHITESPACE@8521..8522 " "
- FOR_SPEC@8522..8550
- FOR_KW@8522..8525 "for"
- WHITESPACE@8525..8526 " "
- NAME@8526..8527
- IDENT@8526..8527 "k"
- WHITESPACE@8527..8528 " "
- IN_KW@8528..8530 "in"
- WHITESPACE@8530..8531 " "
- EXPR_APPLY@8531..8550
- EXPR_INDEX@8531..8547
- EXPR_VAR@8531..8534
- NAME@8531..8534
- IDENT@8531..8534 "std"
- DOT@8534..8535 "."
- NAME@8535..8547
- IDENT@8535..8547 "objectFields"
- ARGS_DESC@8547..8550
- L_PAREN@8547..8548 "("
- ARG@8548..8549
- EXPR_VAR@8548..8549
- NAME@8548..8549
- IDENT@8548..8549 "o"
- R_PAREN@8549..8550 ")"
- R_BRACK@8550..8551 "]"
- COMMA@8551..8552 ","
- WHITESPACE@8552..8556 "\n\n "
- MEMBER_FIELD_METHOD@8556..8619
- FIELD_NAME_FIXED@8556..8571
- NAME@8556..8571
- IDENT@8556..8571 "objectValuesAll"
- PARAMS_DESC@8571..8574
- L_PAREN@8571..8572 "("
- PARAM@8572..8573
- DESTRUCT_FULL@8572..8573
- NAME@8572..8573
- IDENT@8572..8573 "o"
- R_PAREN@8573..8574 ")"
- COLONCOLON@8574..8576 "::"
- WHITESPACE@8576..8581 "\n "
- EXPR_ARRAY_COMP@8581..8619
- L_BRACK@8581..8582 "["
- EXPR_INDEX_EXPR@8582..8586
- LHS_EXPR@8582..8583
- EXPR_VAR@8582..8583
- NAME@8582..8583
- IDENT@8582..8583 "o"
- L_BRACK@8583..8584 "["
- EXPR_VAR@8584..8585
- NAME@8584..8585
- IDENT@8584..8585 "k"
- R_BRACK@8585..8586 "]"
- WHITESPACE@8586..8587 " "
- FOR_SPEC@8587..8618
- FOR_KW@8587..8590 "for"
- WHITESPACE@8590..8591 " "
- NAME@8591..8592
- IDENT@8591..8592 "k"
- WHITESPACE@8592..8593 " "
- IN_KW@8593..8595 "in"
- WHITESPACE@8595..8596 " "
- EXPR_APPLY@8596..8618
- EXPR_INDEX@8596..8615
- EXPR_VAR@8596..8599
- NAME@8596..8599
- IDENT@8596..8599 "std"
- DOT@8599..8600 "."
- NAME@8600..8615
- IDENT@8600..8615 "objectFieldsAll"
- ARGS_DESC@8615..8618
- L_PAREN@8615..8616 "("
- ARG@8616..8617
- EXPR_VAR@8616..8617
- NAME@8616..8617
- IDENT@8616..8617 "o"
- R_PAREN@8617..8618 ")"
- R_BRACK@8618..8619 "]"
- COMMA@8619..8620 ","
- WHITESPACE@8620..8624 "\n\n "
- MEMBER_FIELD_METHOD@8624..8758
- FIELD_NAME_FIXED@8624..8635
- NAME@8624..8635
- IDENT@8624..8635 "resolvePath"
- PARAMS_DESC@8635..8641
- L_PAREN@8635..8636 "("
- PARAM@8636..8637
- DESTRUCT_FULL@8636..8637
- NAME@8636..8637
- IDENT@8636..8637 "f"
- COMMA@8637..8638 ","
- WHITESPACE@8638..8639 " "
- PARAM@8639..8640
- DESTRUCT_FULL@8639..8640
- NAME@8639..8640
- IDENT@8639..8640 "r"
- R_PAREN@8640..8641 ")"
- COLONCOLON@8641..8643 "::"
- WHITESPACE@8643..8648 "\n "
- STMT_LOCAL@8648..8678
- LOCAL_KW@8648..8653 "local"
- WHITESPACE@8653..8654 " "
- BIND_DESTRUCT@8654..8677
- DESTRUCT_FULL@8654..8657
- NAME@8654..8657
- IDENT@8654..8657 "arr"
- WHITESPACE@8657..8658 " "
- ASSIGN@8658..8659 "="
- WHITESPACE@8659..8660 " "
- EXPR_APPLY@8660..8677
- EXPR_INDEX@8660..8669
- EXPR_VAR@8660..8663
- NAME@8660..8663
- IDENT@8660..8663 "std"
- DOT@8663..8664 "."
- NAME@8664..8669
- IDENT@8664..8669 "split"
- ARGS_DESC@8669..8677
- L_PAREN@8669..8670 "("
- ARG@8670..8671
- EXPR_VAR@8670..8671
- NAME@8670..8671
- IDENT@8670..8671 "f"
- COMMA@8671..8672 ","
- WHITESPACE@8672..8673 " "
- ARG@8673..8676
- EXPR_STRING@8673..8676
- STRING_SINGLE@8673..8676 "'/'"
- R_PAREN@8676..8677 ")"
- SEMI@8677..8678 ";"
- WHITESPACE@8678..8683 "\n "
- EXPR_APPLY@8683..8758
- EXPR_INDEX@8683..8691
- EXPR_VAR@8683..8686
- NAME@8683..8686
- IDENT@8683..8686 "std"
- DOT@8686..8687 "."
- NAME@8687..8691
- IDENT@8687..8691 "join"
- ARGS_DESC@8691..8758
- L_PAREN@8691..8692 "("
- ARG@8692..8695
- EXPR_STRING@8692..8695
- STRING_SINGLE@8692..8695 "'/'"
- COMMA@8695..8696 ","
- WHITESPACE@8696..8697 " "
- ARG@8697..8757
- EXPR_BINARY@8697..8757
- LHS_EXPR@8697..8751
- EXPR_APPLY@8697..8751
- EXPR_INDEX@8697..8710
- EXPR_VAR@8697..8700
- NAME@8697..8700
- IDENT@8697..8700 "std"
- DOT@8700..8701 "."
- NAME@8701..8710
- IDENT@8701..8710 "makeArray"
- ARGS_DESC@8710..8751
- L_PAREN@8710..8711 "("
- ARG@8711..8730
- EXPR_BINARY@8711..8730
- LHS_EXPR@8711..8726
- EXPR_APPLY@8711..8726
- EXPR_INDEX@8711..8721
- EXPR_VAR@8711..8714
- NAME@8711..8714
- IDENT@8711..8714 "std"
- DOT@8714..8715 "."
- NAME@8715..8721
- IDENT@8715..8721 "length"
- ARGS_DESC@8721..8726
- L_PAREN@8721..8722 "("
- ARG@8722..8725
- EXPR_VAR@8722..8725
- NAME@8722..8725
- IDENT@8722..8725 "arr"
- R_PAREN@8725..8726 ")"
- WHITESPACE@8726..8727 " "
- MINUS@8727..8728 "-"
- WHITESPACE@8728..8729 " "
- EXPR_NUMBER@8729..8730
- FLOAT@8729..8730 "1"
- COMMA@8730..8731 ","
- WHITESPACE@8731..8732 " "
- ARG@8732..8750
- EXPR_FUNCTION@8732..8750
- FUNCTION_KW@8732..8740 "function"
- PARAMS_DESC@8740..8743
- L_PAREN@8740..8741 "("
- PARAM@8741..8742
- DESTRUCT_FULL@8741..8742
- NAME@8741..8742
- IDENT@8741..8742 "i"
- R_PAREN@8742..8743 ")"
- WHITESPACE@8743..8744 " "
- EXPR_INDEX_EXPR@8744..8750
- LHS_EXPR@8744..8747
- EXPR_VAR@8744..8747
- NAME@8744..8747
- IDENT@8744..8747 "arr"
- L_BRACK@8747..8748 "["
- EXPR_VAR@8748..8749
- NAME@8748..8749
- IDENT@8748..8749 "i"
- R_BRACK@8749..8750 "]"
- R_PAREN@8750..8751 ")"
- WHITESPACE@8751..8752 " "
- PLUS@8752..8753 "+"
- WHITESPACE@8753..8754 " "
- EXPR_ARRAY@8754..8757
- L_BRACK@8754..8755 "["
- EXPR_VAR@8755..8756
- NAME@8755..8756
- IDENT@8755..8756 "r"
- R_BRACK@8756..8757 "]"
- R_PAREN@8757..8758 ")"
- COMMA@8758..8759 ","
- WHITESPACE@8759..8763 "\n\n "
- MEMBER_FIELD_METHOD@8763..9216
- FIELD_NAME_FIXED@8763..8768
- NAME@8763..8768
- IDENT@8763..8768 "prune"
- PARAMS_DESC@8768..8771
- L_PAREN@8768..8769 "("
- PARAM@8769..8770
- DESTRUCT_FULL@8769..8770
- NAME@8769..8770
- IDENT@8769..8770 "a"
- R_PAREN@8770..8771 ")"
- COLONCOLON@8771..8773 "::"
- WHITESPACE@8773..8778 "\n "
- STMT_LOCAL@8778..8982
- LOCAL_KW@8778..8783 "local"
- WHITESPACE@8783..8784 " "
- BIND_FUNCTION@8784..8981
- NAME@8784..8793
- IDENT@8784..8793 "isContent"
- PARAMS_DESC@8793..8796
- L_PAREN@8793..8794 "("
- PARAM@8794..8795
- DESTRUCT_FULL@8794..8795
- NAME@8794..8795
- IDENT@8794..8795 "b"
- R_PAREN@8795..8796 ")"
- WHITESPACE@8796..8797 " "
- ASSIGN@8797..8798 "="
- WHITESPACE@8798..8805 "\n "
- EXPR_IF_THEN_ELSE@8805..8981
- IF_KW@8805..8807 "if"
- WHITESPACE@8807..8808 " "
- EXPR_BINARY@8808..8817
- LHS_EXPR@8808..8809
- EXPR_VAR@8808..8809
- NAME@8808..8809
- IDENT@8808..8809 "b"
- WHITESPACE@8809..8810 " "
- EQ@8810..8812 "=="
- WHITESPACE@8812..8813 " "
- EXPR_LITERAL@8813..8817
- NULL_KW@8813..8817 "null"
- WHITESPACE@8817..8818 " "
- THEN_KW@8818..8822 "then"
- WHITESPACE@8822..8831 "\n "
- TRUE_EXPR@8831..8836
- EXPR_LITERAL@8831..8836
- FALSE_KW@8831..8836 "false"
- WHITESPACE@8836..8843 "\n "
- ELSE_KW@8843..8847 "else"
- WHITESPACE@8847..8848 " "
- FALSE_EXPR@8848..8981
- EXPR_IF_THEN_ELSE@8848..8981
- IF_KW@8848..8850 "if"
- WHITESPACE@8850..8851 " "
- EXPR_APPLY@8851..8865
- EXPR_INDEX@8851..8862
- EXPR_VAR@8851..8854
- NAME@8851..8854
- IDENT@8851..8854 "std"
- DOT@8854..8855 "."
- NAME@8855..8862
- IDENT@8855..8862 "isArray"
- ARGS_DESC@8862..8865
- L_PAREN@8862..8863 "("
- ARG@8863..8864
- EXPR_VAR@8863..8864
- NAME@8863..8864
- IDENT@8863..8864 "b"
- R_PAREN@8864..8865 ")"
- WHITESPACE@8865..8866 " "
- THEN_KW@8866..8870 "then"
- WHITESPACE@8870..8879 "\n "
- TRUE_EXPR@8879..8896
- EXPR_BINARY@8879..8896
- LHS_EXPR@8879..8892
- EXPR_APPLY@8879..8892
- EXPR_INDEX@8879..8889
- EXPR_VAR@8879..8882
- NAME@8879..8882
- IDENT@8879..8882 "std"
- DOT@8882..8883 "."
- NAME@8883..8889
- IDENT@8883..8889 "length"
- ARGS_DESC@8889..8892
- L_PAREN@8889..8890 "("
- ARG@8890..8891
- EXPR_VAR@8890..8891
- NAME@8890..8891
- IDENT@8890..8891 "b"
- R_PAREN@8891..8892 ")"
- WHITESPACE@8892..8893 " "
- GT@8893..8894 ">"
- WHITESPACE@8894..8895 " "
- EXPR_NUMBER@8895..8896
- FLOAT@8895..8896 "0"
- WHITESPACE@8896..8903 "\n "
- ELSE_KW@8903..8907 "else"
- WHITESPACE@8907..8908 " "
- FALSE_EXPR@8908..8981
- EXPR_IF_THEN_ELSE@8908..8981
- IF_KW@8908..8910 "if"
- WHITESPACE@8910..8911 " "
- EXPR_APPLY@8911..8926
- EXPR_INDEX@8911..8923
- EXPR_VAR@8911..8914
- NAME@8911..8914
- IDENT@8911..8914 "std"
- DOT@8914..8915 "."
- NAME@8915..8923
- IDENT@8915..8923 "isObject"
- ARGS_DESC@8923..8926
- L_PAREN@8923..8924 "("
- ARG@8924..8925
- EXPR_VAR@8924..8925
- NAME@8924..8925
- IDENT@8924..8925 "b"
- R_PAREN@8925..8926 ")"
- WHITESPACE@8926..8927 " "
- THEN_KW@8927..8931 "then"
- WHITESPACE@8931..8940 "\n "
- TRUE_EXPR@8940..8957
- EXPR_BINARY@8940..8957
- LHS_EXPR@8940..8953
- EXPR_APPLY@8940..8953
- EXPR_INDEX@8940..8950
- EXPR_VAR@8940..8943
- NAME@8940..8943
- IDENT@8940..8943 "std"
- DOT@8943..8944 "."
- NAME@8944..8950
- IDENT@8944..8950 "length"
- ARGS_DESC@8950..8953
- L_PAREN@8950..8951 "("
- ARG@8951..8952
- EXPR_VAR@8951..8952
- NAME@8951..8952
- IDENT@8951..8952 "b"
- R_PAREN@8952..8953 ")"
- WHITESPACE@8953..8954 " "
- GT@8954..8955 ">"
- WHITESPACE@8955..8956 " "
- EXPR_NUMBER@8956..8957
- FLOAT@8956..8957 "0"
- WHITESPACE@8957..8964 "\n "
- ELSE_KW@8964..8968 "else"
- WHITESPACE@8968..8977 "\n "
- FALSE_EXPR@8977..8981
- EXPR_LITERAL@8977..8981
- TRUE_KW@8977..8981 "true"
- SEMI@8981..8982 ";"
- WHITESPACE@8982..8987 "\n "
- EXPR_IF_THEN_ELSE@8987..9216
- IF_KW@8987..8989 "if"
- WHITESPACE@8989..8990 " "
- EXPR_APPLY@8990..9004
- EXPR_INDEX@8990..9001
- EXPR_VAR@8990..8993
- NAME@8990..8993
- IDENT@8990..8993 "std"
- DOT@8993..8994 "."
- NAME@8994..9001
- IDENT@8994..9001 "isArray"
- ARGS_DESC@9001..9004
- L_PAREN@9001..9002 "("
- ARG@9002..9003
- EXPR_VAR@9002..9003
- NAME@9002..9003
- IDENT@9002..9003 "a"
- R_PAREN@9003..9004 ")"
- WHITESPACE@9004..9005 " "
- THEN_KW@9005..9009 "then"
- WHITESPACE@9009..9016 "\n "
- TRUE_EXPR@9016..9066
- EXPR_ARRAY_COMP@9016..9066
- L_BRACK@9016..9017 "["
- EXPR_APPLY@9017..9029
- EXPR_INDEX@9017..9026
- EXPR_VAR@9017..9020
- NAME@9017..9020
- IDENT@9017..9020 "std"
- DOT@9020..9021 "."
- NAME@9021..9026
- IDENT@9021..9026 "prune"
- ARGS_DESC@9026..9029
- L_PAREN@9026..9027 "("
- ARG@9027..9028
- EXPR_VAR@9027..9028
- NAME@9027..9028
- IDENT@9027..9028 "x"
- R_PAREN@9028..9029 ")"
- WHITESPACE@9029..9030 " "
- FOR_SPEC@9030..9040
- FOR_KW@9030..9033 "for"
- WHITESPACE@9033..9034 " "
- NAME@9034..9035
- IDENT@9034..9035 "x"
- WHITESPACE@9035..9036 " "
- IN_KW@9036..9038 "in"
- WHITESPACE@9038..9039 " "
- EXPR_VAR@9039..9040
- NAME@9039..9040
- IDENT@9039..9040 "a"
- WHITESPACE@9040..9041 " "
- IF_SPEC@9041..9065
- IF_KW@9041..9043 "if"
- WHITESPACE@9043..9044 " "
- EXPR_APPLY@9044..9065
- EXPR_VAR@9044..9053
- NAME@9044..9053
- IDENT@9044..9053 "isContent"
- ARGS_DESC@9053..9065
- L_PAREN@9053..9054 "("
- ARG@9054..9064
- EXPR_APPLY@9054..9064
- EXPR_INDEX@9054..9061
- EXPR_LITERAL@9054..9055
- DOLLAR@9054..9055 "$"
- DOT@9055..9056 "."
- NAME@9056..9061
- IDENT@9056..9061 "prune"
- ARGS_DESC@9061..9064
- L_PAREN@9061..9062 "("
- ARG@9062..9063
- EXPR_VAR@9062..9063
- NAME@9062..9063
- IDENT@9062..9063 "x"
- R_PAREN@9063..9064 ")"
- R_PAREN@9064..9065 ")"
- R_BRACK@9065..9066 "]"
- WHITESPACE@9066..9071 "\n "
- ELSE_KW@9071..9075 "else"
- WHITESPACE@9075..9076 " "
- FALSE_EXPR@9076..9216
- EXPR_IF_THEN_ELSE@9076..9216
- IF_KW@9076..9078 "if"
- WHITESPACE@9078..9079 " "
- EXPR_APPLY@9079..9094
- EXPR_INDEX@9079..9091
- EXPR_VAR@9079..9082
- NAME@9079..9082
- IDENT@9079..9082 "std"
- DOT@9082..9083 "."
- NAME@9083..9091
- IDENT@9083..9091 "isObject"
- ARGS_DESC@9091..9094
- L_PAREN@9091..9092 "("
- ARG@9092..9093
- EXPR_VAR@9092..9093
- NAME@9092..9093
- IDENT@9092..9093 "a"
- R_PAREN@9093..9094 ")"
- WHITESPACE@9094..9095 " "
- THEN_KW@9095..9099 "then"
- WHITESPACE@9099..9100 " "
- TRUE_EXPR@9100..9203
- EXPR_OBJECT@9100..9203
- OBJ_BODY_COMP@9100..9203
- L_BRACE@9100..9101 "{"
- WHITESPACE@9101..9108 "\n "
- MEMBER_FIELD_NORMAL@9108..9126
- FIELD_NAME_DYNAMIC@9108..9111
- L_BRACK@9108..9109 "["
- EXPR_VAR@9109..9110
- NAME@9109..9110
- IDENT@9109..9110 "x"
- R_BRACK@9110..9111 "]"
- COLON@9111..9112 ":"
- WHITESPACE@9112..9113 " "
- EXPR_APPLY@9113..9126
- EXPR_INDEX@9113..9120
- EXPR_LITERAL@9113..9114
- DOLLAR@9113..9114 "$"
- DOT@9114..9115 "."
- NAME@9115..9120
- IDENT@9115..9120 "prune"
- ARGS_DESC@9120..9126
- L_PAREN@9120..9121 "("
- ARG@9121..9125
- EXPR_INDEX_EXPR@9121..9125
- LHS_EXPR@9121..9122
- EXPR_VAR@9121..9122
- NAME@9121..9122
- IDENT@9121..9122 "a"
- L_BRACK@9122..9123 "["
- EXPR_VAR@9123..9124
- NAME@9123..9124
- IDENT@9123..9124 "x"
- R_BRACK@9124..9125 "]"
- R_PAREN@9125..9126 ")"
- WHITESPACE@9126..9133 "\n "
- FOR_SPEC@9133..9161
- FOR_KW@9133..9136 "for"
- WHITESPACE@9136..9137 " "
- NAME@9137..9138
- IDENT@9137..9138 "x"
- WHITESPACE@9138..9139 " "
- IN_KW@9139..9141 "in"
- WHITESPACE@9141..9142 " "
- EXPR_APPLY@9142..9161
- EXPR_INDEX@9142..9158
- EXPR_VAR@9142..9145
- NAME@9142..9145
- IDENT@9142..9145 "std"
- DOT@9145..9146 "."
- NAME@9146..9158
- IDENT@9146..9158 "objectFields"
- ARGS_DESC@9158..9161
- L_PAREN@9158..9159 "("
- ARG@9159..9160
- EXPR_VAR@9159..9160
- NAME@9159..9160
- IDENT@9159..9160 "a"
- R_PAREN@9160..9161 ")"
- WHITESPACE@9161..9168 "\n "
- IF_SPEC@9168..9197
- IF_KW@9168..9170 "if"
- WHITESPACE@9170..9171 " "
- EXPR_APPLY@9171..9197
- EXPR_VAR@9171..9180
- NAME@9171..9180
- IDENT@9171..9180 "isContent"
- ARGS_DESC@9180..9197
- L_PAREN@9180..9181 "("
- ARG@9181..9196
- EXPR_APPLY@9181..9196
- EXPR_INDEX@9181..9190
- EXPR_VAR@9181..9184
- NAME@9181..9184
- IDENT@9181..9184 "std"
- DOT@9184..9185 "."
- NAME@9185..9190
- IDENT@9185..9190 "prune"
- ARGS_DESC@9190..9196
- L_PAREN@9190..9191 "("
- ARG@9191..9195
- EXPR_INDEX_EXPR@9191..9195
- LHS_EXPR@9191..9192
- EXPR_VAR@9191..9192
- NAME@9191..9192
- IDENT@9191..9192 "a"
- L_BRACK@9192..9193 "["
- EXPR_VAR@9193..9194
- NAME@9193..9194
- IDENT@9193..9194 "x"
- R_BRACK@9194..9195 "]"
- R_PAREN@9195..9196 ")"
- R_PAREN@9196..9197 ")"
- WHITESPACE@9197..9202 "\n "
- R_BRACE@9202..9203 "}"
- WHITESPACE@9203..9204 " "
- ELSE_KW@9204..9208 "else"
- WHITESPACE@9208..9215 "\n "
- FALSE_EXPR@9215..9216
- EXPR_VAR@9215..9216
- NAME@9215..9216
- IDENT@9215..9216 "a"
- COMMA@9216..9217 ","
- WHITESPACE@9217..9221 "\n\n "
- MEMBER_FIELD_METHOD@9221..9436
- FIELD_NAME_FIXED@9221..9225
- NAME@9221..9225
- IDENT@9221..9225 "find"
- PARAMS_DESC@9225..9237
- L_PAREN@9225..9226 "("
- PARAM@9226..9231
- DESTRUCT_FULL@9226..9231
- NAME@9226..9231
- IDENT@9226..9231 "value"
- COMMA@9231..9232 ","
- WHITESPACE@9232..9233 " "
- PARAM@9233..9236
- DESTRUCT_FULL@9233..9236
- NAME@9233..9236
- IDENT@9233..9236 "arr"
- R_PAREN@9236..9237 ")"
- COLONCOLON@9237..9239 "::"
- WHITESPACE@9239..9244 "\n "
- EXPR_IF_THEN_ELSE@9244..9436
- IF_KW@9244..9246 "if"
- WHITESPACE@9246..9247 " "
- EXPR_UNARY@9247..9264
- NOT@9247..9248 "!"
- EXPR_APPLY@9248..9264
- EXPR_INDEX@9248..9259
- EXPR_VAR@9248..9251
- NAME@9248..9251
- IDENT@9248..9251 "std"
- DOT@9251..9252 "."
- NAME@9252..9259
- IDENT@9252..9259 "isArray"
- ARGS_DESC@9259..9264
- L_PAREN@9259..9260 "("
- ARG@9260..9263
- EXPR_VAR@9260..9263
- NAME@9260..9263
- IDENT@9260..9263 "arr"
- R_PAREN@9263..9264 ")"
- WHITESPACE@9264..9265 " "
- THEN_KW@9265..9269 "then"
- WHITESPACE@9269..9276 "\n "
- TRUE_EXPR@9276..9346
- EXPR_ERROR@9276..9346
- ERROR_KW@9276..9281 "error"
- WHITESPACE@9281..9282 " "
- EXPR_BINARY@9282..9346
- LHS_EXPR@9282..9330
- EXPR_STRING@9282..9330
- STRING_SINGLE@9282..9330 "'find second paramete ..."
- WHITESPACE@9330..9331 " "
- PLUS@9331..9332 "+"
- WHITESPACE@9332..9333 " "
- EXPR_APPLY@9333..9346
- EXPR_INDEX@9333..9341
- EXPR_VAR@9333..9336
- NAME@9333..9336
- IDENT@9333..9336 "std"
- DOT@9336..9337 "."
- NAME@9337..9341
- IDENT@9337..9341 "type"
- ARGS_DESC@9341..9346
- L_PAREN@9341..9342 "("
- ARG@9342..9345
- EXPR_VAR@9342..9345
- NAME@9342..9345
- IDENT@9342..9345 "arr"
- R_PAREN@9345..9346 ")"
- WHITESPACE@9346..9351 "\n "
- ELSE_KW@9351..9355 "else"
- WHITESPACE@9355..9362 "\n "
- FALSE_EXPR@9362..9436
- EXPR_APPLY@9362..9436
- EXPR_INDEX@9362..9372
- EXPR_VAR@9362..9365
- NAME@9362..9365
- IDENT@9362..9365 "std"
- DOT@9365..9366 "."
- NAME@9366..9372
- IDENT@9366..9372 "filter"
- ARGS_DESC@9372..9436
- L_PAREN@9372..9373 "("
- ARG@9373..9400
- EXPR_FUNCTION@9373..9400
- FUNCTION_KW@9373..9381 "function"
- PARAMS_DESC@9381..9384
- L_PAREN@9381..9382 "("
- PARAM@9382..9383
- DESTRUCT_FULL@9382..9383
- NAME@9382..9383
- IDENT@9382..9383 "i"
- R_PAREN@9383..9384 ")"
- WHITESPACE@9384..9385 " "
- EXPR_BINARY@9385..9400
- LHS_EXPR@9385..9391
- EXPR_INDEX_EXPR@9385..9391
- LHS_EXPR@9385..9388
- EXPR_VAR@9385..9388
- NAME@9385..9388
- IDENT@9385..9388 "arr"
- L_BRACK@9388..9389 "["
- EXPR_VAR@9389..9390
- NAME@9389..9390
- IDENT@9389..9390 "i"
- R_BRACK@9390..9391 "]"
- WHITESPACE@9391..9392 " "
- EQ@9392..9394 "=="
- WHITESPACE@9394..9395 " "
- EXPR_VAR@9395..9400
- NAME@9395..9400
- IDENT@9395..9400 "value"
- COMMA@9400..9401 ","
- WHITESPACE@9401..9402 " "
- ARG@9402..9435
- EXPR_APPLY@9402..9435
- EXPR_INDEX@9402..9411
- EXPR_VAR@9402..9405
- NAME@9402..9405
- IDENT@9402..9405 "std"
- DOT@9405..9406 "."
- NAME@9406..9411
- IDENT@9406..9411 "range"
- ARGS_DESC@9411..9435
- L_PAREN@9411..9412 "("
- ARG@9412..9413
- EXPR_NUMBER@9412..9413
- FLOAT@9412..9413 "0"
- COMMA@9413..9414 ","
- WHITESPACE@9414..9415 " "
- ARG@9415..9434
- EXPR_BINARY@9415..9434
- LHS_EXPR@9415..9430
- EXPR_APPLY@9415..9430
- EXPR_INDEX@9415..9425
- EXPR_VAR@9415..9418
- NAME@9415..9418
- IDENT@9415..9418 "std"
- DOT@9418..9419 "."
- NAME@9419..9425
- IDENT@9419..9425 "length"
- ARGS_DESC@9425..9430
- L_PAREN@9425..9426 "("
- ARG@9426..9429
- EXPR_VAR@9426..9429
- NAME@9426..9429
- IDENT@9426..9429 "arr"
- R_PAREN@9429..9430 ")"
- WHITESPACE@9430..9431 " "
- MINUS@9431..9432 "-"
- WHITESPACE@9432..9433 " "
- EXPR_NUMBER@9433..9434
- FLOAT@9433..9434 "1"
- R_PAREN@9434..9435 ")"
- R_PAREN@9435..9436 ")"
- COMMA@9436..9437 ","
- WHITESPACE@9437..9441 "\n\n "
- SINGLE_LINE_SLASH_COMMENT@9441..9451 "// Compat\n"
- WHITESPACE@9451..9453 " "
- MEMBER_FIELD_METHOD@9453..9563
- FIELD_NAME_FIXED@9453..9468
- NAME@9453..9468
- IDENT@9453..9468 "__compare_array"
- PARAMS_DESC@9468..9480
- L_PAREN@9468..9469 "("
- PARAM@9469..9473
- DESTRUCT_FULL@9469..9473
- NAME@9469..9473
- IDENT@9469..9473 "arr1"
- COMMA@9473..9474 ","
- WHITESPACE@9474..9475 " "
- PARAM@9475..9479
- DESTRUCT_FULL@9475..9479
- NAME@9475..9479
- IDENT@9475..9479 "arr2"
- R_PAREN@9479..9480 ")"
- COLONCOLON@9480..9482 "::"
- WHITESPACE@9482..9487 "\n "
- EXPR_ASSERT@9487..9563
- ASSERTION@9487..9532
- ASSERT_KW@9487..9493 "assert"
- WHITESPACE@9493..9494 " "
- LHS_EXPR@9494..9532
- EXPR_BINARY@9494..9532
- LHS_EXPR@9494..9511
- EXPR_APPLY@9494..9511
- EXPR_INDEX@9494..9505
- EXPR_VAR@9494..9497
- NAME@9494..9497
- IDENT@9494..9497 "std"
- DOT@9497..9498 "."
- NAME@9498..9505
- IDENT@9498..9505 "isArray"
- ARGS_DESC@9505..9511
- L_PAREN@9505..9506 "("
- ARG@9506..9510
- EXPR_VAR@9506..9510
- NAME@9506..9510
- IDENT@9506..9510 "arr1"
- R_PAREN@9510..9511 ")"
- WHITESPACE@9511..9512 " "
- AND@9512..9514 "&&"
- WHITESPACE@9514..9515 " "
- EXPR_APPLY@9515..9532
- EXPR_INDEX@9515..9526
- EXPR_VAR@9515..9518
- NAME@9515..9518
- IDENT@9515..9518 "std"
- DOT@9518..9519 "."
- NAME@9519..9526
- IDENT@9519..9526 "isArray"
- ARGS_DESC@9526..9532
- L_PAREN@9526..9527 "("
- ARG@9527..9531
- EXPR_VAR@9527..9531
- NAME@9527..9531
- IDENT@9527..9531 "arr2"
- R_PAREN@9531..9532 ")"
- SEMI@9532..9533 ";"
- WHITESPACE@9533..9538 "\n "
- EXPR_APPLY@9538..9563
- EXPR_INDEX@9538..9551
- EXPR_VAR@9538..9541
- NAME@9538..9541
- IDENT@9538..9541 "std"
- DOT@9541..9542 "."
- NAME@9542..9551
- IDENT@9542..9551 "__compare"
- ARGS_DESC@9551..9563
- L_PAREN@9551..9552 "("
- ARG@9552..9556
- EXPR_VAR@9552..9556
- NAME@9552..9556
- IDENT@9552..9556 "arr1"
- COMMA@9556..9557 ","
- WHITESPACE@9557..9558 " "
- ARG@9558..9562
- EXPR_VAR@9558..9562
- NAME@9558..9562
- IDENT@9558..9562 "arr2"
- R_PAREN@9562..9563 ")"
- COMMA@9563..9564 ","
- WHITESPACE@9564..9567 "\n "
- MEMBER_FIELD_METHOD@9567..9631
- FIELD_NAME_FIXED@9567..9579
- NAME@9567..9579
- IDENT@9567..9579 "__array_less"
- PARAMS_DESC@9579..9591
- L_PAREN@9579..9580 "("
- PARAM@9580..9584
- DESTRUCT_FULL@9580..9584
- NAME@9580..9584
- IDENT@9580..9584 "arr1"
- COMMA@9584..9585 ","
- WHITESPACE@9585..9586 " "
- PARAM@9586..9590
- DESTRUCT_FULL@9586..9590
- NAME@9586..9590
- IDENT@9586..9590 "arr2"
- R_PAREN@9590..9591 ")"
- COLONCOLON@9591..9593 "::"
- WHITESPACE@9593..9594 " "
- EXPR_BINARY@9594..9631
- LHS_EXPR@9594..9625
- EXPR_APPLY@9594..9625
- EXPR_INDEX@9594..9613
- EXPR_VAR@9594..9597
- NAME@9594..9597
- IDENT@9594..9597 "std"
- DOT@9597..9598 "."
- NAME@9598..9613
- IDENT@9598..9613 "__compare_array"
- ARGS_DESC@9613..9625
- L_PAREN@9613..9614 "("
- ARG@9614..9618
- EXPR_VAR@9614..9618
- NAME@9614..9618
- IDENT@9614..9618 "arr1"
- COMMA@9618..9619 ","
- WHITESPACE@9619..9620 " "
- ARG@9620..9624
- EXPR_VAR@9620..9624
- NAME@9620..9624
- IDENT@9620..9624 "arr2"
- R_PAREN@9624..9625 ")"
- WHITESPACE@9625..9626 " "
- EQ@9626..9628 "=="
- WHITESPACE@9628..9629 " "
- EXPR_UNARY@9629..9631
- MINUS@9629..9630 "-"
- EXPR_NUMBER@9630..9631
- FLOAT@9630..9631 "1"
- COMMA@9631..9632 ","
- WHITESPACE@9632..9635 "\n "
- MEMBER_FIELD_METHOD@9635..9701
- FIELD_NAME_FIXED@9635..9650
- NAME@9635..9650
- IDENT@9635..9650 "__array_greater"
- PARAMS_DESC@9650..9662
- L_PAREN@9650..9651 "("
- PARAM@9651..9655
- DESTRUCT_FULL@9651..9655
- NAME@9651..9655
- IDENT@9651..9655 "arr1"
- COMMA@9655..9656 ","
- WHITESPACE@9656..9657 " "
- PARAM@9657..9661
- DESTRUCT_FULL@9657..9661
- NAME@9657..9661
- IDENT@9657..9661 "arr2"
- R_PAREN@9661..9662 ")"
- COLONCOLON@9662..9664 "::"
- WHITESPACE@9664..9665 " "
- EXPR_BINARY@9665..9701
- LHS_EXPR@9665..9696
- EXPR_APPLY@9665..9696
- EXPR_INDEX@9665..9684
- EXPR_VAR@9665..9668
- NAME@9665..9668
- IDENT@9665..9668 "std"
- DOT@9668..9669 "."
- NAME@9669..9684
- IDENT@9669..9684 "__compare_array"
- ARGS_DESC@9684..9696
- L_PAREN@9684..9685 "("
- ARG@9685..9689
- EXPR_VAR@9685..9689
- NAME@9685..9689
- IDENT@9685..9689 "arr1"
- COMMA@9689..9690 ","
- WHITESPACE@9690..9691 " "
- ARG@9691..9695
- EXPR_VAR@9691..9695
- NAME@9691..9695
- IDENT@9691..9695 "arr2"
- R_PAREN@9695..9696 ")"
- WHITESPACE@9696..9697 " "
- EQ@9697..9699 "=="
- WHITESPACE@9699..9700 " "
- EXPR_NUMBER@9700..9701
- FLOAT@9700..9701 "1"
- COMMA@9701..9702 ","
- WHITESPACE@9702..9705 "\n "
- MEMBER_FIELD_METHOD@9705..9777
- FIELD_NAME_FIXED@9705..9726
- NAME@9705..9726
- IDENT@9705..9726 "__array_less_or_equal"
- PARAMS_DESC@9726..9738
- L_PAREN@9726..9727 "("
- PARAM@9727..9731
- DESTRUCT_FULL@9727..9731
- NAME@9727..9731
- IDENT@9727..9731 "arr1"
- COMMA@9731..9732 ","
- WHITESPACE@9732..9733 " "
- PARAM@9733..9737
- DESTRUCT_FULL@9733..9737
- NAME@9733..9737
- IDENT@9733..9737 "arr2"
- R_PAREN@9737..9738 ")"
- COLONCOLON@9738..9740 "::"
- WHITESPACE@9740..9741 " "
- EXPR_BINARY@9741..9777
- LHS_EXPR@9741..9772
- EXPR_APPLY@9741..9772
- EXPR_INDEX@9741..9760
- EXPR_VAR@9741..9744
- NAME@9741..9744
- IDENT@9741..9744 "std"
- DOT@9744..9745 "."
- NAME@9745..9760
- IDENT@9745..9760 "__compare_array"
- ARGS_DESC@9760..9772
- L_PAREN@9760..9761 "("
- ARG@9761..9765
- EXPR_VAR@9761..9765
- NAME@9761..9765
- IDENT@9761..9765 "arr1"
- COMMA@9765..9766 ","
- WHITESPACE@9766..9767 " "
- ARG@9767..9771
- EXPR_VAR@9767..9771
- NAME@9767..9771
- IDENT@9767..9771 "arr2"
- R_PAREN@9771..9772 ")"
- WHITESPACE@9772..9773 " "
- LE@9773..9775 "<="
- WHITESPACE@9775..9776 " "
- EXPR_NUMBER@9776..9777
- FLOAT@9776..9777 "0"
- COMMA@9777..9778 ","
- WHITESPACE@9778..9781 "\n "
- MEMBER_FIELD_METHOD@9781..9856
- FIELD_NAME_FIXED@9781..9805
- NAME@9781..9805
- IDENT@9781..9805 "__array_greater_or_equal"
- PARAMS_DESC@9805..9817
- L_PAREN@9805..9806 "("
- PARAM@9806..9810
- DESTRUCT_FULL@9806..9810
- NAME@9806..9810
- IDENT@9806..9810 "arr1"
- COMMA@9810..9811 ","
- WHITESPACE@9811..9812 " "
- PARAM@9812..9816
- DESTRUCT_FULL@9812..9816
- NAME@9812..9816
- IDENT@9812..9816 "arr2"
- R_PAREN@9816..9817 ")"
- COLONCOLON@9817..9819 "::"
- WHITESPACE@9819..9820 " "
- EXPR_BINARY@9820..9856
- LHS_EXPR@9820..9851
- EXPR_APPLY@9820..9851
- EXPR_INDEX@9820..9839
- EXPR_VAR@9820..9823
- NAME@9820..9823
- IDENT@9820..9823 "std"
- DOT@9823..9824 "."
- NAME@9824..9839
- IDENT@9824..9839 "__compare_array"
- ARGS_DESC@9839..9851
- L_PAREN@9839..9840 "("
- ARG@9840..9844
- EXPR_VAR@9840..9844
- NAME@9840..9844
- IDENT@9840..9844 "arr1"
- COMMA@9844..9845 ","
- WHITESPACE@9845..9846 " "
- ARG@9846..9850
- EXPR_VAR@9846..9850
- NAME@9846..9850
- IDENT@9846..9850 "arr2"
- R_PAREN@9850..9851 ")"
- WHITESPACE@9851..9852 " "
- GE@9852..9854 ">="
- WHITESPACE@9854..9855 " "
- EXPR_NUMBER@9855..9856
- FLOAT@9855..9856 "0"
- COMMA@9856..9857 ","
- WHITESPACE@9857..9858 "\n"
- R_BRACE@9858..9859 "}"
- WHITESPACE@9859..9860 "\n"
+ EXPR@6704..6705
+ EXPR_NUMBER@6704..6705
+ FLOAT@6704..6705 "1"
+ COMMA@6705..6706 ","
+ WHITESPACE@6706..6707 " "
+ ARG@6707..6725
+ EXPR@6707..6725
+ EXPR_FUNCTION@6707..6725
+ FUNCTION_KW@6707..6715 "function"
+ PARAMS_DESC@6715..6718
+ L_PAREN@6715..6716 "("
+ PARAM@6716..6717
+ DESTRUCT_FULL@6716..6717
+ NAME@6716..6717
+ IDENT@6716..6717 "i"
+ R_PAREN@6717..6718 ")"
+ WHITESPACE@6718..6719 " "
+ EXPR@6719..6725
+ EXPR_VAR@6719..6722
+ NAME@6719..6722
+ IDENT@6719..6722 "arr"
+ SUFFIX_INDEX_EXPR@6722..6725
+ L_BRACK@6722..6723 "["
+ EXPR@6723..6724
+ EXPR_VAR@6723..6724
+ NAME@6723..6724
+ IDENT@6723..6724 "i"
+ R_BRACK@6724..6725 "]"
+ R_PAREN@6725..6726 ")"
+ WHITESPACE@6726..6727 " "
+ PLUS@6727..6728 "+"
+ WHITESPACE@6728..6729 " "
+ EXPR@6729..6732
+ EXPR_ARRAY@6729..6732
+ L_BRACK@6729..6730 "["
+ EXPR@6730..6731
+ EXPR_VAR@6730..6731
+ NAME@6730..6731
+ IDENT@6730..6731 "r"
+ R_BRACK@6731..6732 "]"
+ R_PAREN@6732..6733 ")"
+ COMMA@6733..6734 ","
+ WHITESPACE@6734..6738 "\n\n "
+ MEMBER_FIELD_METHOD@6738..7191
+ FIELD_NAME_FIXED@6738..6743
+ NAME@6738..6743
+ IDENT@6738..6743 "prune"
+ PARAMS_DESC@6743..6746
+ L_PAREN@6743..6744 "("
+ PARAM@6744..6745
+ DESTRUCT_FULL@6744..6745
+ NAME@6744..6745
+ IDENT@6744..6745 "a"
+ R_PAREN@6745..6746 ")"
+ COLONCOLON@6746..6748 "::"
+ WHITESPACE@6748..6753 "\n "
+ EXPR@6753..7191
+ STMT_LOCAL@6753..6957
+ LOCAL_KW@6753..6758 "local"
+ WHITESPACE@6758..6759 " "
+ BIND_FUNCTION@6759..6956
+ NAME@6759..6768
+ IDENT@6759..6768 "isContent"
+ PARAMS_DESC@6768..6771
+ L_PAREN@6768..6769 "("
+ PARAM@6769..6770
+ DESTRUCT_FULL@6769..6770
+ NAME@6769..6770
+ IDENT@6769..6770 "b"
+ R_PAREN@6770..6771 ")"
+ WHITESPACE@6771..6772 " "
+ ASSIGN@6772..6773 "="
+ WHITESPACE@6773..6780 "\n "
+ EXPR@6780..6956
+ EXPR_IF_THEN_ELSE@6780..6956
+ IF_KW@6780..6782 "if"
+ WHITESPACE@6782..6783 " "
+ EXPR@6783..6792
+ EXPR_BINARY@6783..6792
+ EXPR@6783..6784
+ EXPR_VAR@6783..6784
+ NAME@6783..6784
+ IDENT@6783..6784 "b"
+ WHITESPACE@6784..6785 " "
+ EQ@6785..6787 "=="
+ WHITESPACE@6787..6788 " "
+ EXPR@6788..6792
+ EXPR_LITERAL@6788..6792
+ NULL_KW@6788..6792 "null"
+ WHITESPACE@6792..6793 " "
+ THEN_KW@6793..6797 "then"
+ WHITESPACE@6797..6806 "\n "
+ TRUE_EXPR@6806..6811
+ EXPR@6806..6811
+ EXPR_LITERAL@6806..6811
+ FALSE_KW@6806..6811 "false"
+ WHITESPACE@6811..6818 "\n "
+ ELSE_KW@6818..6822 "else"
+ WHITESPACE@6822..6823 " "
+ FALSE_EXPR@6823..6956
+ EXPR@6823..6956
+ EXPR_IF_THEN_ELSE@6823..6956
+ IF_KW@6823..6825 "if"
+ WHITESPACE@6825..6826 " "
+ EXPR@6826..6840
+ EXPR_VAR@6826..6829
+ NAME@6826..6829
+ IDENT@6826..6829 "std"
+ SUFFIX_INDEX@6829..6837
+ DOT@6829..6830 "."
+ NAME@6830..6837
+ IDENT@6830..6837 "isArray"
+ SUFFIX_APPLY@6837..6840
+ ARGS_DESC@6837..6840
+ L_PAREN@6837..6838 "("
+ ARG@6838..6839
+ EXPR@6838..6839
+ EXPR_VAR@6838..6839
+ NAME@6838..6839
+ IDENT@6838..6839 "b"
+ R_PAREN@6839..6840 ")"
+ WHITESPACE@6840..6841 " "
+ THEN_KW@6841..6845 "then"
+ WHITESPACE@6845..6854 "\n "
+ TRUE_EXPR@6854..6871
+ EXPR@6854..6871
+ EXPR_BINARY@6854..6871
+ EXPR@6854..6857
+ EXPR_VAR@6854..6857
+ NAME@6854..6857
+ IDENT@6854..6857 "std"
+ SUFFIX_INDEX@6857..6864
+ DOT@6857..6858 "."
+ NAME@6858..6864
+ IDENT@6858..6864 "length"
+ SUFFIX_APPLY@6864..6867
+ ARGS_DESC@6864..6867
+ L_PAREN@6864..6865 "("
+ ARG@6865..6866
+ EXPR@6865..6866
+ EXPR_VAR@6865..6866
+ NAME@6865..6866
+ IDENT@6865..6866 "b"
+ R_PAREN@6866..6867 ")"
+ WHITESPACE@6867..6868 " "
+ GT@6868..6869 ">"
+ WHITESPACE@6869..6870 " "
+ EXPR@6870..6871
+ EXPR_NUMBER@6870..6871
+ FLOAT@6870..6871 "0"
+ WHITESPACE@6871..6878 "\n "
+ ELSE_KW@6878..6882 "else"
+ WHITESPACE@6882..6883 " "
+ FALSE_EXPR@6883..6956
+ EXPR@6883..6956
+ EXPR_IF_THEN_ELSE@6883..6956
+ IF_KW@6883..6885 "if"
+ WHITESPACE@6885..6886 " "
+ EXPR@6886..6901
+ EXPR_VAR@6886..6889
+ NAME@6886..6889
+ IDENT@6886..6889 "std"
+ SUFFIX_INDEX@6889..6898
+ DOT@6889..6890 "."
+ NAME@6890..6898
+ IDENT@6890..6898 "isObject"
+ SUFFIX_APPLY@6898..6901
+ ARGS_DESC@6898..6901
+ L_PAREN@6898..6899 "("
+ ARG@6899..6900
+ EXPR@6899..6900
+ EXPR_VAR@6899..6900
+ NAME@6899..6900
+ IDENT@6899..6900 "b"
+ R_PAREN@6900..6901 ")"
+ WHITESPACE@6901..6902 " "
+ THEN_KW@6902..6906 "then"
+ WHITESPACE@6906..6915 "\n "
+ TRUE_EXPR@6915..6932
+ EXPR@6915..6932
+ EXPR_BINARY@6915..6932
+ EXPR@6915..6918
+ EXPR_VAR@6915..6918
+ NAME@6915..6918
+ IDENT@6915..6918 "std"
+ SUFFIX_INDEX@6918..6925
+ DOT@6918..6919 "."
+ NAME@6919..6925
+ IDENT@6919..6925 "length"
+ SUFFIX_APPLY@6925..6928
+ ARGS_DESC@6925..6928
+ L_PAREN@6925..6926 "("
+ ARG@6926..6927
+ EXPR@6926..6927
+ EXPR_VAR@6926..6927
+ NAME@6926..6927
+ IDENT@6926..6927 "b"
+ R_PAREN@6927..6928 ")"
+ WHITESPACE@6928..6929 " "
+ GT@6929..6930 ">"
+ WHITESPACE@6930..6931 " "
+ EXPR@6931..6932
+ EXPR_NUMBER@6931..6932
+ FLOAT@6931..6932 "0"
+ WHITESPACE@6932..6939 "\n "
+ ELSE_KW@6939..6943 "else"
+ WHITESPACE@6943..6952 "\n "
+ FALSE_EXPR@6952..6956
+ EXPR@6952..6956
+ EXPR_LITERAL@6952..6956
+ TRUE_KW@6952..6956 "true"
+ SEMI@6956..6957 ";"
+ WHITESPACE@6957..6962 "\n "
+ EXPR_IF_THEN_ELSE@6962..7191
+ IF_KW@6962..6964 "if"
+ WHITESPACE@6964..6965 " "
+ EXPR@6965..6979
+ EXPR_VAR@6965..6968
+ NAME@6965..6968
+ IDENT@6965..6968 "std"
+ SUFFIX_INDEX@6968..6976
+ DOT@6968..6969 "."
+ NAME@6969..6976
+ IDENT@6969..6976 "isArray"
+ SUFFIX_APPLY@6976..6979
+ ARGS_DESC@6976..6979
+ L_PAREN@6976..6977 "("
+ ARG@6977..6978
+ EXPR@6977..6978
+ EXPR_VAR@6977..6978
+ NAME@6977..6978
+ IDENT@6977..6978 "a"
+ R_PAREN@6978..6979 ")"
+ WHITESPACE@6979..6980 " "
+ THEN_KW@6980..6984 "then"
+ WHITESPACE@6984..6991 "\n "
+ TRUE_EXPR@6991..7041
+ EXPR@6991..7041
+ EXPR_ARRAY_COMP@6991..7041
+ L_BRACK@6991..6992 "["
+ EXPR@6992..7004
+ EXPR_VAR@6992..6995
+ NAME@6992..6995
+ IDENT@6992..6995 "std"
+ SUFFIX_INDEX@6995..7001
+ DOT@6995..6996 "."
+ NAME@6996..7001
+ IDENT@6996..7001 "prune"
+ SUFFIX_APPLY@7001..7004
+ ARGS_DESC@7001..7004
+ L_PAREN@7001..7002 "("
+ ARG@7002..7003
+ EXPR@7002..7003
+ EXPR_VAR@7002..7003
+ NAME@7002..7003
+ IDENT@7002..7003 "x"
+ R_PAREN@7003..7004 ")"
+ WHITESPACE@7004..7005 " "
+ FOR_SPEC@7005..7015
+ FOR_KW@7005..7008 "for"
+ WHITESPACE@7008..7009 " "
+ DESTRUCT_FULL@7009..7010
+ NAME@7009..7010
+ IDENT@7009..7010 "x"
+ WHITESPACE@7010..7011 " "
+ IN_KW@7011..7013 "in"
+ WHITESPACE@7013..7014 " "
+ EXPR@7014..7015
+ EXPR_VAR@7014..7015
+ NAME@7014..7015
+ IDENT@7014..7015 "a"
+ WHITESPACE@7015..7016 " "
+ IF_SPEC@7016..7040
+ IF_KW@7016..7018 "if"
+ WHITESPACE@7018..7019 " "
+ EXPR@7019..7040
+ EXPR_VAR@7019..7028
+ NAME@7019..7028
+ IDENT@7019..7028 "isContent"
+ SUFFIX_APPLY@7028..7040
+ ARGS_DESC@7028..7040
+ L_PAREN@7028..7029 "("
+ ARG@7029..7039
+ EXPR@7029..7039
+ EXPR_LITERAL@7029..7030
+ DOLLAR@7029..7030 "$"
+ SUFFIX_INDEX@7030..7036
+ DOT@7030..7031 "."
+ NAME@7031..7036
+ IDENT@7031..7036 "prune"
+ SUFFIX_APPLY@7036..7039
+ ARGS_DESC@7036..7039
+ L_PAREN@7036..7037 "("
+ ARG@7037..7038
+ EXPR@7037..7038
+ EXPR_VAR@7037..7038
+ NAME@7037..7038
+ IDENT@7037..7038 "x"
+ R_PAREN@7038..7039 ")"
+ R_PAREN@7039..7040 ")"
+ R_BRACK@7040..7041 "]"
+ WHITESPACE@7041..7046 "\n "
+ ELSE_KW@7046..7050 "else"
+ WHITESPACE@7050..7051 " "
+ FALSE_EXPR@7051..7191
+ EXPR@7051..7191
+ EXPR_IF_THEN_ELSE@7051..7191
+ IF_KW@7051..7053 "if"
+ WHITESPACE@7053..7054 " "
+ EXPR@7054..7069
+ EXPR_VAR@7054..7057
+ NAME@7054..7057
+ IDENT@7054..7057 "std"
+ SUFFIX_INDEX@7057..7066
+ DOT@7057..7058 "."
+ NAME@7058..7066
+ IDENT@7058..7066 "isObject"
+ SUFFIX_APPLY@7066..7069
+ ARGS_DESC@7066..7069
+ L_PAREN@7066..7067 "("
+ ARG@7067..7068
+ EXPR@7067..7068
+ EXPR_VAR@7067..7068
+ NAME@7067..7068
+ IDENT@7067..7068 "a"
+ R_PAREN@7068..7069 ")"
+ WHITESPACE@7069..7070 " "
+ THEN_KW@7070..7074 "then"
+ WHITESPACE@7074..7075 " "
+ TRUE_EXPR@7075..7178
+ EXPR@7075..7178
+ EXPR_OBJECT@7075..7178
+ OBJ_BODY_COMP@7075..7178
+ L_BRACE@7075..7076 "{"
+ WHITESPACE@7076..7083 "\n "
+ MEMBER_FIELD_NORMAL@7083..7101
+ FIELD_NAME_DYNAMIC@7083..7086
+ L_BRACK@7083..7084 "["
+ EXPR@7084..7085
+ EXPR_VAR@7084..7085
+ NAME@7084..7085
+ IDENT@7084..7085 "x"
+ R_BRACK@7085..7086 "]"
+ COLON@7086..7087 ":"
+ WHITESPACE@7087..7088 " "
+ EXPR@7088..7101
+ EXPR_LITERAL@7088..7089
+ DOLLAR@7088..7089 "$"
+ SUFFIX_INDEX@7089..7095
+ DOT@7089..7090 "."
+ NAME@7090..7095
+ IDENT@7090..7095 "prune"
+ SUFFIX_APPLY@7095..7101
+ ARGS_DESC@7095..7101
+ L_PAREN@7095..7096 "("
+ ARG@7096..7100
+ EXPR@7096..7100
+ EXPR_VAR@7096..7097
+ NAME@7096..7097
+ IDENT@7096..7097 "a"
+ SUFFIX_INDEX_EXPR@7097..7100
+ L_BRACK@7097..7098 "["
+ EXPR@7098..7099
+ EXPR_VAR@7098..7099
+ NAME@7098..7099
+ IDENT@7098..7099 "x"
+ R_BRACK@7099..7100 "]"
+ R_PAREN@7100..7101 ")"
+ WHITESPACE@7101..7108 "\n "
+ FOR_SPEC@7108..7136
+ FOR_KW@7108..7111 "for"
+ WHITESPACE@7111..7112 " "
+ DESTRUCT_FULL@7112..7113
+ NAME@7112..7113
+ IDENT@7112..7113 "x"
+ WHITESPACE@7113..7114 " "
+ IN_KW@7114..7116 "in"
+ WHITESPACE@7116..7117 " "
+ EXPR@7117..7136
+ EXPR_VAR@7117..7120
+ NAME@7117..7120
+ IDENT@7117..7120 "std"
+ SUFFIX_INDEX@7120..7133
+ DOT@7120..7121 "."
+ NAME@7121..7133
+ IDENT@7121..7133 "objectFields"
+ SUFFIX_APPLY@7133..7136
+ ARGS_DESC@7133..7136
+ L_PAREN@7133..7134 "("
+ ARG@7134..7135
+ EXPR@7134..7135
+ EXPR_VAR@7134..7135
+ NAME@7134..7135
+ IDENT@7134..7135 "a"
+ R_PAREN@7135..7136 ")"
+ WHITESPACE@7136..7143 "\n "
+ IF_SPEC@7143..7172
+ IF_KW@7143..7145 "if"
+ WHITESPACE@7145..7146 " "
+ EXPR@7146..7172
+ EXPR_VAR@7146..7155
+ NAME@7146..7155
+ IDENT@7146..7155 "isContent"
+ SUFFIX_APPLY@7155..7172
+ ARGS_DESC@7155..7172
+ L_PAREN@7155..7156 "("
+ ARG@7156..7171
+ EXPR@7156..7171
+ EXPR_VAR@7156..7159
+ NAME@7156..7159
+ IDENT@7156..7159 "std"
+ SUFFIX_INDEX@7159..7165
+ DOT@7159..7160 "."
+ NAME@7160..7165
+ IDENT@7160..7165 "prune"
+ SUFFIX_APPLY@7165..7171
+ ARGS_DESC@7165..7171
+ L_PAREN@7165..7166 "("
+ ARG@7166..7170
+ EXPR@7166..7170
+ EXPR_VAR@7166..7167
+ NAME@7166..7167
+ IDENT@7166..7167 "a"
+ SUFFIX_INDEX_EXPR@7167..7170
+ L_BRACK@7167..7168 "["
+ EXPR@7168..7169
+ EXPR_VAR@7168..7169
+ NAME@7168..7169
+ IDENT@7168..7169 "x"
+ R_BRACK@7169..7170 "]"
+ R_PAREN@7170..7171 ")"
+ R_PAREN@7171..7172 ")"
+ WHITESPACE@7172..7177 "\n "
+ R_BRACE@7177..7178 "}"
+ WHITESPACE@7178..7179 " "
+ ELSE_KW@7179..7183 "else"
+ WHITESPACE@7183..7190 "\n "
+ FALSE_EXPR@7190..7191
+ EXPR@7190..7191
+ EXPR_VAR@7190..7191
+ NAME@7190..7191
+ IDENT@7190..7191 "a"
+ COMMA@7191..7192 ","
+ WHITESPACE@7192..7196 "\n\n "
+ MEMBER_FIELD_METHOD@7196..7411
+ FIELD_NAME_FIXED@7196..7200
+ NAME@7196..7200
+ IDENT@7196..7200 "find"
+ PARAMS_DESC@7200..7212
+ L_PAREN@7200..7201 "("
+ PARAM@7201..7206
+ DESTRUCT_FULL@7201..7206
+ NAME@7201..7206
+ IDENT@7201..7206 "value"
+ COMMA@7206..7207 ","
+ WHITESPACE@7207..7208 " "
+ PARAM@7208..7211
+ DESTRUCT_FULL@7208..7211
+ NAME@7208..7211
+ IDENT@7208..7211 "arr"
+ R_PAREN@7211..7212 ")"
+ COLONCOLON@7212..7214 "::"
+ WHITESPACE@7214..7219 "\n "
+ EXPR@7219..7411
+ EXPR_IF_THEN_ELSE@7219..7411
+ IF_KW@7219..7221 "if"
+ WHITESPACE@7221..7222 " "
+ EXPR@7222..7239
+ EXPR_UNARY@7222..7239
+ NOT@7222..7223 "!"
+ EXPR_VAR@7223..7226
+ NAME@7223..7226
+ IDENT@7223..7226 "std"
+ SUFFIX_INDEX@7226..7234
+ DOT@7226..7227 "."
+ NAME@7227..7234
+ IDENT@7227..7234 "isArray"
+ SUFFIX_APPLY@7234..7239
+ ARGS_DESC@7234..7239
+ L_PAREN@7234..7235 "("
+ ARG@7235..7238
+ EXPR@7235..7238
+ EXPR_VAR@7235..7238
+ NAME@7235..7238
+ IDENT@7235..7238 "arr"
+ R_PAREN@7238..7239 ")"
+ WHITESPACE@7239..7240 " "
+ THEN_KW@7240..7244 "then"
+ WHITESPACE@7244..7251 "\n "
+ TRUE_EXPR@7251..7321
+ EXPR@7251..7321
+ EXPR_ERROR@7251..7321
+ ERROR_KW@7251..7256 "error"
+ WHITESPACE@7256..7257 " "
+ EXPR@7257..7321
+ EXPR_BINARY@7257..7321
+ EXPR@7257..7305
+ EXPR_STRING@7257..7305
+ STRING_SINGLE@7257..7305 "'find second paramete ..."
+ WHITESPACE@7305..7306 " "
+ PLUS@7306..7307 "+"
+ WHITESPACE@7307..7308 " "
+ EXPR@7308..7321
+ EXPR_VAR@7308..7311
+ NAME@7308..7311
+ IDENT@7308..7311 "std"
+ SUFFIX_INDEX@7311..7316
+ DOT@7311..7312 "."
+ NAME@7312..7316
+ IDENT@7312..7316 "type"
+ SUFFIX_APPLY@7316..7321
+ ARGS_DESC@7316..7321
+ L_PAREN@7316..7317 "("
+ ARG@7317..7320
+ EXPR@7317..7320
+ EXPR_VAR@7317..7320
+ NAME@7317..7320
+ IDENT@7317..7320 "arr"
+ R_PAREN@7320..7321 ")"
+ WHITESPACE@7321..7326 "\n "
+ ELSE_KW@7326..7330 "else"
+ WHITESPACE@7330..7337 "\n "
+ FALSE_EXPR@7337..7411
+ EXPR@7337..7411
+ EXPR_VAR@7337..7340
+ NAME@7337..7340
+ IDENT@7337..7340 "std"
+ SUFFIX_INDEX@7340..7347
+ DOT@7340..7341 "."
+ NAME@7341..7347
+ IDENT@7341..7347 "filter"
+ SUFFIX_APPLY@7347..7411
+ ARGS_DESC@7347..7411
+ L_PAREN@7347..7348 "("
+ ARG@7348..7375
+ EXPR@7348..7375
+ EXPR_FUNCTION@7348..7375
+ FUNCTION_KW@7348..7356 "function"
+ PARAMS_DESC@7356..7359
+ L_PAREN@7356..7357 "("
+ PARAM@7357..7358
+ DESTRUCT_FULL@7357..7358
+ NAME@7357..7358
+ IDENT@7357..7358 "i"
+ R_PAREN@7358..7359 ")"
+ WHITESPACE@7359..7360 " "
+ EXPR@7360..7375
+ EXPR_BINARY@7360..7375
+ EXPR@7360..7363
+ EXPR_VAR@7360..7363
+ NAME@7360..7363
+ IDENT@7360..7363 "arr"
+ SUFFIX_INDEX_EXPR@7363..7366
+ L_BRACK@7363..7364 "["
+ EXPR@7364..7365
+ EXPR_VAR@7364..7365
+ NAME@7364..7365
+ IDENT@7364..7365 "i"
+ R_BRACK@7365..7366 "]"
+ WHITESPACE@7366..7367 " "
+ EQ@7367..7369 "=="
+ WHITESPACE@7369..7370 " "
+ EXPR@7370..7375
+ EXPR_VAR@7370..7375
+ NAME@7370..7375
+ IDENT@7370..7375 "value"
+ COMMA@7375..7376 ","
+ WHITESPACE@7376..7377 " "
+ ARG@7377..7410
+ EXPR@7377..7410
+ EXPR_VAR@7377..7380
+ NAME@7377..7380
+ IDENT@7377..7380 "std"
+ SUFFIX_INDEX@7380..7386
+ DOT@7380..7381 "."
+ NAME@7381..7386
+ IDENT@7381..7386 "range"
+ SUFFIX_APPLY@7386..7410
+ ARGS_DESC@7386..7410
+ L_PAREN@7386..7387 "("
+ ARG@7387..7388
+ EXPR@7387..7388
+ EXPR_NUMBER@7387..7388
+ FLOAT@7387..7388 "0"
+ COMMA@7388..7389 ","
+ WHITESPACE@7389..7390 " "
+ ARG@7390..7409
+ EXPR@7390..7409
+ EXPR_BINARY@7390..7409
+ EXPR@7390..7393
+ EXPR_VAR@7390..7393
+ NAME@7390..7393
+ IDENT@7390..7393 "std"
+ SUFFIX_INDEX@7393..7400
+ DOT@7393..7394 "."
+ NAME@7394..7400
+ IDENT@7394..7400 "length"
+ SUFFIX_APPLY@7400..7405
+ ARGS_DESC@7400..7405
+ L_PAREN@7400..7401 "("
+ ARG@7401..7404
+ EXPR@7401..7404
+ EXPR_VAR@7401..7404
+ NAME@7401..7404
+ IDENT@7401..7404 "arr"
+ R_PAREN@7404..7405 ")"
+ WHITESPACE@7405..7406 " "
+ MINUS@7406..7407 "-"
+ WHITESPACE@7407..7408 " "
+ EXPR@7408..7409
+ EXPR_NUMBER@7408..7409
+ FLOAT@7408..7409 "1"
+ R_PAREN@7409..7410 ")"
+ R_PAREN@7410..7411 ")"
+ COMMA@7411..7412 ","
+ WHITESPACE@7412..7416 "\n\n "
+ SINGLE_LINE_SLASH_COMMENT@7416..7426 "// Compat\n"
+ WHITESPACE@7426..7428 " "
+ MEMBER_FIELD_METHOD@7428..7538
+ FIELD_NAME_FIXED@7428..7443
+ NAME@7428..7443
+ IDENT@7428..7443 "__compare_array"
+ PARAMS_DESC@7443..7455
+ L_PAREN@7443..7444 "("
+ PARAM@7444..7448
+ DESTRUCT_FULL@7444..7448
+ NAME@7444..7448
+ IDENT@7444..7448 "arr1"
+ COMMA@7448..7449 ","
+ WHITESPACE@7449..7450 " "
+ PARAM@7450..7454
+ DESTRUCT_FULL@7450..7454
+ NAME@7450..7454
+ IDENT@7450..7454 "arr2"
+ R_PAREN@7454..7455 ")"
+ COLONCOLON@7455..7457 "::"
+ WHITESPACE@7457..7462 "\n "
+ EXPR@7462..7538
+ STMT_ASSERT@7462..7508
+ ASSERTION@7462..7507
+ ASSERT_KW@7462..7468 "assert"
+ WHITESPACE@7468..7469 " "
+ EXPR@7469..7507
+ EXPR_BINARY@7469..7507
+ EXPR@7469..7472
+ EXPR_VAR@7469..7472
+ NAME@7469..7472
+ IDENT@7469..7472 "std"
+ SUFFIX_INDEX@7472..7480
+ DOT@7472..7473 "."
+ NAME@7473..7480
+ IDENT@7473..7480 "isArray"
+ SUFFIX_APPLY@7480..7486
+ ARGS_DESC@7480..7486
+ L_PAREN@7480..7481 "("
+ ARG@7481..7485
+ EXPR@7481..7485
+ EXPR_VAR@7481..7485
+ NAME@7481..7485
+ IDENT@7481..7485 "arr1"
+ R_PAREN@7485..7486 ")"
+ WHITESPACE@7486..7487 " "
+ AND@7487..7489 "&&"
+ WHITESPACE@7489..7490 " "
+ EXPR@7490..7507
+ EXPR_VAR@7490..7493
+ NAME@7490..7493
+ IDENT@7490..7493 "std"
+ SUFFIX_INDEX@7493..7501
+ DOT@7493..7494 "."
+ NAME@7494..7501
+ IDENT@7494..7501 "isArray"
+ SUFFIX_APPLY@7501..7507
+ ARGS_DESC@7501..7507
+ L_PAREN@7501..7502 "("
+ ARG@7502..7506
+ EXPR@7502..7506
+ EXPR_VAR@7502..7506
+ NAME@7502..7506
+ IDENT@7502..7506 "arr2"
+ R_PAREN@7506..7507 ")"
+ SEMI@7507..7508 ";"
+ WHITESPACE@7508..7513 "\n "
+ EXPR_VAR@7513..7516
+ NAME@7513..7516
+ IDENT@7513..7516 "std"
+ SUFFIX_INDEX@7516..7526
+ DOT@7516..7517 "."
+ NAME@7517..7526
+ IDENT@7517..7526 "__compare"
+ SUFFIX_APPLY@7526..7538
+ ARGS_DESC@7526..7538
+ L_PAREN@7526..7527 "("
+ ARG@7527..7531
+ EXPR@7527..7531
+ EXPR_VAR@7527..7531
+ NAME@7527..7531
+ IDENT@7527..7531 "arr1"
+ COMMA@7531..7532 ","
+ WHITESPACE@7532..7533 " "
+ ARG@7533..7537
+ EXPR@7533..7537
+ EXPR_VAR@7533..7537
+ NAME@7533..7537
+ IDENT@7533..7537 "arr2"
+ R_PAREN@7537..7538 ")"
+ COMMA@7538..7539 ","
+ WHITESPACE@7539..7542 "\n "
+ MEMBER_FIELD_METHOD@7542..7606
+ FIELD_NAME_FIXED@7542..7554
+ NAME@7542..7554
+ IDENT@7542..7554 "__array_less"
+ PARAMS_DESC@7554..7566
+ L_PAREN@7554..7555 "("
+ PARAM@7555..7559
+ DESTRUCT_FULL@7555..7559
+ NAME@7555..7559
+ IDENT@7555..7559 "arr1"
+ COMMA@7559..7560 ","
+ WHITESPACE@7560..7561 " "
+ PARAM@7561..7565
+ DESTRUCT_FULL@7561..7565
+ NAME@7561..7565
+ IDENT@7561..7565 "arr2"
+ R_PAREN@7565..7566 ")"
+ COLONCOLON@7566..7568 "::"
+ WHITESPACE@7568..7569 " "
+ EXPR@7569..7606
+ EXPR_BINARY@7569..7606
+ EXPR@7569..7572
+ EXPR_VAR@7569..7572
+ NAME@7569..7572
+ IDENT@7569..7572 "std"
+ SUFFIX_INDEX@7572..7588
+ DOT@7572..7573 "."
+ NAME@7573..7588
+ IDENT@7573..7588 "__compare_array"
+ SUFFIX_APPLY@7588..7600
+ ARGS_DESC@7588..7600
+ L_PAREN@7588..7589 "("
+ ARG@7589..7593
+ EXPR@7589..7593
+ EXPR_VAR@7589..7593
+ NAME@7589..7593
+ IDENT@7589..7593 "arr1"
+ COMMA@7593..7594 ","
+ WHITESPACE@7594..7595 " "
+ ARG@7595..7599
+ EXPR@7595..7599
+ EXPR_VAR@7595..7599
+ NAME@7595..7599
+ IDENT@7595..7599 "arr2"
+ R_PAREN@7599..7600 ")"
+ WHITESPACE@7600..7601 " "
+ EQ@7601..7603 "=="
+ WHITESPACE@7603..7604 " "
+ EXPR@7604..7606
+ EXPR_UNARY@7604..7606
+ MINUS@7604..7605 "-"
+ EXPR_NUMBER@7605..7606
+ FLOAT@7605..7606 "1"
+ COMMA@7606..7607 ","
+ WHITESPACE@7607..7610 "\n "
+ MEMBER_FIELD_METHOD@7610..7676
+ FIELD_NAME_FIXED@7610..7625
+ NAME@7610..7625
+ IDENT@7610..7625 "__array_greater"
+ PARAMS_DESC@7625..7637
+ L_PAREN@7625..7626 "("
+ PARAM@7626..7630
+ DESTRUCT_FULL@7626..7630
+ NAME@7626..7630
+ IDENT@7626..7630 "arr1"
+ COMMA@7630..7631 ","
+ WHITESPACE@7631..7632 " "
+ PARAM@7632..7636
+ DESTRUCT_FULL@7632..7636
+ NAME@7632..7636
+ IDENT@7632..7636 "arr2"
+ R_PAREN@7636..7637 ")"
+ COLONCOLON@7637..7639 "::"
+ WHITESPACE@7639..7640 " "
+ EXPR@7640..7676
+ EXPR_BINARY@7640..7676
+ EXPR@7640..7643
+ EXPR_VAR@7640..7643
+ NAME@7640..7643
+ IDENT@7640..7643 "std"
+ SUFFIX_INDEX@7643..7659
+ DOT@7643..7644 "."
+ NAME@7644..7659
+ IDENT@7644..7659 "__compare_array"
+ SUFFIX_APPLY@7659..7671
+ ARGS_DESC@7659..7671
+ L_PAREN@7659..7660 "("
+ ARG@7660..7664
+ EXPR@7660..7664
+ EXPR_VAR@7660..7664
+ NAME@7660..7664
+ IDENT@7660..7664 "arr1"
+ COMMA@7664..7665 ","
+ WHITESPACE@7665..7666 " "
+ ARG@7666..7670
+ EXPR@7666..7670
+ EXPR_VAR@7666..7670
+ NAME@7666..7670
+ IDENT@7666..7670 "arr2"
+ R_PAREN@7670..7671 ")"
+ WHITESPACE@7671..7672 " "
+ EQ@7672..7674 "=="
+ WHITESPACE@7674..7675 " "
+ EXPR@7675..7676
+ EXPR_NUMBER@7675..7676
+ FLOAT@7675..7676 "1"
+ COMMA@7676..7677 ","
+ WHITESPACE@7677..7680 "\n "
+ MEMBER_FIELD_METHOD@7680..7752
+ FIELD_NAME_FIXED@7680..7701
+ NAME@7680..7701
+ IDENT@7680..7701 "__array_less_or_equal"
+ PARAMS_DESC@7701..7713
+ L_PAREN@7701..7702 "("
+ PARAM@7702..7706
+ DESTRUCT_FULL@7702..7706
+ NAME@7702..7706
+ IDENT@7702..7706 "arr1"
+ COMMA@7706..7707 ","
+ WHITESPACE@7707..7708 " "
+ PARAM@7708..7712
+ DESTRUCT_FULL@7708..7712
+ NAME@7708..7712
+ IDENT@7708..7712 "arr2"
+ R_PAREN@7712..7713 ")"
+ COLONCOLON@7713..7715 "::"
+ WHITESPACE@7715..7716 " "
+ EXPR@7716..7752
+ EXPR_BINARY@7716..7752
+ EXPR@7716..7719
+ EXPR_VAR@7716..7719
+ NAME@7716..7719
+ IDENT@7716..7719 "std"
+ SUFFIX_INDEX@7719..7735
+ DOT@7719..7720 "."
+ NAME@7720..7735
+ IDENT@7720..7735 "__compare_array"
+ SUFFIX_APPLY@7735..7747
+ ARGS_DESC@7735..7747
+ L_PAREN@7735..7736 "("
+ ARG@7736..7740
+ EXPR@7736..7740
+ EXPR_VAR@7736..7740
+ NAME@7736..7740
+ IDENT@7736..7740 "arr1"
+ COMMA@7740..7741 ","
+ WHITESPACE@7741..7742 " "
+ ARG@7742..7746
+ EXPR@7742..7746
+ EXPR_VAR@7742..7746
+ NAME@7742..7746
+ IDENT@7742..7746 "arr2"
+ R_PAREN@7746..7747 ")"
+ WHITESPACE@7747..7748 " "
+ LE@7748..7750 "<="
+ WHITESPACE@7750..7751 " "
+ EXPR@7751..7752
+ EXPR_NUMBER@7751..7752
+ FLOAT@7751..7752 "0"
+ COMMA@7752..7753 ","
+ WHITESPACE@7753..7756 "\n "
+ MEMBER_FIELD_METHOD@7756..7831
+ FIELD_NAME_FIXED@7756..7780
+ NAME@7756..7780
+ IDENT@7756..7780 "__array_greater_or_equal"
+ PARAMS_DESC@7780..7792
+ L_PAREN@7780..7781 "("
+ PARAM@7781..7785
+ DESTRUCT_FULL@7781..7785
+ NAME@7781..7785
+ IDENT@7781..7785 "arr1"
+ COMMA@7785..7786 ","
+ WHITESPACE@7786..7787 " "
+ PARAM@7787..7791
+ DESTRUCT_FULL@7787..7791
+ NAME@7787..7791
+ IDENT@7787..7791 "arr2"
+ R_PAREN@7791..7792 ")"
+ COLONCOLON@7792..7794 "::"
+ WHITESPACE@7794..7795 " "
+ EXPR@7795..7831
+ EXPR_BINARY@7795..7831
+ EXPR@7795..7798
+ EXPR_VAR@7795..7798
+ NAME@7795..7798
+ IDENT@7795..7798 "std"
+ SUFFIX_INDEX@7798..7814
+ DOT@7798..7799 "."
+ NAME@7799..7814
+ IDENT@7799..7814 "__compare_array"
+ SUFFIX_APPLY@7814..7826
+ ARGS_DESC@7814..7826
+ L_PAREN@7814..7815 "("
+ ARG@7815..7819
+ EXPR@7815..7819
+ EXPR_VAR@7815..7819
+ NAME@7815..7819
+ IDENT@7815..7819 "arr1"
+ COMMA@7819..7820 ","
+ WHITESPACE@7820..7821 " "
+ ARG@7821..7825
+ EXPR@7821..7825
+ EXPR_VAR@7821..7825
+ NAME@7821..7825
+ IDENT@7821..7825 "arr2"
+ R_PAREN@7825..7826 ")"
+ WHITESPACE@7826..7827 " "
+ GE@7827..7829 ">="
+ WHITESPACE@7829..7830 " "
+ EXPR@7830..7831
+ EXPR_NUMBER@7830..7831
+ FLOAT@7830..7831 "0"
+ COMMA@7831..7832 ","
+ WHITESPACE@7832..7833 "\n"
+ R_BRACE@7833..7834 "}"
+ WHITESPACE@7834..7835 "\n"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_indent.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_indent.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_indent.snap
@@ -3,6 +3,6 @@
expression: "|||\n"
---
SOURCE_FILE@0..4
- EXPR_STRING@0..4
- ERROR_STRING_BLOCK_MISSING_INDENT@0..4 "|||\n"
-
+ EXPR@0..4
+ EXPR_STRING@0..4
+ ERROR_STRING_BLOCK_MISSING_INDENT@0..4 "|||\n"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_indent_text.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_indent_text.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_indent_text.snap
@@ -3,6 +3,6 @@
expression: "|||\nhello\n"
---
SOURCE_FILE@0..10
- EXPR_STRING@0..10
- ERROR_STRING_BLOCK_MISSING_INDENT@0..10 "|||\nhello\n"
-
+ EXPR@0..10
+ EXPR_STRING@0..10
+ ERROR_STRING_BLOCK_MISSING_INDENT@0..10 "|||\nhello\n"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_newline.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_newline.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_newline.snap
@@ -3,6 +3,6 @@
expression: "|||hello\n"
---
SOURCE_FILE@0..9
- EXPR_STRING@0..9
- ERROR_STRING_BLOCK_MISSING_NEW_LINE@0..9 "|||hello\n"
-
+ EXPR@0..9
+ EXPR_STRING@0..9
+ ERROR_STRING_BLOCK_MISSING_NEW_LINE@0..9 "|||hello\n"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_termination.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_termination.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_termination.snap
@@ -3,6 +3,6 @@
expression: "|||\n\thello\n"
---
SOURCE_FILE@0..11
- EXPR_STRING@0..11
- ERROR_STRING_BLOCK_UNEXPECTED_END@0..11 "|||\n\thello\n"
-
+ EXPR@0..11
+ EXPR_STRING@0..11
+ ERROR_STRING_BLOCK_UNEXPECTED_END@0..11 "|||\n\thello\n"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__unexpected_destruct.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__unexpected_destruct.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__unexpected_destruct.snap
@@ -3,22 +3,24 @@
expression: "local * = 1;\na\n"
---
SOURCE_FILE@0..15
- STMT_LOCAL@0..12
- LOCAL_KW@0..5 "local"
- WHITESPACE@5..6 " "
- BIND_DESTRUCT@6..11
- ERROR_UNEXPECTED_TOKEN@6..7
- MUL@6..7 "*"
- WHITESPACE@7..8 " "
- ASSIGN@8..9 "="
- WHITESPACE@9..10 " "
- EXPR_NUMBER@10..11
- FLOAT@10..11 "1"
- SEMI@11..12 ";"
- WHITESPACE@12..13 "\n"
- EXPR_VAR@13..14
- NAME@13..14
- IDENT@13..14 "a"
+ EXPR@0..14
+ STMT_LOCAL@0..12
+ LOCAL_KW@0..5 "local"
+ WHITESPACE@5..6 " "
+ BIND_DESTRUCT@6..11
+ ERROR_UNEXPECTED_TOKEN@6..7
+ MUL@6..7 "*"
+ WHITESPACE@7..8 " "
+ ASSIGN@8..9 "="
+ WHITESPACE@9..10 " "
+ EXPR@10..11
+ EXPR_NUMBER@10..11
+ FLOAT@10..11 "1"
+ SEMI@11..12 ";"
+ WHITESPACE@12..13 "\n"
+ EXPR_VAR@13..14
+ NAME@13..14
+ IDENT@13..14 "a"
WHITESPACE@14..15 "\n"
===
LocatedSyntaxError { error: Unexpected { expected: Named("destruction specifier"), found: MUL }, range: 6..7 }
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__wrong_field_end.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__wrong_field_end.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__wrong_field_end.snap
@@ -3,33 +3,36 @@
expression: "{\n\ta: 1;\n\tb: 2;\n}\n"
---
SOURCE_FILE@0..18
- EXPR_OBJECT@0..17
- OBJ_BODY_MEMBER_LIST@0..17
- L_BRACE@0..1 "{"
- WHITESPACE@1..3 "\n\t"
- MEMBER_FIELD_NORMAL@3..7
- FIELD_NAME_FIXED@3..4
- NAME@3..4
- IDENT@3..4 "a"
- COLON@4..5 ":"
- WHITESPACE@5..6 " "
- EXPR_NUMBER@6..7
- FLOAT@6..7 "1"
- ERROR_UNEXPECTED_TOKEN@7..8
- SEMI@7..8 ";"
- WHITESPACE@8..10 "\n\t"
- MEMBER_FIELD_NORMAL@10..14
- FIELD_NAME_FIXED@10..11
- NAME@10..11
- IDENT@10..11 "b"
- COLON@11..12 ":"
- WHITESPACE@12..13 " "
- EXPR_NUMBER@13..14
- FLOAT@13..14 "2"
- ERROR_UNEXPECTED_TOKEN@14..15
- SEMI@14..15 ";"
- WHITESPACE@15..16 "\n"
- R_BRACE@16..17 "}"
+ EXPR@0..17
+ EXPR_OBJECT@0..17
+ OBJ_BODY_MEMBER_LIST@0..17
+ L_BRACE@0..1 "{"
+ WHITESPACE@1..3 "\n\t"
+ MEMBER_FIELD_NORMAL@3..7
+ FIELD_NAME_FIXED@3..4
+ NAME@3..4
+ IDENT@3..4 "a"
+ COLON@4..5 ":"
+ WHITESPACE@5..6 " "
+ EXPR@6..7
+ EXPR_NUMBER@6..7
+ FLOAT@6..7 "1"
+ ERROR_UNEXPECTED_TOKEN@7..8
+ SEMI@7..8 ";"
+ WHITESPACE@8..10 "\n\t"
+ MEMBER_FIELD_NORMAL@10..14
+ FIELD_NAME_FIXED@10..11
+ NAME@10..11
+ IDENT@10..11 "b"
+ COLON@11..12 ":"
+ WHITESPACE@12..13 " "
+ EXPR@13..14
+ EXPR_NUMBER@13..14
+ FLOAT@13..14 "2"
+ ERROR_UNEXPECTED_TOKEN@14..15
+ SEMI@14..15 ";"
+ WHITESPACE@15..16 "\n"
+ R_BRACE@16..17 "}"
WHITESPACE@17..18 "\n"
===
LocatedSyntaxError { error: Unexpected { expected: Named("comma"), found: SEMI }, range: 7..8 }
crates/jrsonnet-rowan-parser/src/tests.rsdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/tests.rs
+++ b/crates/jrsonnet-rowan-parser/src/tests.rs
@@ -72,7 +72,7 @@
styles: ThemeStyles::none(),
});
- write!(out, "===").unwrap();
+ writeln!(out, "===").unwrap();
handler
.render_report(&mut out, &diag)
.expect("fmt error?..");
xtask/src/sourcegen/ast.rsdiffbeforeafterboth149 let mut types = HashMap::new();149 let mut types = HashMap::new();150 for field in fields.iter().filter(|f| f.token_name().is_none()) {150 for field in fields.iter().filter(|f| f.token_name().is_none()) {151 if let Some(old) = types.insert(field.ty(), field.method_name(kinds)) {151 if let Some(old) = types.insert(field.ty(), field.method_name(kinds)) {152 panic!("{name}.{} has same type as {name}.{}, resolve conflict by wrapping one field: {}", old, field.method_name(kinds), field.ty());152 // panic!("{name}.{} has same type as {name}.{}, resolve conflict by wrapping one field: {}", old, field.method_name(kinds), field.ty());153 }153 }154 // TODO: check for assignable field types, i.e you can have154 // TODO: check for assignable field types, i.e you can have155 // ```155 // ```xtask/src/sourcegen/kinds.rsdiffbeforeafterboth--- a/xtask/src/sourcegen/kinds.rs
+++ b/xtask/src/sourcegen/kinds.rs
@@ -212,6 +212,7 @@
let mut kinds = KindsSrc::new();
define_kinds![kinds =
"||" => "OR";
+ "??" => "NULL_COAELSE";
"&&" => "AND";
"|" => "BIT_OR";
"^" => "BIT_XOR";