difftreelog
feat try to parse locals as statements, not as expressions
in: master
13 files changed
crates/jrsonnet-rowan-parser/jsonnet.ungramdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/jsonnet.ungram
+++ b/crates/jrsonnet-rowan-parser/jsonnet.ungram
@@ -65,11 +65,6 @@
ExprVar =
name:Name
-ExprLocal =
- 'local'
- (Bind (',' Bind)* ','?)
- ';'
- Expr
ExprIfThenElse =
'if'
@@ -92,7 +87,15 @@
'error'
Expr
+StmtLocal =
+ 'local'
+ (Bind (',' Bind)* ','?)
+ ';'
+
Expr =
+ StmtLocal*
+ ExprBase
+ExprBase =
ExprBinary
| ExprUnary
| ExprSlice
@@ -109,7 +112,6 @@
| ExprArrayComp
| ExprImport
| ExprVar
-| ExprLocal
| ExprIfThenElse
| ExprFunction
| ExprAssert
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
@@ -19,6 +19,19 @@
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
+pub struct Expr {
+ pub(crate) syntax: SyntaxNode,
+}
+impl Expr {
+ pub fn stmt_locals(&self) -> AstChildren<StmtLocal> {
+ support::children(&self.syntax)
+ }
+ pub fn expr_base(&self) -> Option<ExprBase> {
+ support::child(&self.syntax)
+ }
+}
+
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ExprBinary {
pub(crate) syntax: SyntaxNode,
}
@@ -303,25 +316,6 @@
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct ExprLocal {
- pub(crate) syntax: SyntaxNode,
-}
-impl ExprLocal {
- 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![;])
- }
- pub fn expr(&self) -> Option<Expr> {
- support::child(&self.syntax)
- }
-}
-
-#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ExprIfThenElse {
pub(crate) syntax: SyntaxNode,
}
@@ -453,6 +447,22 @@
}
#[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,
}
@@ -810,7 +820,25 @@
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub enum Expr {
+pub enum ObjBody {
+ ObjBodyComp(ObjBodyComp),
+ ObjBodyMemberList(ObjBodyMemberList),
+}
+
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
+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),
@@ -827,32 +855,13 @@
ExprArrayComp(ExprArrayComp),
ExprImport(ExprImport),
ExprVar(ExprVar),
- ExprLocal(ExprLocal),
ExprIfThenElse(ExprIfThenElse),
ExprFunction(ExprFunction),
ExprAssert(ExprAssert),
ExprError(ExprError),
-}
-
-#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub enum ObjBody {
- ObjBodyComp(ObjBodyComp),
- ObjBodyMemberList(ObjBodyMemberList),
-}
-
-#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-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 MemberComp {
MemberBindStmt(MemberBindStmt),
MemberFieldNormal(MemberFieldNormal),
@@ -1054,6 +1063,21 @@
&self.syntax
}
}
+impl AstNode for Expr {
+ fn can_cast(kind: SyntaxKind) -> bool {
+ kind == EXPR
+ }
+ 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_BINARY
@@ -1342,22 +1366,7 @@
impl AstNode for ExprVar {
fn can_cast(kind: SyntaxKind) -> bool {
kind == EXPR_VAR
- }
- 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 ExprLocal {
- fn can_cast(kind: SyntaxKind) -> bool {
- kind == EXPR_LOCAL
- }
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
Some(Self { syntax })
@@ -1489,6 +1498,21 @@
&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
@@ -1847,175 +1871,7 @@
}
fn syntax(&self) -> &SyntaxNode {
&self.syntax
- }
-}
-impl From<ExprBinary> for Expr {
- fn from(node: ExprBinary) -> Expr {
- Expr::ExprBinary(node)
- }
-}
-impl From<ExprUnary> for Expr {
- fn from(node: ExprUnary) -> Expr {
- Expr::ExprUnary(node)
- }
-}
-impl From<ExprSlice> for Expr {
- fn from(node: ExprSlice) -> Expr {
- Expr::ExprSlice(node)
- }
-}
-impl From<ExprIndex> for Expr {
- fn from(node: ExprIndex) -> Expr {
- Expr::ExprIndex(node)
- }
-}
-impl From<ExprIndexExpr> for Expr {
- fn from(node: ExprIndexExpr) -> Expr {
- Expr::ExprIndexExpr(node)
- }
-}
-impl From<ExprApply> for Expr {
- fn from(node: ExprApply) -> Expr {
- Expr::ExprApply(node)
- }
-}
-impl From<ExprObjExtend> for Expr {
- fn from(node: ExprObjExtend) -> Expr {
- Expr::ExprObjExtend(node)
- }
-}
-impl From<ExprParened> for Expr {
- fn from(node: ExprParened) -> Expr {
- Expr::ExprParened(node)
- }
-}
-impl From<ExprString> for Expr {
- fn from(node: ExprString) -> Expr {
- Expr::ExprString(node)
- }
-}
-impl From<ExprNumber> for Expr {
- fn from(node: ExprNumber) -> Expr {
- Expr::ExprNumber(node)
- }
-}
-impl From<ExprLiteral> for Expr {
- fn from(node: ExprLiteral) -> Expr {
- Expr::ExprLiteral(node)
- }
-}
-impl From<ExprArray> for Expr {
- fn from(node: ExprArray) -> Expr {
- Expr::ExprArray(node)
- }
-}
-impl From<ExprObject> for Expr {
- fn from(node: ExprObject) -> Expr {
- Expr::ExprObject(node)
- }
-}
-impl From<ExprArrayComp> for Expr {
- fn from(node: ExprArrayComp) -> Expr {
- Expr::ExprArrayComp(node)
- }
-}
-impl From<ExprImport> for Expr {
- fn from(node: ExprImport) -> Expr {
- Expr::ExprImport(node)
- }
-}
-impl From<ExprVar> for Expr {
- fn from(node: ExprVar) -> Expr {
- Expr::ExprVar(node)
- }
-}
-impl From<ExprLocal> for Expr {
- fn from(node: ExprLocal) -> Expr {
- Expr::ExprLocal(node)
- }
-}
-impl From<ExprIfThenElse> for Expr {
- fn from(node: ExprIfThenElse) -> Expr {
- Expr::ExprIfThenElse(node)
- }
-}
-impl From<ExprFunction> for Expr {
- fn from(node: ExprFunction) -> Expr {
- Expr::ExprFunction(node)
- }
-}
-impl From<ExprAssert> for Expr {
- fn from(node: ExprAssert) -> Expr {
- Expr::ExprAssert(node)
- }
-}
-impl From<ExprError> for Expr {
- fn from(node: ExprError) -> Expr {
- Expr::ExprError(node)
- }
-}
-impl AstNode for Expr {
- 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_LOCAL
- | EXPR_IF_THEN_ELSE | EXPR_FUNCTION | EXPR_ASSERT | EXPR_ERROR => true,
- _ => false,
- }
}
- fn cast(syntax: SyntaxNode) -> Option<Self> {
- let res = match syntax.kind() {
- EXPR_BINARY => Expr::ExprBinary(ExprBinary { syntax }),
- EXPR_UNARY => Expr::ExprUnary(ExprUnary { syntax }),
- EXPR_SLICE => Expr::ExprSlice(ExprSlice { syntax }),
- EXPR_INDEX => Expr::ExprIndex(ExprIndex { syntax }),
- EXPR_INDEX_EXPR => Expr::ExprIndexExpr(ExprIndexExpr { syntax }),
- EXPR_APPLY => Expr::ExprApply(ExprApply { syntax }),
- EXPR_OBJ_EXTEND => Expr::ExprObjExtend(ExprObjExtend { syntax }),
- EXPR_PARENED => Expr::ExprParened(ExprParened { syntax }),
- EXPR_STRING => Expr::ExprString(ExprString { syntax }),
- EXPR_NUMBER => Expr::ExprNumber(ExprNumber { syntax }),
- EXPR_LITERAL => Expr::ExprLiteral(ExprLiteral { syntax }),
- EXPR_ARRAY => Expr::ExprArray(ExprArray { syntax }),
- EXPR_OBJECT => Expr::ExprObject(ExprObject { syntax }),
- EXPR_ARRAY_COMP => Expr::ExprArrayComp(ExprArrayComp { syntax }),
- EXPR_IMPORT => Expr::ExprImport(ExprImport { syntax }),
- EXPR_VAR => Expr::ExprVar(ExprVar { syntax }),
- EXPR_LOCAL => Expr::ExprLocal(ExprLocal { syntax }),
- EXPR_IF_THEN_ELSE => Expr::ExprIfThenElse(ExprIfThenElse { syntax }),
- EXPR_FUNCTION => Expr::ExprFunction(ExprFunction { syntax }),
- EXPR_ASSERT => Expr::ExprAssert(ExprAssert { syntax }),
- EXPR_ERROR => Expr::ExprError(ExprError { syntax }),
- _ => return None,
- };
- Some(res)
- }
- fn syntax(&self) -> &SyntaxNode {
- match self {
- Expr::ExprBinary(it) => &it.syntax,
- Expr::ExprUnary(it) => &it.syntax,
- Expr::ExprSlice(it) => &it.syntax,
- Expr::ExprIndex(it) => &it.syntax,
- Expr::ExprIndexExpr(it) => &it.syntax,
- Expr::ExprApply(it) => &it.syntax,
- Expr::ExprObjExtend(it) => &it.syntax,
- Expr::ExprParened(it) => &it.syntax,
- Expr::ExprString(it) => &it.syntax,
- Expr::ExprNumber(it) => &it.syntax,
- Expr::ExprLiteral(it) => &it.syntax,
- Expr::ExprArray(it) => &it.syntax,
- Expr::ExprObject(it) => &it.syntax,
- Expr::ExprArrayComp(it) => &it.syntax,
- Expr::ExprImport(it) => &it.syntax,
- Expr::ExprVar(it) => &it.syntax,
- Expr::ExprLocal(it) => &it.syntax,
- Expr::ExprIfThenElse(it) => &it.syntax,
- Expr::ExprFunction(it) => &it.syntax,
- Expr::ExprAssert(it) => &it.syntax,
- Expr::ExprError(it) => &it.syntax,
- }
- }
}
impl From<ObjBodyComp> for ObjBody {
fn from(node: ObjBodyComp) -> ObjBody {
@@ -2113,6 +1969,167 @@
}
}
}
+impl From<ExprBinary> for ExprBase {
+ fn from(node: ExprBinary) -> ExprBase {
+ ExprBase::ExprBinary(node)
+ }
+}
+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)
+ }
+}
+impl From<ExprParened> for ExprBase {
+ fn from(node: ExprParened) -> ExprBase {
+ ExprBase::ExprParened(node)
+ }
+}
+impl From<ExprString> for ExprBase {
+ fn from(node: ExprString) -> ExprBase {
+ ExprBase::ExprString(node)
+ }
+}
+impl From<ExprNumber> for ExprBase {
+ fn from(node: ExprNumber) -> ExprBase {
+ ExprBase::ExprNumber(node)
+ }
+}
+impl From<ExprLiteral> for ExprBase {
+ fn from(node: ExprLiteral) -> ExprBase {
+ ExprBase::ExprLiteral(node)
+ }
+}
+impl From<ExprArray> for ExprBase {
+ fn from(node: ExprArray) -> ExprBase {
+ ExprBase::ExprArray(node)
+ }
+}
+impl From<ExprObject> for ExprBase {
+ fn from(node: ExprObject) -> ExprBase {
+ ExprBase::ExprObject(node)
+ }
+}
+impl From<ExprArrayComp> for ExprBase {
+ fn from(node: ExprArrayComp) -> ExprBase {
+ ExprBase::ExprArrayComp(node)
+ }
+}
+impl From<ExprImport> for ExprBase {
+ fn from(node: ExprImport) -> ExprBase {
+ ExprBase::ExprImport(node)
+ }
+}
+impl From<ExprVar> for ExprBase {
+ fn from(node: ExprVar) -> ExprBase {
+ ExprBase::ExprVar(node)
+ }
+}
+impl From<ExprIfThenElse> for ExprBase {
+ fn from(node: ExprIfThenElse) -> ExprBase {
+ ExprBase::ExprIfThenElse(node)
+ }
+}
+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 {
+ fn from(node: ExprError) -> ExprBase {
+ ExprBase::ExprError(node)
+ }
+}
+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,
+ _ => false,
+ }
+ }
+ fn cast(syntax: SyntaxNode) -> Option<Self> {
+ 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 }),
+ EXPR_NUMBER => ExprBase::ExprNumber(ExprNumber { syntax }),
+ EXPR_LITERAL => ExprBase::ExprLiteral(ExprLiteral { syntax }),
+ EXPR_ARRAY => ExprBase::ExprArray(ExprArray { syntax }),
+ EXPR_OBJECT => ExprBase::ExprObject(ExprObject { syntax }),
+ EXPR_ARRAY_COMP => ExprBase::ExprArrayComp(ExprArrayComp { syntax }),
+ EXPR_IMPORT => ExprBase::ExprImport(ExprImport { syntax }),
+ 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,
+ };
+ Some(res)
+ }
+ fn syntax(&self) -> &SyntaxNode {
+ 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,
+ ExprBase::ExprNumber(it) => &it.syntax,
+ ExprBase::ExprLiteral(it) => &it.syntax,
+ ExprBase::ExprArray(it) => &it.syntax,
+ ExprBase::ExprObject(it) => &it.syntax,
+ ExprBase::ExprArrayComp(it) => &it.syntax,
+ ExprBase::ExprImport(it) => &it.syntax,
+ 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,
+ }
+ }
+}
impl From<MemberBindStmt> for MemberComp {
fn from(node: MemberBindStmt) -> MemberComp {
MemberComp::MemberBindStmt(node)
@@ -2725,22 +2742,22 @@
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for Expr {
+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 ObjBody {
+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 CompSpec {
+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 Bind {
+impl std::fmt::Display for ExprBase {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
@@ -2775,6 +2792,11 @@
std::fmt::Display::fmt(self.syntax(), f)
}
}
+impl std::fmt::Display for Expr {
+ 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)
@@ -2875,11 +2897,6 @@
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for ExprLocal {
- fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
- std::fmt::Display::fmt(self.syntax(), f)
- }
-}
impl std::fmt::Display for ExprIfThenElse {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
@@ -2920,6 +2937,11 @@
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)
+ }
+}
impl std::fmt::Display for SliceDescEnd {
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
@@ -143,8 +143,6 @@
IMPORTBIN_KW,
#[token("import")]
IMPORT_KW,
- #[token("local")]
- LOCAL_KW,
#[token("if")]
IF_KW,
#[token("then")]
@@ -155,6 +153,8 @@
FUNCTION_KW,
#[token("error")]
ERROR_KW,
+ #[token("local")]
+ LOCAL_KW,
#[token("in")]
IN_KW,
META_OBJECT_APPLY,
@@ -180,6 +180,7 @@
#[error]
LEXING_ERROR,
SOURCE_FILE,
+ EXPR,
EXPR_BINARY,
LHS_EXPR,
EXPR_UNARY,
@@ -200,7 +201,6 @@
EXPR_ARRAY_COMP,
EXPR_IMPORT,
EXPR_VAR,
- EXPR_LOCAL,
EXPR_IF_THEN_ELSE,
TRUE_EXPR,
FALSE_EXPR,
@@ -209,6 +209,7 @@
EXPR_ASSERT,
ASSERTION,
EXPR_ERROR,
+ STMT_LOCAL,
SLICE_DESC_END,
SLICE_DESC_STEP,
ARG,
@@ -233,10 +234,10 @@
DESTRUCT_OBJECT_FIELD,
DESTRUCT_REST,
DESTRUCT_ARRAY_ELEMENT,
- EXPR,
OBJ_BODY,
COMP_SPEC,
BIND,
+ EXPR_BASE,
MEMBER_COMP,
MEMBER,
FIELD_NAME,
@@ -262,17 +263,17 @@
| 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 | LOCAL_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,
+ | 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,
_ => false,
}
}
pub fn is_enum(self) -> bool {
match self {
- EXPR | OBJ_BODY | COMP_SPEC | BIND | MEMBER_COMP | MEMBER | FIELD_NAME | DESTRUCT
- | DESTRUCT_ARRAY_PART | BINARY_OPERATOR | UNARY_OPERATOR | LITERAL | TEXT | NUMBER
- | IMPORT_KIND | VISIBILITY | TRIVIA | CUSTOM_ERROR => true,
+ 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,
_ => false,
}
}
@@ -285,5 +286,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 } ; [local] => { $ crate :: SyntaxKind :: LOCAL_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 } }
+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 } }
pub use T;
crates/jrsonnet-rowan-parser/src/parser.rsdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/parser.rs
+++ b/crates/jrsonnet-rowan-parser/src/parser.rs
@@ -293,6 +293,26 @@
}
fn expr(p: &mut Parser) -> CompletedMarker {
+ while p.at(T![local]) {
+ let m = p.start();
+
+ p.bump();
+ loop {
+ if p.at(T![;]) {
+ p.bump();
+ break;
+ }
+ bind(p);
+
+ if p.at(T![,]) {
+ p.bump();
+ continue;
+ }
+ p.expect(T![;]);
+ break;
+ }
+ m.complete(p, STMT_LOCAL);
+ }
match expr_binding_power(p, 0) {
Ok(m) => m,
Err(m) => m,
@@ -658,6 +678,7 @@
m.complete(p, SLICE_DESC);
true
}
+
fn lhs(p: &mut Parser) -> Result<CompletedMarker, CompletedMarker> {
let mut lhs = lhs_basic(p)?;
@@ -853,25 +874,6 @@
array(p)
} else if p.at(T!['{']) {
object(p)
- } else if p.at(T![local]) {
- let m = p.start();
- p.bump();
- loop {
- if p.at(T![;]) {
- p.bump();
- break;
- }
- bind(p);
-
- if p.at(T![,]) {
- p.bump();
- continue;
- }
- p.expect(T![;]);
- break;
- }
- expr(p);
- m.complete(p, EXPR_LOCAL)
} else if p.at(T![function]) {
let m = p.start();
p.bump();
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,7 +3,7 @@
expression: "local intr = $intrinsic(test);\n\nlocal a = 1, b = 2, c = a + b;\n\n[c]\n"
---
SOURCE_FILE@0..68
- EXPR_LOCAL@0..29
+ STMT_LOCAL@0..23
LOCAL_KW@0..5 "local"
WHITESPACE@5..6 " "
BIND_DESTRUCT@6..14
@@ -17,12 +17,12 @@
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_PARENED@23..29
+ L_PAREN@23..24 "("
+ 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"
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,7 +3,7 @@
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
- EXPR_LOCAL@0..292
+ STMT_LOCAL@0..22
LOCAL_KW@0..5 "local"
WHITESPACE@5..6 " "
BIND_DESTRUCT@6..21
@@ -30,226 +30,225 @@
NAME@18..21
IDENT@18..21 "arr"
SEMI@21..22 ";"
- WHITESPACE@22..23 "\n"
- EXPR_LOCAL@23..292
- 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"
- EXPR_LOCAL@50..292
- 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"
- EXPR_LOCAL@77..292
- 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"
- EXPR_LOCAL@104..292
- 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"
- EXPR_LOCAL@134..292
- 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"
- EXPR_LOCAL@164..292
- 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"
- EXPR_LOCAL@195..292
- 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"
- EXPR_LOCAL@218..292
- 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"
- EXPR_LOCAL@251..292
- 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"
+ 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"
WHITESPACE@292..293 "\n"
-
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,7 +3,7 @@
expression: "local\n\ta(x) = x,\n\ta = function(x) x,\n; c\n"
---
SOURCE_FILE@0..41
- EXPR_LOCAL@0..40
+ STMT_LOCAL@0..38
LOCAL_KW@0..5 "local"
WHITESPACE@5..7 "\n\t"
BIND_FUNCTION@7..15
@@ -45,8 +45,8 @@
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@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,7 +3,7 @@
expression: "local a =\nlocal b = 3;\n1\n"
---
SOURCE_FILE@0..25
- EXPR_LOCAL@0..25
+ STMT_LOCAL@0..25
LOCAL_KW@0..5 "local"
WHITESPACE@5..6 " "
BIND_DESTRUCT@6..24
@@ -13,7 +13,7 @@
WHITESPACE@7..8 " "
ASSIGN@8..9 "="
WHITESPACE@9..10 "\n"
- EXPR_LOCAL@10..24
+ STMT_LOCAL@10..22
LOCAL_KW@10..15 "local"
WHITESPACE@15..16 " "
BIND_DESTRUCT@16..21
@@ -26,12 +26,12 @@
EXPR_NUMBER@20..21
FLOAT@20..21 "3"
SEMI@21..22 ";"
- WHITESPACE@22..23 "\n"
- EXPR_NUMBER@23..24
- FLOAT@23..24 "1"
+ 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: Named("expression") }, range: 25..25 }
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_novalue.snapdiffbeforeafterboth3expression: "local a =\n"3expression: "local a =\n"4---4---5SOURCE_FILE@0..105SOURCE_FILE@0..106 EXPR_LOCAL@0..106 STMT_LOCAL@0..107 LOCAL_KW@0..5 "local"7 LOCAL_KW@0..5 "local"8 WHITESPACE@5..6 " "8 WHITESPACE@5..6 " "9 BIND_DESTRUCT@6..109 BIND_DESTRUCT@6..1015 WHITESPACE@9..10 "\n"15 WHITESPACE@9..10 "\n"16 ERROR_MISSING_TOKEN@10..1016 ERROR_MISSING_TOKEN@10..1017 ERROR_MISSING_TOKEN@10..1017 ERROR_MISSING_TOKEN@10..1018 ERROR_MISSING_TOKEN@10..1018 ERROR_MISSING_TOKEN@10..1019===19===20LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 10..10 }20LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 10..10 }21LocatedSyntaxError { error: Missing { expected: Unnamed(SyntaxKindSet([SEMI, COMMA])) }, range: 10..10 }21LocatedSyntaxError { error: Missing { expected: Unnamed(SyntaxKindSet([SEMI, COMMA])) }, range: 10..10 }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,10 +1,10 @@
---
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 uniq(arr, keyF=id)::\n local f(a, b) =\n if std.length(a) == 0 then\n [b]\n else if keyF(a[std.length(a) - 1]) == keyF(b) then\n a\n else\n a + [b];\n std.foldl(f, arr, []),\n\n set(arr, keyF=id)::\n std.uniq(std.sort(arr, keyF), keyF),\n\n setMember(x, arr, keyF=id)::\n // TODO(dcunnin): Binary chop for O(log n) complexity\n std.length(std.setInter([x], arr, keyF)) > 0,\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 setInter(a, b, keyF=id)::\n local aux(a, b, i, j, acc) =\n if i >= std.length(a) || j >= std.length(b) then\n acc\n else\n if keyF(a[i]) == keyF(b[j]) then\n aux(a, b, i + 1, j + 1, acc + [a[i]]) tailstrict\n else if keyF(a[i]) < keyF(b[j]) then\n aux(a, b, i + 1, j, acc) tailstrict\n else\n aux(a, b, i, j + 1, acc) tailstrict;\n aux(a, b, 0, 0, []) tailstrict,\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"
+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"
---
-SOURCE_FILE@0..10282
- EXPR_OBJECT@0..10281
- OBJ_BODY_MEMBER_LIST@0..10281
+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
@@ -216,7 +216,7 @@
R_PAREN@424..425 ")"
COLONCOLON@425..427 "::"
WHITESPACE@427..432 "\n "
- EXPR_LOCAL@432..578
+ STMT_LOCAL@432..460
LOCAL_KW@432..437 "local"
WHITESPACE@437..438 " "
BIND_DESTRUCT@438..459
@@ -242,108 +242,108 @@
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"
+ 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
@@ -546,160 +546,160 @@
WHITESPACE@839..844 "\n "
ELSE_KW@844..848 "else"
WHITESPACE@848..855 "\n "
- FALSE_EXPR@855..1024
- EXPR_LOCAL@855..1024
- 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"
- R_PAREN@919..920 ")"
- R_PAREN@920..921 ")"
- R_PAREN@921..922 ")"
- SEMI@922..923 ";"
- WHITESPACE@923..930 "\n "
- 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 ")"
+ 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"
+ 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
@@ -1819,7 +1819,7 @@
R_PAREN@2824..2825 ")"
COLONCOLON@2825..2827 "::"
WHITESPACE@2827..2832 "\n "
- EXPR_LOCAL@2832..3495
+ STMT_LOCAL@2832..3136
LOCAL_KW@2832..2837 "local"
WHITESPACE@2837..2838 " "
BIND_FUNCTION@2838..3135
@@ -1855,7 +1855,7 @@
EXPR_ARRAY_COMP@2876..3134
L_BRACK@2876..2877 "["
WHITESPACE@2877..2886 "\n "
- EXPR_LOCAL@2886..3085
+ STMT_LOCAL@2886..2918
LOCAL_KW@2886..2891 "local"
WHITESPACE@2891..2892 " "
BIND_DESTRUCT@2892..2917
@@ -1876,87 +1876,87 @@
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@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"
@@ -1985,241 +1985,241 @@
R_BRACK@3133..3134 "]"
R_PAREN@3134..3135 ")"
SEMI@3135..3136 ";"
- WHITESPACE@3136..3142 "\n\n "
- EXPR_LOCAL@3142..3495
- 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 ")"
+ 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
@@ -2300,7 +2300,7 @@
R_PAREN@3639..3640 ")"
COLONCOLON@3640..3642 "::"
WHITESPACE@3642..3647 "\n "
- EXPR_LOCAL@3647..3835
+ STMT_LOCAL@3647..3678
LOCAL_KW@3647..3652 "local"
WHITESPACE@3652..3653 " "
BIND_DESTRUCT@3653..3677
@@ -2326,113 +2326,113 @@
IDENT@3672..3676 "str_"
R_PAREN@3676..3677 ")"
SEMI@3677..3678 ";"
- WHITESPACE@3678..3683 "\n "
- EXPR_LOCAL@3683..3835
- 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 "=="
- 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 ")"
+ 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 "=="
+ 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
@@ -2448,7 +2448,7 @@
R_PAREN@3864..3865 ")"
COLONCOLON@3865..3867 "::"
WHITESPACE@3867..3872 "\n "
- EXPR_LOCAL@3872..4054
+ STMT_LOCAL@3872..3903
LOCAL_KW@3872..3877 "local"
WHITESPACE@3877..3878 " "
BIND_DESTRUCT@3878..3902
@@ -2474,121 +2474,121 @@
IDENT@3897..3901 "str_"
R_PAREN@3901..3902 ")"
SEMI@3902..3903 ";"
- WHITESPACE@3903..3908 "\n "
- EXPR_LOCAL@3908..4054
- 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"
- 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 ")"
+ 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"
+ 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
@@ -2667,7 +2667,7 @@
R_PAREN@4199..4200 ")"
COLONCOLON@4200..4202 "::"
WHITESPACE@4202..4207 "\n "
- EXPR_LOCAL@4207..4318
+ STMT_LOCAL@4207..4238
LOCAL_KW@4207..4212 "local"
WHITESPACE@4212..4213 " "
BIND_DESTRUCT@4213..4237
@@ -2693,78 +2693,78 @@
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 ")"
+ 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
@@ -3069,127 +3069,127 @@
WHITESPACE@4899..4900 " "
THEN_KW@4900..4904 "then"
WHITESPACE@4904..4911 "\n "
- TRUE_EXPR@4911..5086
- EXPR_LOCAL@4911..5086
- 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 "
- 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 "]"
+ 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 " "
@@ -3480,7 +3480,7 @@
R_PAREN@5541..5542 ")"
COLONCOLON@5542..5544 "::"
WHITESPACE@5544..5549 "\n "
- EXPR_LOCAL@5549..5673
+ STMT_LOCAL@5549..5641
LOCAL_KW@5549..5554 "local"
WHITESPACE@5554..5555 " "
BIND_DESTRUCT@5555..5640
@@ -3555,37 +3555,37 @@
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 ")"
+ 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
@@ -3653,3590 +3653,3098 @@
WHITESPACE@5811..5816 "\n "
ELSE_KW@5816..5820 "else"
WHITESPACE@5820..5827 "\n "
- FALSE_EXPR@5827..6345
- EXPR_LOCAL@5827..6345
- 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 "
- FALSE_EXPR@5909..6326
- EXPR_LOCAL@5909..6326
- 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 "
- EXPR_LOCAL@5937..6326
- 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 "
- EXPR_LOCAL@6006..6326
- 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 "
- EXPR_LOCAL@6062..6326
- 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 "
- EXPR_LOCAL@6125..6326
- 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 "
- 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 "
- 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 ")"
+ 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..6556
- FIELD_NAME_FIXED@6350..6354
- NAME@6350..6354
- IDENT@6350..6354 "uniq"
- PARAMS_DESC@6354..6368
- L_PAREN@6354..6355 "("
- PARAM@6355..6358
- DESTRUCT_FULL@6355..6358
- NAME@6355..6358
- IDENT@6355..6358 "arr"
- COMMA@6358..6359 ","
- WHITESPACE@6359..6360 " "
- PARAM@6360..6367
- DESTRUCT_FULL@6360..6364
- NAME@6360..6364
- IDENT@6360..6364 "keyF"
- ASSIGN@6364..6365 "="
- EXPR_VAR@6365..6367
- NAME@6365..6367
- IDENT@6365..6367 "id"
- R_PAREN@6367..6368 ")"
- COLONCOLON@6368..6370 "::"
- WHITESPACE@6370..6375 "\n "
- EXPR_LOCAL@6375..6556
- LOCAL_KW@6375..6380 "local"
- WHITESPACE@6380..6381 " "
- BIND_FUNCTION@6381..6529
- NAME@6381..6382
- IDENT@6381..6382 "f"
- PARAMS_DESC@6382..6388
- L_PAREN@6382..6383 "("
- PARAM@6383..6384
- DESTRUCT_FULL@6383..6384
- NAME@6383..6384
- IDENT@6383..6384 "a"
- COMMA@6384..6385 ","
- WHITESPACE@6385..6386 " "
- PARAM@6386..6387
- DESTRUCT_FULL@6386..6387
- NAME@6386..6387
- IDENT@6386..6387 "b"
- R_PAREN@6387..6388 ")"
- WHITESPACE@6388..6389 " "
- ASSIGN@6389..6390 "="
- WHITESPACE@6390..6397 "\n "
- EXPR_IF_THEN_ELSE@6397..6529
- IF_KW@6397..6399 "if"
- WHITESPACE@6399..6400 " "
- EXPR_BINARY@6400..6418
- LHS_EXPR@6400..6413
- EXPR_APPLY@6400..6413
- EXPR_INDEX@6400..6410
- EXPR_VAR@6400..6403
- NAME@6400..6403
- IDENT@6400..6403 "std"
- DOT@6403..6404 "."
- NAME@6404..6410
- IDENT@6404..6410 "length"
- ARGS_DESC@6410..6413
- L_PAREN@6410..6411 "("
- ARG@6411..6412
- EXPR_VAR@6411..6412
- NAME@6411..6412
- IDENT@6411..6412 "a"
- R_PAREN@6412..6413 ")"
- WHITESPACE@6413..6414 " "
- EQ@6414..6416 "=="
- WHITESPACE@6416..6417 " "
- EXPR_NUMBER@6417..6418
- FLOAT@6417..6418 "0"
- WHITESPACE@6418..6419 " "
- THEN_KW@6419..6423 "then"
- WHITESPACE@6423..6432 "\n "
- TRUE_EXPR@6432..6435
- EXPR_ARRAY@6432..6435
- L_BRACK@6432..6433 "["
- EXPR_VAR@6433..6434
- NAME@6433..6434
- IDENT@6433..6434 "b"
- R_BRACK@6434..6435 "]"
- WHITESPACE@6435..6442 "\n "
- ELSE_KW@6442..6446 "else"
- WHITESPACE@6446..6447 " "
- FALSE_EXPR@6447..6529
- EXPR_IF_THEN_ELSE@6447..6529
- IF_KW@6447..6449 "if"
- WHITESPACE@6449..6450 " "
- EXPR_BINARY@6450..6487
- LHS_EXPR@6450..6476
- EXPR_APPLY@6450..6476
- EXPR_VAR@6450..6454
- NAME@6450..6454
- IDENT@6450..6454 "keyF"
- ARGS_DESC@6454..6476
- L_PAREN@6454..6455 "("
- ARG@6455..6475
- EXPR_INDEX_EXPR@6455..6475
- LHS_EXPR@6455..6456
- EXPR_VAR@6455..6456
- NAME@6455..6456
- IDENT@6455..6456 "a"
- L_BRACK@6456..6457 "["
- EXPR_BINARY@6457..6474
- LHS_EXPR@6457..6470
- EXPR_APPLY@6457..6470
- EXPR_INDEX@6457..6467
- EXPR_VAR@6457..6460
- NAME@6457..6460
- IDENT@6457..6460 "std"
- DOT@6460..6461 "."
- NAME@6461..6467
- IDENT@6461..6467 "length"
- ARGS_DESC@6467..6470
- L_PAREN@6467..6468 "("
- ARG@6468..6469
- EXPR_VAR@6468..6469
- NAME@6468..6469
- IDENT@6468..6469 "a"
- R_PAREN@6469..6470 ")"
- WHITESPACE@6470..6471 " "
- MINUS@6471..6472 "-"
- WHITESPACE@6472..6473 " "
- EXPR_NUMBER@6473..6474
- FLOAT@6473..6474 "1"
- R_BRACK@6474..6475 "]"
- R_PAREN@6475..6476 ")"
- WHITESPACE@6476..6477 " "
- EQ@6477..6479 "=="
- WHITESPACE@6479..6480 " "
- EXPR_APPLY@6480..6487
- EXPR_VAR@6480..6484
- NAME@6480..6484
- IDENT@6480..6484 "keyF"
- ARGS_DESC@6484..6487
- L_PAREN@6484..6485 "("
- ARG@6485..6486
- EXPR_VAR@6485..6486
- NAME@6485..6486
- IDENT@6485..6486 "b"
- R_PAREN@6486..6487 ")"
- WHITESPACE@6487..6488 " "
- THEN_KW@6488..6492 "then"
- WHITESPACE@6492..6501 "\n "
- TRUE_EXPR@6501..6502
- EXPR_VAR@6501..6502
- NAME@6501..6502
- IDENT@6501..6502 "a"
- WHITESPACE@6502..6509 "\n "
- ELSE_KW@6509..6513 "else"
- WHITESPACE@6513..6522 "\n "
- FALSE_EXPR@6522..6529
- EXPR_BINARY@6522..6529
- LHS_EXPR@6522..6523
- EXPR_VAR@6522..6523
- NAME@6522..6523
- IDENT@6522..6523 "a"
- WHITESPACE@6523..6524 " "
- PLUS@6524..6525 "+"
- WHITESPACE@6525..6526 " "
- EXPR_ARRAY@6526..6529
- L_BRACK@6526..6527 "["
- EXPR_VAR@6527..6528
- NAME@6527..6528
- IDENT@6527..6528 "b"
- R_BRACK@6528..6529 "]"
- SEMI@6529..6530 ";"
- WHITESPACE@6530..6535 "\n "
- EXPR_APPLY@6535..6556
- EXPR_INDEX@6535..6544
- EXPR_VAR@6535..6538
- NAME@6535..6538
- IDENT@6535..6538 "std"
- DOT@6538..6539 "."
- NAME@6539..6544
- IDENT@6539..6544 "foldl"
- ARGS_DESC@6544..6556
- L_PAREN@6544..6545 "("
- ARG@6545..6546
- EXPR_VAR@6545..6546
- NAME@6545..6546
- IDENT@6545..6546 "f"
- COMMA@6546..6547 ","
- WHITESPACE@6547..6548 " "
- ARG@6548..6551
- EXPR_VAR@6548..6551
- NAME@6548..6551
- IDENT@6548..6551 "arr"
- COMMA@6551..6552 ","
- WHITESPACE@6552..6553 " "
- ARG@6553..6555
- EXPR_ARRAY@6553..6555
- L_BRACK@6553..6554 "["
- R_BRACK@6554..6555 "]"
- R_PAREN@6555..6556 ")"
- COMMA@6556..6557 ","
- WHITESPACE@6557..6561 "\n\n "
- MEMBER_FIELD_METHOD@6561..6620
- FIELD_NAME_FIXED@6561..6564
- NAME@6561..6564
- IDENT@6561..6564 "set"
- PARAMS_DESC@6564..6578
- L_PAREN@6564..6565 "("
- PARAM@6565..6568
- DESTRUCT_FULL@6565..6568
- NAME@6565..6568
- IDENT@6565..6568 "arr"
- COMMA@6568..6569 ","
- WHITESPACE@6569..6570 " "
- PARAM@6570..6577
- DESTRUCT_FULL@6570..6574
- NAME@6570..6574
- IDENT@6570..6574 "keyF"
- ASSIGN@6574..6575 "="
- EXPR_VAR@6575..6577
- NAME@6575..6577
- IDENT@6575..6577 "id"
- R_PAREN@6577..6578 ")"
- COLONCOLON@6578..6580 "::"
- WHITESPACE@6580..6585 "\n "
- EXPR_APPLY@6585..6620
- EXPR_INDEX@6585..6593
- EXPR_VAR@6585..6588
- NAME@6585..6588
- IDENT@6585..6588 "std"
- DOT@6588..6589 "."
- NAME@6589..6593
- IDENT@6589..6593 "uniq"
- ARGS_DESC@6593..6620
- L_PAREN@6593..6594 "("
- ARG@6594..6613
- EXPR_APPLY@6594..6613
- EXPR_INDEX@6594..6602
- EXPR_VAR@6594..6597
- NAME@6594..6597
- IDENT@6594..6597 "std"
- DOT@6597..6598 "."
- NAME@6598..6602
- IDENT@6598..6602 "sort"
- ARGS_DESC@6602..6613
- L_PAREN@6602..6603 "("
- ARG@6603..6606
- EXPR_VAR@6603..6606
- NAME@6603..6606
- IDENT@6603..6606 "arr"
- COMMA@6606..6607 ","
- WHITESPACE@6607..6608 " "
- ARG@6608..6612
- EXPR_VAR@6608..6612
- NAME@6608..6612
- IDENT@6608..6612 "keyF"
- R_PAREN@6612..6613 ")"
- COMMA@6613..6614 ","
- WHITESPACE@6614..6615 " "
- ARG@6615..6619
- EXPR_VAR@6615..6619
- NAME@6615..6619
- IDENT@6615..6619 "keyF"
- R_PAREN@6619..6620 ")"
- COMMA@6620..6621 ","
- WHITESPACE@6621..6625 "\n\n "
- MEMBER_FIELD_METHOD@6625..6760
- FIELD_NAME_FIXED@6625..6634
- NAME@6625..6634
- IDENT@6625..6634 "setMember"
- PARAMS_DESC@6634..6651
- L_PAREN@6634..6635 "("
- PARAM@6635..6636
- DESTRUCT_FULL@6635..6636
- NAME@6635..6636
- IDENT@6635..6636 "x"
- COMMA@6636..6637 ","
- WHITESPACE@6637..6638 " "
- PARAM@6638..6641
- DESTRUCT_FULL@6638..6641
- NAME@6638..6641
- IDENT@6638..6641 "arr"
- COMMA@6641..6642 ","
- WHITESPACE@6642..6643 " "
- PARAM@6643..6650
- DESTRUCT_FULL@6643..6647
- NAME@6643..6647
- IDENT@6643..6647 "keyF"
- ASSIGN@6647..6648 "="
- EXPR_VAR@6648..6650
- NAME@6648..6650
- IDENT@6648..6650 "id"
- R_PAREN@6650..6651 ")"
- COLONCOLON@6651..6653 "::"
- WHITESPACE@6653..6658 "\n "
- SINGLE_LINE_SLASH_COMMENT@6658..6712 "// TODO(dcunnin): Bin ..."
- WHITESPACE@6712..6716 " "
- EXPR_BINARY@6716..6760
- LHS_EXPR@6716..6756
- EXPR_APPLY@6716..6756
- EXPR_INDEX@6716..6726
- EXPR_VAR@6716..6719
- NAME@6716..6719
- IDENT@6716..6719 "std"
- DOT@6719..6720 "."
- NAME@6720..6726
- IDENT@6720..6726 "length"
- ARGS_DESC@6726..6756
- L_PAREN@6726..6727 "("
- ARG@6727..6755
- EXPR_APPLY@6727..6755
- EXPR_INDEX@6727..6739
- EXPR_VAR@6727..6730
- NAME@6727..6730
- IDENT@6727..6730 "std"
- DOT@6730..6731 "."
- NAME@6731..6739
- IDENT@6731..6739 "setInter"
- ARGS_DESC@6739..6755
- L_PAREN@6739..6740 "("
- ARG@6740..6743
- EXPR_ARRAY@6740..6743
- L_BRACK@6740..6741 "["
- EXPR_VAR@6741..6742
- NAME@6741..6742
- IDENT@6741..6742 "x"
- R_BRACK@6742..6743 "]"
- COMMA@6743..6744 ","
- WHITESPACE@6744..6745 " "
- ARG@6745..6748
- EXPR_VAR@6745..6748
- NAME@6745..6748
- IDENT@6745..6748 "arr"
- COMMA@6748..6749 ","
- WHITESPACE@6749..6750 " "
- ARG@6750..6754
- EXPR_VAR@6750..6754
- NAME@6750..6754
- IDENT@6750..6754 "keyF"
- R_PAREN@6754..6755 ")"
- R_PAREN@6755..6756 ")"
- WHITESPACE@6756..6757 " "
- GT@6757..6758 ">"
- WHITESPACE@6758..6759 " "
- EXPR_NUMBER@6759..6760
- FLOAT@6759..6760 "0"
- COMMA@6760..6761 ","
- WHITESPACE@6761..6765 "\n\n "
- MEMBER_FIELD_METHOD@6765..7314
- FIELD_NAME_FIXED@6765..6773
- NAME@6765..6773
- IDENT@6765..6773 "setUnion"
- PARAMS_DESC@6773..6788
- L_PAREN@6773..6774 "("
- PARAM@6774..6775
- DESTRUCT_FULL@6774..6775
- NAME@6774..6775
- IDENT@6774..6775 "a"
- COMMA@6775..6776 ","
- WHITESPACE@6776..6777 " "
- PARAM@6777..6778
- DESTRUCT_FULL@6777..6778
- NAME@6777..6778
- IDENT@6777..6778 "b"
- COMMA@6778..6779 ","
- WHITESPACE@6779..6780 " "
- PARAM@6780..6787
- DESTRUCT_FULL@6780..6784
- NAME@6780..6784
- IDENT@6780..6784 "keyF"
- ASSIGN@6784..6785 "="
- EXPR_VAR@6785..6787
- NAME@6785..6787
- IDENT@6785..6787 "id"
- R_PAREN@6787..6788 ")"
- COLONCOLON@6788..6790 "::"
- WHITESPACE@6790..6795 "\n "
- SINGLE_LINE_SLASH_COMMENT@6795..6837 "// NOTE: order matter ..."
- WHITESPACE@6837..6841 " "
- EXPR_LOCAL@6841..7314
- LOCAL_KW@6841..6846 "local"
- WHITESPACE@6846..6847 " "
- BIND_FUNCTION@6847..7289
- NAME@6847..6850
- IDENT@6847..6850 "aux"
- PARAMS_DESC@6850..6867
- L_PAREN@6850..6851 "("
- PARAM@6851..6852
- DESTRUCT_FULL@6851..6852
- NAME@6851..6852
- IDENT@6851..6852 "a"
- COMMA@6852..6853 ","
- WHITESPACE@6853..6854 " "
- PARAM@6854..6855
- DESTRUCT_FULL@6854..6855
- NAME@6854..6855
- IDENT@6854..6855 "b"
- COMMA@6855..6856 ","
- WHITESPACE@6856..6857 " "
- PARAM@6857..6858
- DESTRUCT_FULL@6857..6858
- NAME@6857..6858
- IDENT@6857..6858 "i"
- COMMA@6858..6859 ","
- WHITESPACE@6859..6860 " "
- PARAM@6860..6861
- DESTRUCT_FULL@6860..6861
- NAME@6860..6861
- IDENT@6860..6861 "j"
- COMMA@6861..6862 ","
- WHITESPACE@6862..6863 " "
- PARAM@6863..6866
- DESTRUCT_FULL@6863..6866
- NAME@6863..6866
- IDENT@6863..6866 "acc"
- R_PAREN@6866..6867 ")"
- WHITESPACE@6867..6868 " "
- ASSIGN@6868..6869 "="
- WHITESPACE@6869..6876 "\n "
- EXPR_IF_THEN_ELSE@6876..7289
- IF_KW@6876..6878 "if"
- WHITESPACE@6878..6879 " "
- EXPR_BINARY@6879..6897
- LHS_EXPR@6879..6880
- EXPR_VAR@6879..6880
- NAME@6879..6880
- IDENT@6879..6880 "i"
- WHITESPACE@6880..6881 " "
- GE@6881..6883 ">="
- WHITESPACE@6883..6884 " "
- EXPR_APPLY@6884..6897
- EXPR_INDEX@6884..6894
- EXPR_VAR@6884..6887
- NAME@6884..6887
- IDENT@6884..6887 "std"
- DOT@6887..6888 "."
- NAME@6888..6894
- IDENT@6888..6894 "length"
- ARGS_DESC@6894..6897
- L_PAREN@6894..6895 "("
- ARG@6895..6896
- EXPR_VAR@6895..6896
- NAME@6895..6896
- IDENT@6895..6896 "a"
- R_PAREN@6896..6897 ")"
- WHITESPACE@6897..6898 " "
- THEN_KW@6898..6902 "then"
- WHITESPACE@6902..6911 "\n "
- TRUE_EXPR@6911..6922
- EXPR_BINARY@6911..6922
- LHS_EXPR@6911..6914
- EXPR_VAR@6911..6914
- NAME@6911..6914
- IDENT@6911..6914 "acc"
- WHITESPACE@6914..6915 " "
- PLUS@6915..6916 "+"
- WHITESPACE@6916..6917 " "
- EXPR_SLICE@6917..6922
- EXPR_VAR@6917..6918
- NAME@6917..6918
- IDENT@6917..6918 "b"
- SLICE_DESC@6918..6922
- L_BRACK@6918..6919 "["
- EXPR_VAR@6919..6920
- NAME@6919..6920
- IDENT@6919..6920 "j"
- COLON@6920..6921 ":"
- R_BRACK@6921..6922 "]"
- WHITESPACE@6922..6929 "\n "
- ELSE_KW@6929..6933 "else"
- WHITESPACE@6933..6934 " "
- FALSE_EXPR@6934..7289
- EXPR_IF_THEN_ELSE@6934..7289
- IF_KW@6934..6936 "if"
- WHITESPACE@6936..6937 " "
- EXPR_BINARY@6937..6955
- LHS_EXPR@6937..6938
- EXPR_VAR@6937..6938
- NAME@6937..6938
- IDENT@6937..6938 "j"
- WHITESPACE@6938..6939 " "
- GE@6939..6941 ">="
- WHITESPACE@6941..6942 " "
- EXPR_APPLY@6942..6955
- EXPR_INDEX@6942..6952
- EXPR_VAR@6942..6945
- NAME@6942..6945
- IDENT@6942..6945 "std"
- DOT@6945..6946 "."
- NAME@6946..6952
- IDENT@6946..6952 "length"
- ARGS_DESC@6952..6955
- L_PAREN@6952..6953 "("
- ARG@6953..6954
- EXPR_VAR@6953..6954
- NAME@6953..6954
- IDENT@6953..6954 "b"
- R_PAREN@6954..6955 ")"
- WHITESPACE@6955..6956 " "
- THEN_KW@6956..6960 "then"
- WHITESPACE@6960..6969 "\n "
- TRUE_EXPR@6969..6980
- EXPR_BINARY@6969..6980
- LHS_EXPR@6969..6972
- EXPR_VAR@6969..6972
- NAME@6969..6972
- IDENT@6969..6972 "acc"
- WHITESPACE@6972..6973 " "
- PLUS@6973..6974 "+"
- WHITESPACE@6974..6975 " "
- EXPR_SLICE@6975..6980
- EXPR_VAR@6975..6976
- NAME@6975..6976
- IDENT@6975..6976 "a"
- SLICE_DESC@6976..6980
- L_BRACK@6976..6977 "["
- EXPR_VAR@6977..6978
- NAME@6977..6978
- IDENT@6977..6978 "i"
- COLON@6978..6979 ":"
- R_BRACK@6979..6980 "]"
- WHITESPACE@6980..6987 "\n "
- ELSE_KW@6987..6991 "else"
- WHITESPACE@6991..7000 "\n "
- FALSE_EXPR@7000..7289
- EXPR_LOCAL@7000..7289
- LOCAL_KW@7000..7005 "local"
- WHITESPACE@7005..7006 " "
- BIND_DESTRUCT@7006..7021
- DESTRUCT_FULL@7006..7008
- NAME@7006..7008
- IDENT@7006..7008 "ak"
- WHITESPACE@7008..7009 " "
- ASSIGN@7009..7010 "="
- WHITESPACE@7010..7011 " "
- EXPR_APPLY@7011..7021
- EXPR_VAR@7011..7015
- NAME@7011..7015
- IDENT@7011..7015 "keyF"
- ARGS_DESC@7015..7021
- L_PAREN@7015..7016 "("
- ARG@7016..7020
- EXPR_INDEX_EXPR@7016..7020
- LHS_EXPR@7016..7017
- EXPR_VAR@7016..7017
- NAME@7016..7017
- IDENT@7016..7017 "a"
- L_BRACK@7017..7018 "["
- EXPR_VAR@7018..7019
- NAME@7018..7019
- IDENT@7018..7019 "i"
- R_BRACK@7019..7020 "]"
- R_PAREN@7020..7021 ")"
- SEMI@7021..7022 ";"
- WHITESPACE@7022..7031 "\n "
- EXPR_LOCAL@7031..7289
- LOCAL_KW@7031..7036 "local"
- WHITESPACE@7036..7037 " "
- BIND_DESTRUCT@7037..7052
- DESTRUCT_FULL@7037..7039
- NAME@7037..7039
- IDENT@7037..7039 "bk"
- WHITESPACE@7039..7040 " "
- ASSIGN@7040..7041 "="
- WHITESPACE@7041..7042 " "
- EXPR_APPLY@7042..7052
- EXPR_VAR@7042..7046
- NAME@7042..7046
- IDENT@7042..7046 "keyF"
- ARGS_DESC@7046..7052
- L_PAREN@7046..7047 "("
- ARG@7047..7051
- EXPR_INDEX_EXPR@7047..7051
- LHS_EXPR@7047..7048
- EXPR_VAR@7047..7048
- NAME@7047..7048
- IDENT@7047..7048 "b"
- L_BRACK@7048..7049 "["
- EXPR_VAR@7049..7050
- NAME@7049..7050
- IDENT@7049..7050 "j"
- R_BRACK@7050..7051 "]"
- R_PAREN@7051..7052 ")"
- SEMI@7052..7053 ";"
- WHITESPACE@7053..7062 "\n "
- EXPR_IF_THEN_ELSE@7062..7289
- IF_KW@7062..7064 "if"
- WHITESPACE@7064..7065 " "
- EXPR_BINARY@7065..7073
- LHS_EXPR@7065..7067
- EXPR_VAR@7065..7067
- NAME@7065..7067
- IDENT@7065..7067 "ak"
- WHITESPACE@7067..7068 " "
- EQ@7068..7070 "=="
- WHITESPACE@7070..7071 " "
- EXPR_VAR@7071..7073
- NAME@7071..7073
- IDENT@7071..7073 "bk"
- WHITESPACE@7073..7074 " "
- THEN_KW@7074..7078 "then"
- WHITESPACE@7078..7089 "\n "
- TRUE_EXPR@7089..7137
- EXPR_APPLY@7089..7137
- EXPR_VAR@7089..7092
- NAME@7089..7092
- IDENT@7089..7092 "aux"
- ARGS_DESC@7092..7137
- L_PAREN@7092..7093 "("
- ARG@7093..7094
- EXPR_VAR@7093..7094
- NAME@7093..7094
- IDENT@7093..7094 "a"
- COMMA@7094..7095 ","
- WHITESPACE@7095..7096 " "
- ARG@7096..7097
- EXPR_VAR@7096..7097
- NAME@7096..7097
- IDENT@7096..7097 "b"
- COMMA@7097..7098 ","
- WHITESPACE@7098..7099 " "
- ARG@7099..7104
- EXPR_BINARY@7099..7104
- LHS_EXPR@7099..7100
- EXPR_VAR@7099..7100
- NAME@7099..7100
- IDENT@7099..7100 "i"
- WHITESPACE@7100..7101 " "
- PLUS@7101..7102 "+"
- WHITESPACE@7102..7103 " "
- EXPR_NUMBER@7103..7104
- FLOAT@7103..7104 "1"
- COMMA@7104..7105 ","
- WHITESPACE@7105..7106 " "
- ARG@7106..7111
- EXPR_BINARY@7106..7111
- LHS_EXPR@7106..7107
- EXPR_VAR@7106..7107
- NAME@7106..7107
- IDENT@7106..7107 "j"
- WHITESPACE@7107..7108 " "
- PLUS@7108..7109 "+"
- WHITESPACE@7109..7110 " "
- EXPR_NUMBER@7110..7111
- FLOAT@7110..7111 "1"
- COMMA@7111..7112 ","
- WHITESPACE@7112..7113 " "
- ARG@7113..7125
- EXPR_BINARY@7113..7125
- LHS_EXPR@7113..7116
- EXPR_VAR@7113..7116
- NAME@7113..7116
- IDENT@7113..7116 "acc"
- WHITESPACE@7116..7117 " "
- PLUS@7117..7118 "+"
- WHITESPACE@7118..7119 " "
- EXPR_ARRAY@7119..7125
- L_BRACK@7119..7120 "["
- EXPR_INDEX_EXPR@7120..7124
- LHS_EXPR@7120..7121
- EXPR_VAR@7120..7121
- NAME@7120..7121
- IDENT@7120..7121 "a"
- L_BRACK@7121..7122 "["
- EXPR_VAR@7122..7123
- NAME@7122..7123
- IDENT@7122..7123 "i"
- R_BRACK@7123..7124 "]"
- R_BRACK@7124..7125 "]"
- R_PAREN@7125..7126 ")"
- WHITESPACE@7126..7127 " "
- TAILSTRICT_KW@7127..7137 "tailstrict"
- WHITESPACE@7137..7146 "\n "
- ELSE_KW@7146..7150 "else"
- WHITESPACE@7150..7151 " "
- FALSE_EXPR@7151..7289
- EXPR_IF_THEN_ELSE@7151..7289
- IF_KW@7151..7153 "if"
- WHITESPACE@7153..7154 " "
- EXPR_BINARY@7154..7161
- LHS_EXPR@7154..7156
- EXPR_VAR@7154..7156
- NAME@7154..7156
- IDENT@7154..7156 "ak"
- WHITESPACE@7156..7157 " "
- LT@7157..7158 "<"
- WHITESPACE@7158..7159 " "
- EXPR_VAR@7159..7161
- NAME@7159..7161
- IDENT@7159..7161 "bk"
- WHITESPACE@7161..7162 " "
- THEN_KW@7162..7166 "then"
- WHITESPACE@7166..7177 "\n "
- TRUE_EXPR@7177..7221
- EXPR_APPLY@7177..7221
- EXPR_VAR@7177..7180
- NAME@7177..7180
- IDENT@7177..7180 "aux"
- ARGS_DESC@7180..7221
- L_PAREN@7180..7181 "("
- ARG@7181..7182
- EXPR_VAR@7181..7182
- NAME@7181..7182
- IDENT@7181..7182 "a"
- COMMA@7182..7183 ","
- WHITESPACE@7183..7184 " "
- ARG@7184..7185
- EXPR_VAR@7184..7185
- NAME@7184..7185
- IDENT@7184..7185 "b"
- COMMA@7185..7186 ","
- WHITESPACE@7186..7187 " "
- ARG@7187..7192
- EXPR_BINARY@7187..7192
- LHS_EXPR@7187..7188
- EXPR_VAR@7187..7188
- NAME@7187..7188
- IDENT@7187..7188 "i"
- WHITESPACE@7188..7189 " "
- PLUS@7189..7190 "+"
- WHITESPACE@7190..7191 " "
- EXPR_NUMBER@7191..7192
- FLOAT@7191..7192 "1"
- COMMA@7192..7193 ","
- WHITESPACE@7193..7194 " "
- ARG@7194..7195
- EXPR_VAR@7194..7195
- NAME@7194..7195
- IDENT@7194..7195 "j"
- COMMA@7195..7196 ","
- WHITESPACE@7196..7197 " "
- ARG@7197..7209
- EXPR_BINARY@7197..7209
- LHS_EXPR@7197..7200
- EXPR_VAR@7197..7200
- NAME@7197..7200
- IDENT@7197..7200 "acc"
- WHITESPACE@7200..7201 " "
- PLUS@7201..7202 "+"
- WHITESPACE@7202..7203 " "
- EXPR_ARRAY@7203..7209
- L_BRACK@7203..7204 "["
- EXPR_INDEX_EXPR@7204..7208
- LHS_EXPR@7204..7205
- EXPR_VAR@7204..7205
- NAME@7204..7205
- IDENT@7204..7205 "a"
- L_BRACK@7205..7206 "["
- EXPR_VAR@7206..7207
- NAME@7206..7207
- IDENT@7206..7207 "i"
- R_BRACK@7207..7208 "]"
- R_BRACK@7208..7209 "]"
- R_PAREN@7209..7210 ")"
- WHITESPACE@7210..7211 " "
- TAILSTRICT_KW@7211..7221 "tailstrict"
- WHITESPACE@7221..7230 "\n "
- ELSE_KW@7230..7234 "else"
- WHITESPACE@7234..7245 "\n "
- FALSE_EXPR@7245..7289
- EXPR_APPLY@7245..7289
- EXPR_VAR@7245..7248
- NAME@7245..7248
- IDENT@7245..7248 "aux"
- ARGS_DESC@7248..7289
- L_PAREN@7248..7249 "("
- ARG@7249..7250
- EXPR_VAR@7249..7250
- NAME@7249..7250
- IDENT@7249..7250 "a"
- COMMA@7250..7251 ","
- WHITESPACE@7251..7252 " "
- ARG@7252..7253
- EXPR_VAR@7252..7253
- NAME@7252..7253
- IDENT@7252..7253 "b"
- COMMA@7253..7254 ","
- WHITESPACE@7254..7255 " "
- ARG@7255..7256
- EXPR_VAR@7255..7256
- NAME@7255..7256
- IDENT@7255..7256 "i"
- COMMA@7256..7257 ","
- WHITESPACE@7257..7258 " "
- ARG@7258..7263
- EXPR_BINARY@7258..7263
- LHS_EXPR@7258..7259
- EXPR_VAR@7258..7259
- NAME@7258..7259
- IDENT@7258..7259 "j"
- WHITESPACE@7259..7260 " "
- PLUS@7260..7261 "+"
- WHITESPACE@7261..7262 " "
- EXPR_NUMBER@7262..7263
- FLOAT@7262..7263 "1"
- COMMA@7263..7264 ","
- WHITESPACE@7264..7265 " "
- ARG@7265..7277
- EXPR_BINARY@7265..7277
- LHS_EXPR@7265..7268
- EXPR_VAR@7265..7268
- NAME@7265..7268
- IDENT@7265..7268 "acc"
- WHITESPACE@7268..7269 " "
- PLUS@7269..7270 "+"
- WHITESPACE@7270..7271 " "
- EXPR_ARRAY@7271..7277
- L_BRACK@7271..7272 "["
- EXPR_INDEX_EXPR@7272..7276
- LHS_EXPR@7272..7273
- EXPR_VAR@7272..7273
- NAME@7272..7273
- IDENT@7272..7273 "b"
- L_BRACK@7273..7274 "["
- EXPR_VAR@7274..7275
- NAME@7274..7275
- IDENT@7274..7275 "j"
- R_BRACK@7275..7276 "]"
- R_BRACK@7276..7277 "]"
- R_PAREN@7277..7278 ")"
- WHITESPACE@7278..7279 " "
- TAILSTRICT_KW@7279..7289 "tailstrict"
- SEMI@7289..7290 ";"
- WHITESPACE@7290..7295 "\n "
- EXPR_APPLY@7295..7314
- EXPR_VAR@7295..7298
- NAME@7295..7298
- IDENT@7295..7298 "aux"
- ARGS_DESC@7298..7314
- L_PAREN@7298..7299 "("
- ARG@7299..7300
- EXPR_VAR@7299..7300
- NAME@7299..7300
- IDENT@7299..7300 "a"
- COMMA@7300..7301 ","
- WHITESPACE@7301..7302 " "
- ARG@7302..7303
- EXPR_VAR@7302..7303
- NAME@7302..7303
- IDENT@7302..7303 "b"
- COMMA@7303..7304 ","
- WHITESPACE@7304..7305 " "
- ARG@7305..7306
- EXPR_NUMBER@7305..7306
- FLOAT@7305..7306 "0"
- COMMA@7306..7307 ","
- WHITESPACE@7307..7308 " "
- ARG@7308..7309
- EXPR_NUMBER@7308..7309
- FLOAT@7308..7309 "0"
- COMMA@7309..7310 ","
- WHITESPACE@7310..7311 " "
- ARG@7311..7313
- EXPR_ARRAY@7311..7313
- L_BRACK@7311..7312 "["
- R_BRACK@7312..7313 "]"
- R_PAREN@7313..7314 ")"
- COMMA@7314..7315 ","
- WHITESPACE@7315..7319 "\n\n "
- MEMBER_FIELD_METHOD@7319..7741
- FIELD_NAME_FIXED@7319..7327
- NAME@7319..7327
- IDENT@7319..7327 "setInter"
- PARAMS_DESC@7327..7342
- L_PAREN@7327..7328 "("
- PARAM@7328..7329
- DESTRUCT_FULL@7328..7329
- NAME@7328..7329
- IDENT@7328..7329 "a"
- COMMA@7329..7330 ","
- WHITESPACE@7330..7331 " "
- PARAM@7331..7332
- DESTRUCT_FULL@7331..7332
- NAME@7331..7332
- IDENT@7331..7332 "b"
- COMMA@7332..7333 ","
- WHITESPACE@7333..7334 " "
- PARAM@7334..7341
- DESTRUCT_FULL@7334..7338
- NAME@7334..7338
- IDENT@7334..7338 "keyF"
- ASSIGN@7338..7339 "="
- EXPR_VAR@7339..7341
- NAME@7339..7341
- IDENT@7339..7341 "id"
- R_PAREN@7341..7342 ")"
- COLONCOLON@7342..7344 "::"
- WHITESPACE@7344..7349 "\n "
- EXPR_LOCAL@7349..7741
- LOCAL_KW@7349..7354 "local"
- WHITESPACE@7354..7355 " "
- BIND_FUNCTION@7355..7705
- NAME@7355..7358
- IDENT@7355..7358 "aux"
- PARAMS_DESC@7358..7375
- L_PAREN@7358..7359 "("
- PARAM@7359..7360
- DESTRUCT_FULL@7359..7360
- NAME@7359..7360
- IDENT@7359..7360 "a"
- COMMA@7360..7361 ","
- WHITESPACE@7361..7362 " "
- PARAM@7362..7363
- DESTRUCT_FULL@7362..7363
- NAME@7362..7363
- IDENT@7362..7363 "b"
- COMMA@7363..7364 ","
- WHITESPACE@7364..7365 " "
- PARAM@7365..7366
- DESTRUCT_FULL@7365..7366
- NAME@7365..7366
- IDENT@7365..7366 "i"
- COMMA@7366..7367 ","
- WHITESPACE@7367..7368 " "
- PARAM@7368..7369
- DESTRUCT_FULL@7368..7369
- NAME@7368..7369
- IDENT@7368..7369 "j"
- COMMA@7369..7370 ","
- WHITESPACE@7370..7371 " "
- PARAM@7371..7374
- DESTRUCT_FULL@7371..7374
- NAME@7371..7374
- IDENT@7371..7374 "acc"
- R_PAREN@7374..7375 ")"
- WHITESPACE@7375..7376 " "
- ASSIGN@7376..7377 "="
- WHITESPACE@7377..7384 "\n "
- EXPR_IF_THEN_ELSE@7384..7705
- IF_KW@7384..7386 "if"
- WHITESPACE@7386..7387 " "
- EXPR_BINARY@7387..7427
- LHS_EXPR@7387..7405
- EXPR_BINARY@7387..7405
- LHS_EXPR@7387..7388
- EXPR_VAR@7387..7388
- NAME@7387..7388
- IDENT@7387..7388 "i"
- WHITESPACE@7388..7389 " "
- GE@7389..7391 ">="
- WHITESPACE@7391..7392 " "
- EXPR_APPLY@7392..7405
- EXPR_INDEX@7392..7402
- EXPR_VAR@7392..7395
- NAME@7392..7395
- IDENT@7392..7395 "std"
- DOT@7395..7396 "."
- NAME@7396..7402
- IDENT@7396..7402 "length"
- ARGS_DESC@7402..7405
- L_PAREN@7402..7403 "("
- ARG@7403..7404
- EXPR_VAR@7403..7404
- NAME@7403..7404
- IDENT@7403..7404 "a"
- R_PAREN@7404..7405 ")"
- WHITESPACE@7405..7406 " "
- OR@7406..7408 "||"
- WHITESPACE@7408..7409 " "
- EXPR_BINARY@7409..7427
- LHS_EXPR@7409..7410
- EXPR_VAR@7409..7410
- NAME@7409..7410
- IDENT@7409..7410 "j"
- WHITESPACE@7410..7411 " "
- GE@7411..7413 ">="
- WHITESPACE@7413..7414 " "
- EXPR_APPLY@7414..7427
- EXPR_INDEX@7414..7424
- EXPR_VAR@7414..7417
- NAME@7414..7417
- IDENT@7414..7417 "std"
- DOT@7417..7418 "."
- NAME@7418..7424
- IDENT@7418..7424 "length"
- ARGS_DESC@7424..7427
- L_PAREN@7424..7425 "("
- ARG@7425..7426
- EXPR_VAR@7425..7426
- NAME@7425..7426
- IDENT@7425..7426 "b"
- R_PAREN@7426..7427 ")"
- WHITESPACE@7427..7428 " "
- THEN_KW@7428..7432 "then"
- WHITESPACE@7432..7441 "\n "
- TRUE_EXPR@7441..7444
- EXPR_VAR@7441..7444
- NAME@7441..7444
- IDENT@7441..7444 "acc"
- WHITESPACE@7444..7451 "\n "
- ELSE_KW@7451..7455 "else"
- WHITESPACE@7455..7464 "\n "
- FALSE_EXPR@7464..7705
- EXPR_IF_THEN_ELSE@7464..7705
- IF_KW@7464..7466 "if"
- WHITESPACE@7466..7467 " "
- EXPR_BINARY@7467..7491
- LHS_EXPR@7467..7477
- EXPR_APPLY@7467..7477
- EXPR_VAR@7467..7471
- NAME@7467..7471
- IDENT@7467..7471 "keyF"
- ARGS_DESC@7471..7477
- L_PAREN@7471..7472 "("
- ARG@7472..7476
- EXPR_INDEX_EXPR@7472..7476
- LHS_EXPR@7472..7473
- EXPR_VAR@7472..7473
- NAME@7472..7473
- IDENT@7472..7473 "a"
- L_BRACK@7473..7474 "["
- EXPR_VAR@7474..7475
- NAME@7474..7475
- IDENT@7474..7475 "i"
- R_BRACK@7475..7476 "]"
- R_PAREN@7476..7477 ")"
- WHITESPACE@7477..7478 " "
- EQ@7478..7480 "=="
- WHITESPACE@7480..7481 " "
- EXPR_APPLY@7481..7491
- EXPR_VAR@7481..7485
- NAME@7481..7485
- IDENT@7481..7485 "keyF"
- ARGS_DESC@7485..7491
- L_PAREN@7485..7486 "("
- ARG@7486..7490
- EXPR_INDEX_EXPR@7486..7490
- LHS_EXPR@7486..7487
- EXPR_VAR@7486..7487
- NAME@7486..7487
- IDENT@7486..7487 "b"
- L_BRACK@7487..7488 "["
- EXPR_VAR@7488..7489
- NAME@7488..7489
- IDENT@7488..7489 "j"
- R_BRACK@7489..7490 "]"
- R_PAREN@7490..7491 ")"
- WHITESPACE@7491..7492 " "
- THEN_KW@7492..7496 "then"
- WHITESPACE@7496..7507 "\n "
- TRUE_EXPR@7507..7555
- EXPR_APPLY@7507..7555
- EXPR_VAR@7507..7510
- NAME@7507..7510
- IDENT@7507..7510 "aux"
- ARGS_DESC@7510..7555
- L_PAREN@7510..7511 "("
- ARG@7511..7512
- EXPR_VAR@7511..7512
- NAME@7511..7512
- IDENT@7511..7512 "a"
- COMMA@7512..7513 ","
- WHITESPACE@7513..7514 " "
- ARG@7514..7515
- EXPR_VAR@7514..7515
- NAME@7514..7515
- IDENT@7514..7515 "b"
- COMMA@7515..7516 ","
- WHITESPACE@7516..7517 " "
- ARG@7517..7522
- EXPR_BINARY@7517..7522
- LHS_EXPR@7517..7518
- EXPR_VAR@7517..7518
- NAME@7517..7518
- IDENT@7517..7518 "i"
- WHITESPACE@7518..7519 " "
- PLUS@7519..7520 "+"
- WHITESPACE@7520..7521 " "
- EXPR_NUMBER@7521..7522
- FLOAT@7521..7522 "1"
- COMMA@7522..7523 ","
- WHITESPACE@7523..7524 " "
- ARG@7524..7529
- EXPR_BINARY@7524..7529
- LHS_EXPR@7524..7525
- EXPR_VAR@7524..7525
- NAME@7524..7525
- IDENT@7524..7525 "j"
- WHITESPACE@7525..7526 " "
- PLUS@7526..7527 "+"
- WHITESPACE@7527..7528 " "
- EXPR_NUMBER@7528..7529
- FLOAT@7528..7529 "1"
- COMMA@7529..7530 ","
- WHITESPACE@7530..7531 " "
- ARG@7531..7543
- EXPR_BINARY@7531..7543
- LHS_EXPR@7531..7534
- EXPR_VAR@7531..7534
- NAME@7531..7534
- IDENT@7531..7534 "acc"
- WHITESPACE@7534..7535 " "
- PLUS@7535..7536 "+"
- WHITESPACE@7536..7537 " "
- EXPR_ARRAY@7537..7543
- L_BRACK@7537..7538 "["
- EXPR_INDEX_EXPR@7538..7542
- LHS_EXPR@7538..7539
- EXPR_VAR@7538..7539
- NAME@7538..7539
- IDENT@7538..7539 "a"
- L_BRACK@7539..7540 "["
- EXPR_VAR@7540..7541
- NAME@7540..7541
- IDENT@7540..7541 "i"
- R_BRACK@7541..7542 "]"
- R_BRACK@7542..7543 "]"
- R_PAREN@7543..7544 ")"
- WHITESPACE@7544..7545 " "
- TAILSTRICT_KW@7545..7555 "tailstrict"
- WHITESPACE@7555..7564 "\n "
- ELSE_KW@7564..7568 "else"
- WHITESPACE@7568..7569 " "
- FALSE_EXPR@7569..7705
- EXPR_IF_THEN_ELSE@7569..7705
- IF_KW@7569..7571 "if"
- WHITESPACE@7571..7572 " "
- EXPR_BINARY@7572..7595
- LHS_EXPR@7572..7582
- EXPR_APPLY@7572..7582
- EXPR_VAR@7572..7576
- NAME@7572..7576
- IDENT@7572..7576 "keyF"
- ARGS_DESC@7576..7582
- L_PAREN@7576..7577 "("
- ARG@7577..7581
- EXPR_INDEX_EXPR@7577..7581
- LHS_EXPR@7577..7578
- EXPR_VAR@7577..7578
- NAME@7577..7578
- IDENT@7577..7578 "a"
- L_BRACK@7578..7579 "["
- EXPR_VAR@7579..7580
- NAME@7579..7580
- IDENT@7579..7580 "i"
- R_BRACK@7580..7581 "]"
- R_PAREN@7581..7582 ")"
- WHITESPACE@7582..7583 " "
- LT@7583..7584 "<"
- WHITESPACE@7584..7585 " "
- EXPR_APPLY@7585..7595
- EXPR_VAR@7585..7589
- NAME@7585..7589
- IDENT@7585..7589 "keyF"
- ARGS_DESC@7589..7595
- L_PAREN@7589..7590 "("
- ARG@7590..7594
- EXPR_INDEX_EXPR@7590..7594
- LHS_EXPR@7590..7591
- EXPR_VAR@7590..7591
- NAME@7590..7591
- IDENT@7590..7591 "b"
- L_BRACK@7591..7592 "["
- EXPR_VAR@7592..7593
- NAME@7592..7593
- IDENT@7592..7593 "j"
- R_BRACK@7593..7594 "]"
- R_PAREN@7594..7595 ")"
- WHITESPACE@7595..7596 " "
- THEN_KW@7596..7600 "then"
- WHITESPACE@7600..7611 "\n "
- TRUE_EXPR@7611..7646
- EXPR_APPLY@7611..7646
- EXPR_VAR@7611..7614
- NAME@7611..7614
- IDENT@7611..7614 "aux"
- ARGS_DESC@7614..7646
- L_PAREN@7614..7615 "("
- ARG@7615..7616
- EXPR_VAR@7615..7616
- NAME@7615..7616
- IDENT@7615..7616 "a"
- COMMA@7616..7617 ","
- WHITESPACE@7617..7618 " "
- ARG@7618..7619
- EXPR_VAR@7618..7619
- NAME@7618..7619
- IDENT@7618..7619 "b"
- COMMA@7619..7620 ","
- WHITESPACE@7620..7621 " "
- ARG@7621..7626
- EXPR_BINARY@7621..7626
- LHS_EXPR@7621..7622
- EXPR_VAR@7621..7622
- NAME@7621..7622
- IDENT@7621..7622 "i"
- WHITESPACE@7622..7623 " "
- PLUS@7623..7624 "+"
- WHITESPACE@7624..7625 " "
- EXPR_NUMBER@7625..7626
- FLOAT@7625..7626 "1"
- COMMA@7626..7627 ","
- WHITESPACE@7627..7628 " "
- ARG@7628..7629
- EXPR_VAR@7628..7629
- NAME@7628..7629
- IDENT@7628..7629 "j"
- COMMA@7629..7630 ","
- WHITESPACE@7630..7631 " "
- ARG@7631..7634
- EXPR_VAR@7631..7634
- NAME@7631..7634
- IDENT@7631..7634 "acc"
- R_PAREN@7634..7635 ")"
- WHITESPACE@7635..7636 " "
- TAILSTRICT_KW@7636..7646 "tailstrict"
- WHITESPACE@7646..7655 "\n "
- ELSE_KW@7655..7659 "else"
- WHITESPACE@7659..7670 "\n "
- FALSE_EXPR@7670..7705
- EXPR_APPLY@7670..7705
- EXPR_VAR@7670..7673
- NAME@7670..7673
- IDENT@7670..7673 "aux"
- ARGS_DESC@7673..7705
- L_PAREN@7673..7674 "("
- ARG@7674..7675
- EXPR_VAR@7674..7675
- NAME@7674..7675
- IDENT@7674..7675 "a"
- COMMA@7675..7676 ","
- WHITESPACE@7676..7677 " "
- ARG@7677..7678
- EXPR_VAR@7677..7678
- NAME@7677..7678
- IDENT@7677..7678 "b"
- COMMA@7678..7679 ","
- WHITESPACE@7679..7680 " "
- ARG@7680..7681
- EXPR_VAR@7680..7681
- NAME@7680..7681
- IDENT@7680..7681 "i"
- COMMA@7681..7682 ","
- WHITESPACE@7682..7683 " "
- ARG@7683..7688
- EXPR_BINARY@7683..7688
- LHS_EXPR@7683..7684
- EXPR_VAR@7683..7684
- NAME@7683..7684
- IDENT@7683..7684 "j"
- WHITESPACE@7684..7685 " "
- PLUS@7685..7686 "+"
- WHITESPACE@7686..7687 " "
- EXPR_NUMBER@7687..7688
- FLOAT@7687..7688 "1"
- COMMA@7688..7689 ","
- WHITESPACE@7689..7690 " "
- ARG@7690..7693
- EXPR_VAR@7690..7693
- NAME@7690..7693
- IDENT@7690..7693 "acc"
- R_PAREN@7693..7694 ")"
- WHITESPACE@7694..7695 " "
- TAILSTRICT_KW@7695..7705 "tailstrict"
- SEMI@7705..7706 ";"
- WHITESPACE@7706..7711 "\n "
- EXPR_APPLY@7711..7741
- EXPR_VAR@7711..7714
- NAME@7711..7714
- IDENT@7711..7714 "aux"
- ARGS_DESC@7714..7741
- L_PAREN@7714..7715 "("
- ARG@7715..7716
- EXPR_VAR@7715..7716
- NAME@7715..7716
- IDENT@7715..7716 "a"
- COMMA@7716..7717 ","
- WHITESPACE@7717..7718 " "
- ARG@7718..7719
- EXPR_VAR@7718..7719
- NAME@7718..7719
- IDENT@7718..7719 "b"
- COMMA@7719..7720 ","
- WHITESPACE@7720..7721 " "
- ARG@7721..7722
- EXPR_NUMBER@7721..7722
- FLOAT@7721..7722 "0"
- COMMA@7722..7723 ","
- WHITESPACE@7723..7724 " "
- ARG@7724..7725
- EXPR_NUMBER@7724..7725
- FLOAT@7724..7725 "0"
- COMMA@7725..7726 ","
- WHITESPACE@7726..7727 " "
- ARG@7727..7729
- EXPR_ARRAY@7727..7729
- L_BRACK@7727..7728 "["
- R_BRACK@7728..7729 "]"
- R_PAREN@7729..7730 ")"
- WHITESPACE@7730..7731 " "
- TAILSTRICT_KW@7731..7741 "tailstrict"
- COMMA@7741..7742 ","
- WHITESPACE@7742..7746 "\n\n "
- MEMBER_FIELD_METHOD@7746..8203
- FIELD_NAME_FIXED@7746..7753
- NAME@7746..7753
- IDENT@7746..7753 "setDiff"
- PARAMS_DESC@7753..7768
- L_PAREN@7753..7754 "("
- PARAM@7754..7755
- DESTRUCT_FULL@7754..7755
- NAME@7754..7755
- IDENT@7754..7755 "a"
- COMMA@7755..7756 ","
- WHITESPACE@7756..7757 " "
- PARAM@7757..7758
- DESTRUCT_FULL@7757..7758
- NAME@7757..7758
- IDENT@7757..7758 "b"
- COMMA@7758..7759 ","
- WHITESPACE@7759..7760 " "
- PARAM@7760..7767
- DESTRUCT_FULL@7760..7764
- NAME@7760..7764
- IDENT@7760..7764 "keyF"
- ASSIGN@7764..7765 "="
- EXPR_VAR@7765..7767
- NAME@7765..7767
- IDENT@7765..7767 "id"
- R_PAREN@7767..7768 ")"
- COLONCOLON@7768..7770 "::"
- WHITESPACE@7770..7775 "\n "
- EXPR_LOCAL@7775..8203
- LOCAL_KW@7775..7780 "local"
- WHITESPACE@7780..7781 " "
- BIND_FUNCTION@7781..8167
- NAME@7781..7784
- IDENT@7781..7784 "aux"
- PARAMS_DESC@7784..7801
- L_PAREN@7784..7785 "("
- PARAM@7785..7786
- DESTRUCT_FULL@7785..7786
- NAME@7785..7786
- IDENT@7785..7786 "a"
- COMMA@7786..7787 ","
- WHITESPACE@7787..7788 " "
- PARAM@7788..7789
- DESTRUCT_FULL@7788..7789
- NAME@7788..7789
- IDENT@7788..7789 "b"
- COMMA@7789..7790 ","
- WHITESPACE@7790..7791 " "
- PARAM@7791..7792
- DESTRUCT_FULL@7791..7792
- NAME@7791..7792
- IDENT@7791..7792 "i"
- COMMA@7792..7793 ","
- WHITESPACE@7793..7794 " "
- PARAM@7794..7795
- DESTRUCT_FULL@7794..7795
- NAME@7794..7795
- IDENT@7794..7795 "j"
- COMMA@7795..7796 ","
- WHITESPACE@7796..7797 " "
- PARAM@7797..7800
- DESTRUCT_FULL@7797..7800
- NAME@7797..7800
- IDENT@7797..7800 "acc"
- R_PAREN@7800..7801 ")"
- WHITESPACE@7801..7802 " "
- ASSIGN@7802..7803 "="
- WHITESPACE@7803..7810 "\n "
- EXPR_IF_THEN_ELSE@7810..8167
- IF_KW@7810..7812 "if"
- WHITESPACE@7812..7813 " "
- EXPR_BINARY@7813..7831
- LHS_EXPR@7813..7814
- EXPR_VAR@7813..7814
- NAME@7813..7814
- IDENT@7813..7814 "i"
- WHITESPACE@7814..7815 " "
- GE@7815..7817 ">="
- WHITESPACE@7817..7818 " "
- EXPR_APPLY@7818..7831
- EXPR_INDEX@7818..7828
- EXPR_VAR@7818..7821
- NAME@7818..7821
- IDENT@7818..7821 "std"
- DOT@7821..7822 "."
- NAME@7822..7828
- IDENT@7822..7828 "length"
- ARGS_DESC@7828..7831
- L_PAREN@7828..7829 "("
- ARG@7829..7830
- EXPR_VAR@7829..7830
- NAME@7829..7830
- IDENT@7829..7830 "a"
- R_PAREN@7830..7831 ")"
- WHITESPACE@7831..7832 " "
- THEN_KW@7832..7836 "then"
- WHITESPACE@7836..7845 "\n "
- TRUE_EXPR@7845..7848
- EXPR_VAR@7845..7848
- NAME@7845..7848
- IDENT@7845..7848 "acc"
- WHITESPACE@7848..7855 "\n "
- ELSE_KW@7855..7859 "else"
- WHITESPACE@7859..7860 " "
- FALSE_EXPR@7860..8167
- EXPR_IF_THEN_ELSE@7860..8167
- IF_KW@7860..7862 "if"
- WHITESPACE@7862..7863 " "
- EXPR_BINARY@7863..7881
- LHS_EXPR@7863..7864
- EXPR_VAR@7863..7864
- NAME@7863..7864
- IDENT@7863..7864 "j"
- WHITESPACE@7864..7865 " "
- GE@7865..7867 ">="
- WHITESPACE@7867..7868 " "
- EXPR_APPLY@7868..7881
- EXPR_INDEX@7868..7878
- EXPR_VAR@7868..7871
- NAME@7868..7871
- IDENT@7868..7871 "std"
- DOT@7871..7872 "."
- NAME@7872..7878
- IDENT@7872..7878 "length"
- ARGS_DESC@7878..7881
- L_PAREN@7878..7879 "("
- ARG@7879..7880
- EXPR_VAR@7879..7880
- NAME@7879..7880
- IDENT@7879..7880 "b"
- R_PAREN@7880..7881 ")"
- WHITESPACE@7881..7882 " "
- THEN_KW@7882..7886 "then"
- WHITESPACE@7886..7895 "\n "
- TRUE_EXPR@7895..7906
- EXPR_BINARY@7895..7906
- LHS_EXPR@7895..7898
- EXPR_VAR@7895..7898
- NAME@7895..7898
- IDENT@7895..7898 "acc"
- WHITESPACE@7898..7899 " "
- PLUS@7899..7900 "+"
- WHITESPACE@7900..7901 " "
- EXPR_SLICE@7901..7906
- EXPR_VAR@7901..7902
- NAME@7901..7902
- IDENT@7901..7902 "a"
- SLICE_DESC@7902..7906
- L_BRACK@7902..7903 "["
- EXPR_VAR@7903..7904
- NAME@7903..7904
- IDENT@7903..7904 "i"
- COLON@7904..7905 ":"
- R_BRACK@7905..7906 "]"
- WHITESPACE@7906..7913 "\n "
- ELSE_KW@7913..7917 "else"
- WHITESPACE@7917..7926 "\n "
- FALSE_EXPR@7926..8167
- EXPR_IF_THEN_ELSE@7926..8167
- IF_KW@7926..7928 "if"
- WHITESPACE@7928..7929 " "
- EXPR_BINARY@7929..7953
- LHS_EXPR@7929..7939
- EXPR_APPLY@7929..7939
- EXPR_VAR@7929..7933
- NAME@7929..7933
- IDENT@7929..7933 "keyF"
- ARGS_DESC@7933..7939
- L_PAREN@7933..7934 "("
- ARG@7934..7938
- EXPR_INDEX_EXPR@7934..7938
- LHS_EXPR@7934..7935
- EXPR_VAR@7934..7935
- NAME@7934..7935
- IDENT@7934..7935 "a"
- L_BRACK@7935..7936 "["
- EXPR_VAR@7936..7937
- NAME@7936..7937
- IDENT@7936..7937 "i"
- R_BRACK@7937..7938 "]"
- R_PAREN@7938..7939 ")"
- WHITESPACE@7939..7940 " "
- EQ@7940..7942 "=="
- WHITESPACE@7942..7943 " "
- EXPR_APPLY@7943..7953
- EXPR_VAR@7943..7947
- NAME@7943..7947
- IDENT@7943..7947 "keyF"
- ARGS_DESC@7947..7953
- L_PAREN@7947..7948 "("
- ARG@7948..7952
- EXPR_INDEX_EXPR@7948..7952
- LHS_EXPR@7948..7949
- EXPR_VAR@7948..7949
- NAME@7948..7949
- IDENT@7948..7949 "b"
- L_BRACK@7949..7950 "["
- EXPR_VAR@7950..7951
- NAME@7950..7951
- IDENT@7950..7951 "j"
- R_BRACK@7951..7952 "]"
- R_PAREN@7952..7953 ")"
- WHITESPACE@7953..7954 " "
- THEN_KW@7954..7958 "then"
- WHITESPACE@7958..7969 "\n "
- TRUE_EXPR@7969..8008
- EXPR_APPLY@7969..8008
- EXPR_VAR@7969..7972
- NAME@7969..7972
- IDENT@7969..7972 "aux"
- ARGS_DESC@7972..8008
- L_PAREN@7972..7973 "("
- ARG@7973..7974
- EXPR_VAR@7973..7974
- NAME@7973..7974
- IDENT@7973..7974 "a"
- COMMA@7974..7975 ","
- WHITESPACE@7975..7976 " "
- ARG@7976..7977
- EXPR_VAR@7976..7977
- NAME@7976..7977
- IDENT@7976..7977 "b"
- COMMA@7977..7978 ","
- WHITESPACE@7978..7979 " "
- ARG@7979..7984
- EXPR_BINARY@7979..7984
- LHS_EXPR@7979..7980
- EXPR_VAR@7979..7980
- NAME@7979..7980
- IDENT@7979..7980 "i"
- WHITESPACE@7980..7981 " "
- PLUS@7981..7982 "+"
- WHITESPACE@7982..7983 " "
- EXPR_NUMBER@7983..7984
- FLOAT@7983..7984 "1"
- COMMA@7984..7985 ","
- WHITESPACE@7985..7986 " "
- ARG@7986..7991
- EXPR_BINARY@7986..7991
- LHS_EXPR@7986..7987
- EXPR_VAR@7986..7987
- NAME@7986..7987
- IDENT@7986..7987 "j"
- WHITESPACE@7987..7988 " "
- PLUS@7988..7989 "+"
- WHITESPACE@7989..7990 " "
- EXPR_NUMBER@7990..7991
- FLOAT@7990..7991 "1"
- COMMA@7991..7992 ","
- WHITESPACE@7992..7993 " "
- ARG@7993..7996
- EXPR_VAR@7993..7996
- NAME@7993..7996
- IDENT@7993..7996 "acc"
- R_PAREN@7996..7997 ")"
- WHITESPACE@7997..7998 " "
- TAILSTRICT_KW@7998..8008 "tailstrict"
- WHITESPACE@8008..8017 "\n "
- ELSE_KW@8017..8021 "else"
- WHITESPACE@8021..8022 " "
- FALSE_EXPR@8022..8167
- EXPR_IF_THEN_ELSE@8022..8167
- IF_KW@8022..8024 "if"
- WHITESPACE@8024..8025 " "
- EXPR_BINARY@8025..8048
- LHS_EXPR@8025..8035
- EXPR_APPLY@8025..8035
- EXPR_VAR@8025..8029
- NAME@8025..8029
- IDENT@8025..8029 "keyF"
- ARGS_DESC@8029..8035
- L_PAREN@8029..8030 "("
- ARG@8030..8034
- EXPR_INDEX_EXPR@8030..8034
- LHS_EXPR@8030..8031
- EXPR_VAR@8030..8031
- NAME@8030..8031
- IDENT@8030..8031 "a"
- L_BRACK@8031..8032 "["
- EXPR_VAR@8032..8033
- NAME@8032..8033
- IDENT@8032..8033 "i"
- R_BRACK@8033..8034 "]"
- R_PAREN@8034..8035 ")"
- WHITESPACE@8035..8036 " "
- LT@8036..8037 "<"
- WHITESPACE@8037..8038 " "
- EXPR_APPLY@8038..8048
- EXPR_VAR@8038..8042
- NAME@8038..8042
- IDENT@8038..8042 "keyF"
- ARGS_DESC@8042..8048
- L_PAREN@8042..8043 "("
- ARG@8043..8047
- EXPR_INDEX_EXPR@8043..8047
- LHS_EXPR@8043..8044
- EXPR_VAR@8043..8044
- NAME@8043..8044
- IDENT@8043..8044 "b"
- L_BRACK@8044..8045 "["
- EXPR_VAR@8045..8046
- NAME@8045..8046
- IDENT@8045..8046 "j"
- R_BRACK@8046..8047 "]"
- R_PAREN@8047..8048 ")"
- WHITESPACE@8048..8049 " "
- THEN_KW@8049..8053 "then"
- WHITESPACE@8053..8064 "\n "
- TRUE_EXPR@8064..8108
- EXPR_APPLY@8064..8108
- EXPR_VAR@8064..8067
- NAME@8064..8067
- IDENT@8064..8067 "aux"
- ARGS_DESC@8067..8108
- L_PAREN@8067..8068 "("
- ARG@8068..8069
- EXPR_VAR@8068..8069
- NAME@8068..8069
- IDENT@8068..8069 "a"
- COMMA@8069..8070 ","
- WHITESPACE@8070..8071 " "
- ARG@8071..8072
- EXPR_VAR@8071..8072
- NAME@8071..8072
- IDENT@8071..8072 "b"
- COMMA@8072..8073 ","
- WHITESPACE@8073..8074 " "
- ARG@8074..8079
- EXPR_BINARY@8074..8079
- LHS_EXPR@8074..8075
- EXPR_VAR@8074..8075
- NAME@8074..8075
- IDENT@8074..8075 "i"
- WHITESPACE@8075..8076 " "
- PLUS@8076..8077 "+"
- WHITESPACE@8077..8078 " "
- EXPR_NUMBER@8078..8079
- FLOAT@8078..8079 "1"
- COMMA@8079..8080 ","
- WHITESPACE@8080..8081 " "
- ARG@8081..8082
- EXPR_VAR@8081..8082
- NAME@8081..8082
- IDENT@8081..8082 "j"
- COMMA@8082..8083 ","
- WHITESPACE@8083..8084 " "
- ARG@8084..8096
- EXPR_BINARY@8084..8096
- LHS_EXPR@8084..8087
- EXPR_VAR@8084..8087
- NAME@8084..8087
- IDENT@8084..8087 "acc"
- WHITESPACE@8087..8088 " "
- PLUS@8088..8089 "+"
- WHITESPACE@8089..8090 " "
- EXPR_ARRAY@8090..8096
- L_BRACK@8090..8091 "["
- EXPR_INDEX_EXPR@8091..8095
- LHS_EXPR@8091..8092
- EXPR_VAR@8091..8092
- NAME@8091..8092
- IDENT@8091..8092 "a"
- L_BRACK@8092..8093 "["
- EXPR_VAR@8093..8094
- NAME@8093..8094
- IDENT@8093..8094 "i"
- R_BRACK@8094..8095 "]"
- R_BRACK@8095..8096 "]"
- R_PAREN@8096..8097 ")"
- WHITESPACE@8097..8098 " "
- TAILSTRICT_KW@8098..8108 "tailstrict"
- WHITESPACE@8108..8117 "\n "
- ELSE_KW@8117..8121 "else"
- WHITESPACE@8121..8132 "\n "
- FALSE_EXPR@8132..8167
- EXPR_APPLY@8132..8167
- EXPR_VAR@8132..8135
- NAME@8132..8135
- IDENT@8132..8135 "aux"
- ARGS_DESC@8135..8167
- L_PAREN@8135..8136 "("
- ARG@8136..8137
- EXPR_VAR@8136..8137
- NAME@8136..8137
- IDENT@8136..8137 "a"
- COMMA@8137..8138 ","
- WHITESPACE@8138..8139 " "
- ARG@8139..8140
- EXPR_VAR@8139..8140
- NAME@8139..8140
- IDENT@8139..8140 "b"
- COMMA@8140..8141 ","
- WHITESPACE@8141..8142 " "
- ARG@8142..8143
- EXPR_VAR@8142..8143
- NAME@8142..8143
- IDENT@8142..8143 "i"
- COMMA@8143..8144 ","
- WHITESPACE@8144..8145 " "
- ARG@8145..8150
- EXPR_BINARY@8145..8150
- LHS_EXPR@8145..8146
- EXPR_VAR@8145..8146
- NAME@8145..8146
- IDENT@8145..8146 "j"
- WHITESPACE@8146..8147 " "
- PLUS@8147..8148 "+"
- WHITESPACE@8148..8149 " "
- EXPR_NUMBER@8149..8150
- FLOAT@8149..8150 "1"
- COMMA@8150..8151 ","
- WHITESPACE@8151..8152 " "
- ARG@8152..8155
- EXPR_VAR@8152..8155
- NAME@8152..8155
- IDENT@8152..8155 "acc"
- R_PAREN@8155..8156 ")"
- WHITESPACE@8156..8157 " "
- TAILSTRICT_KW@8157..8167 "tailstrict"
- SEMI@8167..8168 ";"
- WHITESPACE@8168..8173 "\n "
- EXPR_APPLY@8173..8203
- EXPR_VAR@8173..8176
- NAME@8173..8176
- IDENT@8173..8176 "aux"
- ARGS_DESC@8176..8203
- L_PAREN@8176..8177 "("
- ARG@8177..8178
- EXPR_VAR@8177..8178
- NAME@8177..8178
- IDENT@8177..8178 "a"
- COMMA@8178..8179 ","
- WHITESPACE@8179..8180 " "
- ARG@8180..8181
- EXPR_VAR@8180..8181
- NAME@8180..8181
- IDENT@8180..8181 "b"
- COMMA@8181..8182 ","
- WHITESPACE@8182..8183 " "
- ARG@8183..8184
- EXPR_NUMBER@8183..8184
- FLOAT@8183..8184 "0"
- COMMA@8184..8185 ","
- WHITESPACE@8185..8186 " "
- ARG@8186..8187
- EXPR_NUMBER@8186..8187
- FLOAT@8186..8187 "0"
- COMMA@8187..8188 ","
- WHITESPACE@8188..8189 " "
- ARG@8189..8191
- EXPR_ARRAY@8189..8191
- L_BRACK@8189..8190 "["
- R_BRACK@8190..8191 "]"
- R_PAREN@8191..8192 ")"
- WHITESPACE@8192..8193 " "
- TAILSTRICT_KW@8193..8203 "tailstrict"
- COMMA@8203..8204 ","
- WHITESPACE@8204..8208 "\n\n "
- MEMBER_FIELD_METHOD@8208..8996
- FIELD_NAME_FIXED@8208..8218
- NAME@8208..8218
- IDENT@8208..8218 "mergePatch"
- PARAMS_DESC@8218..8233
- L_PAREN@8218..8219 "("
- PARAM@8219..8225
- DESTRUCT_FULL@8219..8225
- NAME@8219..8225
- IDENT@8219..8225 "target"
- COMMA@8225..8226 ","
- WHITESPACE@8226..8227 " "
- PARAM@8227..8232
- DESTRUCT_FULL@8227..8232
- NAME@8227..8232
- IDENT@8227..8232 "patch"
- R_PAREN@8232..8233 ")"
- COLONCOLON@8233..8235 "::"
- WHITESPACE@8235..8240 "\n "
- EXPR_IF_THEN_ELSE@8240..8996
- IF_KW@8240..8242 "if"
+ 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"
+ WHITESPACE@6701..6702 " "
+ PLUS@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 " "
- EXPR_APPLY@8243..8262
- EXPR_INDEX@8243..8255
- EXPR_VAR@8243..8246
- NAME@8243..8246
- IDENT@8243..8246 "std"
- DOT@8246..8247 "."
- NAME@8247..8255
- IDENT@8247..8255 "isObject"
- ARGS_DESC@8255..8262
- L_PAREN@8255..8256 "("
- ARG@8256..8261
- EXPR_VAR@8256..8261
- NAME@8256..8261
- IDENT@8256..8261 "patch"
- R_PAREN@8261..8262 ")"
- WHITESPACE@8262..8263 " "
- THEN_KW@8263..8267 "then"
- WHITESPACE@8267..8274 "\n "
- TRUE_EXPR@8274..8975
- EXPR_LOCAL@8274..8975
- LOCAL_KW@8274..8279 "local"
- WHITESPACE@8279..8280 " "
- BIND_DESTRUCT@8280..8347
- DESTRUCT_FULL@8280..8293
- NAME@8280..8293
- IDENT@8280..8293 "target_object"
- WHITESPACE@8293..8294 " "
- ASSIGN@8294..8295 "="
- WHITESPACE@8295..8304 "\n "
- EXPR_IF_THEN_ELSE@8304..8347
- IF_KW@8304..8306 "if"
- WHITESPACE@8306..8307 " "
- EXPR_APPLY@8307..8327
- EXPR_INDEX@8307..8319
- EXPR_VAR@8307..8310
- NAME@8307..8310
- IDENT@8307..8310 "std"
- DOT@8310..8311 "."
- NAME@8311..8319
- IDENT@8311..8319 "isObject"
- ARGS_DESC@8319..8327
- L_PAREN@8319..8320 "("
- ARG@8320..8326
- EXPR_VAR@8320..8326
- NAME@8320..8326
- IDENT@8320..8326 "target"
- R_PAREN@8326..8327 ")"
- WHITESPACE@8327..8328 " "
- THEN_KW@8328..8332 "then"
- WHITESPACE@8332..8333 " "
- TRUE_EXPR@8333..8339
- EXPR_VAR@8333..8339
- NAME@8333..8339
- IDENT@8333..8339 "target"
- WHITESPACE@8339..8340 " "
- ELSE_KW@8340..8344 "else"
- WHITESPACE@8344..8345 " "
- FALSE_EXPR@8345..8347
- EXPR_OBJECT@8345..8347
- OBJ_BODY_MEMBER_LIST@8345..8347
- L_BRACE@8345..8346 "{"
- R_BRACE@8346..8347 "}"
- SEMI@8347..8348 ";"
- WHITESPACE@8348..8356 "\n\n "
- EXPR_LOCAL@8356..8975
- LOCAL_KW@8356..8361 "local"
- WHITESPACE@8361..8362 " "
- BIND_DESTRUCT@8362..8461
- DESTRUCT_FULL@8362..8375
- NAME@8362..8375
- IDENT@8362..8375 "target_fields"
- WHITESPACE@8375..8376 " "
- ASSIGN@8376..8377 "="
- WHITESPACE@8377..8386 "\n "
- EXPR_IF_THEN_ELSE@8386..8461
- IF_KW@8386..8388 "if"
- WHITESPACE@8388..8389 " "
- EXPR_APPLY@8389..8416
- EXPR_INDEX@8389..8401
- EXPR_VAR@8389..8392
- NAME@8389..8392
- IDENT@8389..8392 "std"
- DOT@8392..8393 "."
- NAME@8393..8401
- IDENT@8393..8401 "isObject"
- ARGS_DESC@8401..8416
- L_PAREN@8401..8402 "("
- ARG@8402..8415
- EXPR_VAR@8402..8415
- NAME@8402..8415
- IDENT@8402..8415 "target_object"
- R_PAREN@8415..8416 ")"
- WHITESPACE@8416..8417 " "
- THEN_KW@8417..8421 "then"
- WHITESPACE@8421..8422 " "
- TRUE_EXPR@8422..8453
- EXPR_APPLY@8422..8453
- EXPR_INDEX@8422..8438
- EXPR_VAR@8422..8425
- NAME@8422..8425
- IDENT@8422..8425 "std"
- DOT@8425..8426 "."
- NAME@8426..8438
- IDENT@8426..8438 "objectFields"
- ARGS_DESC@8438..8453
- L_PAREN@8438..8439 "("
- ARG@8439..8452
- EXPR_VAR@8439..8452
- NAME@8439..8452
- IDENT@8439..8452 "target_object"
- R_PAREN@8452..8453 ")"
- WHITESPACE@8453..8454 " "
- ELSE_KW@8454..8458 "else"
- WHITESPACE@8458..8459 " "
- FALSE_EXPR@8459..8461
- EXPR_ARRAY@8459..8461
- L_BRACK@8459..8460 "["
- R_BRACK@8460..8461 "]"
- SEMI@8461..8462 ";"
- WHITESPACE@8462..8470 "\n\n "
- EXPR_LOCAL@8470..8975
- LOCAL_KW@8470..8475 "local"
- WHITESPACE@8475..8476 " "
- BIND_DESTRUCT@8476..8546
- DESTRUCT_FULL@8476..8487
- NAME@8476..8487
- IDENT@8476..8487 "null_fields"
- WHITESPACE@8487..8488 " "
- ASSIGN@8488..8489 "="
- WHITESPACE@8489..8490 " "
- EXPR_ARRAY_COMP@8490..8546
- L_BRACK@8490..8491 "["
- EXPR_VAR@8491..8492
- NAME@8491..8492
- IDENT@8491..8492 "k"
- WHITESPACE@8492..8493 " "
- FOR_SPEC@8493..8525
- FOR_KW@8493..8496 "for"
- WHITESPACE@8496..8497 " "
- NAME@8497..8498
- IDENT@8497..8498 "k"
- WHITESPACE@8498..8499 " "
- IN_KW@8499..8501 "in"
- WHITESPACE@8501..8502 " "
- EXPR_APPLY@8502..8525
- EXPR_INDEX@8502..8518
- EXPR_VAR@8502..8505
- NAME@8502..8505
- IDENT@8502..8505 "std"
- DOT@8505..8506 "."
- NAME@8506..8518
- IDENT@8506..8518 "objectFields"
- ARGS_DESC@8518..8525
- L_PAREN@8518..8519 "("
- ARG@8519..8524
- EXPR_VAR@8519..8524
- NAME@8519..8524
- IDENT@8519..8524 "patch"
- R_PAREN@8524..8525 ")"
- WHITESPACE@8525..8526 " "
- IF_SPEC@8526..8545
- IF_KW@8526..8528 "if"
- WHITESPACE@8528..8529 " "
- EXPR_BINARY@8529..8545
- LHS_EXPR@8529..8537
- EXPR_INDEX_EXPR@8529..8537
- LHS_EXPR@8529..8534
- EXPR_VAR@8529..8534
- NAME@8529..8534
- IDENT@8529..8534 "patch"
- L_BRACK@8534..8535 "["
- EXPR_VAR@8535..8536
- NAME@8535..8536
- IDENT@8535..8536 "k"
- R_BRACK@8536..8537 "]"
- WHITESPACE@8537..8538 " "
- EQ@8538..8540 "=="
- WHITESPACE@8540..8541 " "
- EXPR_LITERAL@8541..8545
- NULL_KW@8541..8545 "null"
- R_BRACK@8545..8546 "]"
- SEMI@8546..8547 ";"
- WHITESPACE@8547..8554 "\n "
- EXPR_LOCAL@8554..8975
- LOCAL_KW@8554..8559 "local"
- WHITESPACE@8559..8560 " "
- BIND_DESTRUCT@8560..8626
- DESTRUCT_FULL@8560..8571
- NAME@8560..8571
- IDENT@8560..8571 "both_fields"
- WHITESPACE@8571..8572 " "
- ASSIGN@8572..8573 "="
- WHITESPACE@8573..8574 " "
- EXPR_APPLY@8574..8626
- EXPR_INDEX@8574..8586
- EXPR_VAR@8574..8577
- NAME@8574..8577
- IDENT@8574..8577 "std"
- DOT@8577..8578 "."
- NAME@8578..8586
- IDENT@8578..8586 "setUnion"
- ARGS_DESC@8586..8626
- L_PAREN@8586..8587 "("
- ARG@8587..8600
- EXPR_VAR@8587..8600
- NAME@8587..8600
- IDENT@8587..8600 "target_fields"
- COMMA@8600..8601 ","
- WHITESPACE@8601..8602 " "
- ARG@8602..8625
- EXPR_APPLY@8602..8625
- EXPR_INDEX@8602..8618
- EXPR_VAR@8602..8605
- NAME@8602..8605
- IDENT@8602..8605 "std"
- DOT@8605..8606 "."
- NAME@8606..8618
- IDENT@8606..8618 "objectFields"
- ARGS_DESC@8618..8625
- L_PAREN@8618..8619 "("
- ARG@8619..8624
- EXPR_VAR@8619..8624
- NAME@8619..8624
- IDENT@8619..8624 "patch"
- R_PAREN@8624..8625 ")"
- R_PAREN@8625..8626 ")"
- SEMI@8626..8627 ";"
- WHITESPACE@8627..8635 "\n\n "
- EXPR_OBJECT@8635..8975
- OBJ_BODY_COMP@8635..8975
- L_BRACE@8635..8636 "{"
- WHITESPACE@8636..8645 "\n "
- MEMBER_FIELD_NORMAL@8645..8912
- FIELD_NAME_DYNAMIC@8645..8648
- L_BRACK@8645..8646 "["
- EXPR_VAR@8646..8647
- NAME@8646..8647
- IDENT@8646..8647 "k"
- R_BRACK@8647..8648 "]"
- COLON@8648..8649 ":"
- WHITESPACE@8649..8660 "\n "
- EXPR_IF_THEN_ELSE@8660..8912
- IF_KW@8660..8662 "if"
- WHITESPACE@8662..8663 " "
- EXPR_UNARY@8663..8687
- NOT@8663..8664 "!"
- EXPR_APPLY@8664..8687
- EXPR_INDEX@8664..8677
- EXPR_VAR@8664..8667
- NAME@8664..8667
- IDENT@8664..8667 "std"
- DOT@8667..8668 "."
- NAME@8668..8677
- IDENT@8668..8677 "objectHas"
- ARGS_DESC@8677..8687
- L_PAREN@8677..8678 "("
- ARG@8678..8683
- EXPR_VAR@8678..8683
- NAME@8678..8683
- IDENT@8678..8683 "patch"
- COMMA@8683..8684 ","
- WHITESPACE@8684..8685 " "
- ARG@8685..8686
- EXPR_VAR@8685..8686
- NAME@8685..8686
- IDENT@8685..8686 "k"
- R_PAREN@8686..8687 ")"
- WHITESPACE@8687..8688 " "
- THEN_KW@8688..8692 "then"
- WHITESPACE@8692..8705 "\n "
- TRUE_EXPR@8705..8721
- EXPR_INDEX_EXPR@8705..8721
- LHS_EXPR@8705..8718
- EXPR_VAR@8705..8718
- NAME@8705..8718
- IDENT@8705..8718 "target_object"
- L_BRACK@8718..8719 "["
- EXPR_VAR@8719..8720
- NAME@8719..8720
- IDENT@8719..8720 "k"
- R_BRACK@8720..8721 "]"
- WHITESPACE@8721..8732 "\n "
- ELSE_KW@8732..8736 "else"
- WHITESPACE@8736..8737 " "
- FALSE_EXPR@8737..8912
- EXPR_IF_THEN_ELSE@8737..8912
- IF_KW@8737..8739 "if"
- WHITESPACE@8739..8740 " "
- EXPR_UNARY@8740..8772
- NOT@8740..8741 "!"
- EXPR_APPLY@8741..8772
- EXPR_INDEX@8741..8754
- EXPR_VAR@8741..8744
- NAME@8741..8744
- IDENT@8741..8744 "std"
- DOT@8744..8745 "."
- NAME@8745..8754
- IDENT@8745..8754 "objectHas"
- ARGS_DESC@8754..8772
- L_PAREN@8754..8755 "("
- ARG@8755..8768
- EXPR_VAR@8755..8768
- NAME@8755..8768
- IDENT@8755..8768 "target_object"
- COMMA@8768..8769 ","
- WHITESPACE@8769..8770 " "
- ARG@8770..8771
- EXPR_VAR@8770..8771
- NAME@8770..8771
- IDENT@8770..8771 "k"
- R_PAREN@8771..8772 ")"
- WHITESPACE@8772..8773 " "
- THEN_KW@8773..8777 "then"
- WHITESPACE@8777..8790 "\n "
- TRUE_EXPR@8790..8831
- EXPR_APPLY@8790..8831
- EXPR_INDEX@8790..8804
- EXPR_VAR@8790..8793
- NAME@8790..8793
- IDENT@8790..8793 "std"
- DOT@8793..8794 "."
- NAME@8794..8804
- IDENT@8794..8804 "mergePatch"
- ARGS_DESC@8804..8831
- L_PAREN@8804..8805 "("
- ARG@8805..8809
- EXPR_LITERAL@8805..8809
- NULL_KW@8805..8809 "null"
- COMMA@8809..8810 ","
- WHITESPACE@8810..8811 " "
- ARG@8811..8819
- EXPR_INDEX_EXPR@8811..8819
- LHS_EXPR@8811..8816
- EXPR_VAR@8811..8816
- NAME@8811..8816
- IDENT@8811..8816 "patch"
- L_BRACK@8816..8817 "["
- EXPR_VAR@8817..8818
- NAME@8817..8818
- IDENT@8817..8818 "k"
- R_BRACK@8818..8819 "]"
- R_PAREN@8819..8820 ")"
- WHITESPACE@8820..8821 " "
- TAILSTRICT_KW@8821..8831 "tailstrict"
- WHITESPACE@8831..8842 "\n "
- ELSE_KW@8842..8846 "else"
- WHITESPACE@8846..8859 "\n "
- FALSE_EXPR@8859..8912
- EXPR_APPLY@8859..8912
- EXPR_INDEX@8859..8873
- EXPR_VAR@8859..8862
- NAME@8859..8862
- IDENT@8859..8862 "std"
- DOT@8862..8863 "."
- NAME@8863..8873
- IDENT@8863..8873 "mergePatch"
- ARGS_DESC@8873..8912
- L_PAREN@8873..8874 "("
- ARG@8874..8890
- EXPR_INDEX_EXPR@8874..8890
- LHS_EXPR@8874..8887
- EXPR_VAR@8874..8887
- NAME@8874..8887
- IDENT@8874..8887 "target_object"
- L_BRACK@8887..8888 "["
- EXPR_VAR@8888..8889
- NAME@8888..8889
- IDENT@8888..8889 "k"
- R_BRACK@8889..8890 "]"
- COMMA@8890..8891 ","
- WHITESPACE@8891..8892 " "
- ARG@8892..8900
- EXPR_INDEX_EXPR@8892..8900
- LHS_EXPR@8892..8897
- EXPR_VAR@8892..8897
- NAME@8892..8897
- IDENT@8892..8897 "patch"
- L_BRACK@8897..8898 "["
- EXPR_VAR@8898..8899
- NAME@8898..8899
- IDENT@8898..8899 "k"
- R_BRACK@8899..8900 "]"
- R_PAREN@8900..8901 ")"
- WHITESPACE@8901..8902 " "
- TAILSTRICT_KW@8902..8912 "tailstrict"
- WHITESPACE@8912..8921 "\n "
- FOR_SPEC@8921..8967
- FOR_KW@8921..8924 "for"
- WHITESPACE@8924..8925 " "
- NAME@8925..8926
- IDENT@8925..8926 "k"
- WHITESPACE@8926..8927 " "
- IN_KW@8927..8929 "in"
- WHITESPACE@8929..8930 " "
- EXPR_APPLY@8930..8967
- EXPR_INDEX@8930..8941
- EXPR_VAR@8930..8933
- NAME@8930..8933
- IDENT@8930..8933 "std"
- DOT@8933..8934 "."
- NAME@8934..8941
- IDENT@8934..8941 "setDiff"
- ARGS_DESC@8941..8967
- L_PAREN@8941..8942 "("
- ARG@8942..8953
- EXPR_VAR@8942..8953
- NAME@8942..8953
- IDENT@8942..8953 "both_fields"
- COMMA@8953..8954 ","
- WHITESPACE@8954..8955 " "
- ARG@8955..8966
- EXPR_VAR@8955..8966
- NAME@8955..8966
- IDENT@8955..8966 "null_fields"
- R_PAREN@8966..8967 ")"
- WHITESPACE@8967..8974 "\n "
- R_BRACE@8974..8975 "}"
- WHITESPACE@8975..8980 "\n "
- ELSE_KW@8980..8984 "else"
- WHITESPACE@8984..8991 "\n "
- FALSE_EXPR@8991..8996
- EXPR_VAR@8991..8996
- NAME@8991..8996
- IDENT@8991..8996 "patch"
- COMMA@8996..8997 ","
- WHITESPACE@8997..9001 "\n\n "
- MEMBER_FIELD_METHOD@9001..9107
- FIELD_NAME_FIXED@9001..9004
- NAME@9001..9004
- IDENT@9001..9004 "get"
- PARAMS_DESC@9004..9041
- L_PAREN@9004..9005 "("
- PARAM@9005..9006
- DESTRUCT_FULL@9005..9006
- NAME@9005..9006
- IDENT@9005..9006 "o"
- COMMA@9006..9007 ","
- WHITESPACE@9007..9008 " "
- PARAM@9008..9009
- DESTRUCT_FULL@9008..9009
- NAME@9008..9009
- IDENT@9008..9009 "f"
- COMMA@9009..9010 ","
- WHITESPACE@9010..9011 " "
- PARAM@9011..9023
- DESTRUCT_FULL@9011..9018
- NAME@9011..9018
- IDENT@9011..9018 "default"
- ASSIGN@9018..9019 "="
- EXPR_LITERAL@9019..9023
- NULL_KW@9019..9023 "null"
- COMMA@9023..9024 ","
- WHITESPACE@9024..9025 " "
- PARAM@9025..9040
- DESTRUCT_FULL@9025..9035
- NAME@9025..9035
- IDENT@9025..9035 "inc_hidden"
- ASSIGN@9035..9036 "="
- EXPR_LITERAL@9036..9040
- TRUE_KW@9036..9040 "true"
- R_PAREN@9040..9041 ")"
- COLONCOLON@9041..9043 "::"
- WHITESPACE@9043..9048 "\n "
- EXPR_IF_THEN_ELSE@9048..9107
- IF_KW@9048..9050 "if"
- WHITESPACE@9050..9051 " "
- EXPR_APPLY@9051..9084
- EXPR_INDEX@9051..9066
- EXPR_VAR@9051..9054
- NAME@9051..9054
- IDENT@9051..9054 "std"
- DOT@9054..9055 "."
- NAME@9055..9066
- IDENT@9055..9066 "objectHasEx"
- ARGS_DESC@9066..9084
- L_PAREN@9066..9067 "("
- ARG@9067..9068
- EXPR_VAR@9067..9068
- NAME@9067..9068
- IDENT@9067..9068 "o"
- COMMA@9068..9069 ","
- WHITESPACE@9069..9070 " "
- ARG@9070..9071
- EXPR_VAR@9070..9071
- NAME@9070..9071
- IDENT@9070..9071 "f"
- COMMA@9071..9072 ","
- WHITESPACE@9072..9073 " "
- ARG@9073..9083
- EXPR_VAR@9073..9083
- NAME@9073..9083
- IDENT@9073..9083 "inc_hidden"
- R_PAREN@9083..9084 ")"
- WHITESPACE@9084..9085 " "
- THEN_KW@9085..9089 "then"
- WHITESPACE@9089..9090 " "
- TRUE_EXPR@9090..9094
- EXPR_INDEX_EXPR@9090..9094
- LHS_EXPR@9090..9091
- EXPR_VAR@9090..9091
- NAME@9090..9091
- IDENT@9090..9091 "o"
- L_BRACK@9091..9092 "["
- EXPR_VAR@9092..9093
- NAME@9092..9093
- IDENT@9092..9093 "f"
- R_BRACK@9093..9094 "]"
- WHITESPACE@9094..9095 " "
- ELSE_KW@9095..9099 "else"
- WHITESPACE@9099..9100 " "
- FALSE_EXPR@9100..9107
- EXPR_VAR@9100..9107
- NAME@9100..9107
- IDENT@9100..9107 "default"
- COMMA@9107..9108 ","
- WHITESPACE@9108..9112 "\n\n "
- MEMBER_FIELD_METHOD@9112..9162
- FIELD_NAME_FIXED@9112..9124
- NAME@9112..9124
- IDENT@9112..9124 "objectFields"
- PARAMS_DESC@9124..9127
- L_PAREN@9124..9125 "("
- PARAM@9125..9126
- DESTRUCT_FULL@9125..9126
- NAME@9125..9126
- IDENT@9125..9126 "o"
- R_PAREN@9126..9127 ")"
- COLONCOLON@9127..9129 "::"
- WHITESPACE@9129..9134 "\n "
- EXPR_APPLY@9134..9162
- EXPR_INDEX@9134..9152
- EXPR_VAR@9134..9137
- NAME@9134..9137
- IDENT@9134..9137 "std"
- DOT@9137..9138 "."
- NAME@9138..9152
- IDENT@9138..9152 "objectFieldsEx"
- ARGS_DESC@9152..9162
- L_PAREN@9152..9153 "("
- ARG@9153..9154
- EXPR_VAR@9153..9154
- NAME@9153..9154
- IDENT@9153..9154 "o"
- COMMA@9154..9155 ","
- WHITESPACE@9155..9156 " "
- ARG@9156..9161
- EXPR_LITERAL@9156..9161
- FALSE_KW@9156..9161 "false"
- R_PAREN@9161..9162 ")"
- COMMA@9162..9163 ","
- WHITESPACE@9163..9167 "\n\n "
- MEMBER_FIELD_METHOD@9167..9219
- FIELD_NAME_FIXED@9167..9182
- NAME@9167..9182
- IDENT@9167..9182 "objectFieldsAll"
- PARAMS_DESC@9182..9185
- L_PAREN@9182..9183 "("
- PARAM@9183..9184
- DESTRUCT_FULL@9183..9184
- NAME@9183..9184
- IDENT@9183..9184 "o"
- R_PAREN@9184..9185 ")"
- COLONCOLON@9185..9187 "::"
- WHITESPACE@9187..9192 "\n "
- EXPR_APPLY@9192..9219
- EXPR_INDEX@9192..9210
- EXPR_VAR@9192..9195
- NAME@9192..9195
- IDENT@9192..9195 "std"
- DOT@9195..9196 "."
- NAME@9196..9210
- IDENT@9196..9210 "objectFieldsEx"
- ARGS_DESC@9210..9219
- L_PAREN@9210..9211 "("
- ARG@9211..9212
- EXPR_VAR@9211..9212
- NAME@9211..9212
- IDENT@9211..9212 "o"
- COMMA@9212..9213 ","
- WHITESPACE@9213..9214 " "
- ARG@9214..9218
- EXPR_LITERAL@9214..9218
- TRUE_KW@9214..9218 "true"
- R_PAREN@9218..9219 ")"
- COMMA@9219..9220 ","
- WHITESPACE@9220..9224 "\n\n "
- MEMBER_FIELD_METHOD@9224..9274
- FIELD_NAME_FIXED@9224..9233
- NAME@9224..9233
- IDENT@9224..9233 "objectHas"
- PARAMS_DESC@9233..9239
- L_PAREN@9233..9234 "("
- PARAM@9234..9235
- DESTRUCT_FULL@9234..9235
- NAME@9234..9235
- IDENT@9234..9235 "o"
- COMMA@9235..9236 ","
- WHITESPACE@9236..9237 " "
- PARAM@9237..9238
- DESTRUCT_FULL@9237..9238
- NAME@9237..9238
- IDENT@9237..9238 "f"
- R_PAREN@9238..9239 ")"
- COLONCOLON@9239..9241 "::"
- WHITESPACE@9241..9246 "\n "
- EXPR_APPLY@9246..9274
- EXPR_INDEX@9246..9261
- EXPR_VAR@9246..9249
- NAME@9246..9249
- IDENT@9246..9249 "std"
- DOT@9249..9250 "."
- NAME@9250..9261
- IDENT@9250..9261 "objectHasEx"
- ARGS_DESC@9261..9274
- L_PAREN@9261..9262 "("
- ARG@9262..9263
- EXPR_VAR@9262..9263
- NAME@9262..9263
- IDENT@9262..9263 "o"
- COMMA@9263..9264 ","
- WHITESPACE@9264..9265 " "
- ARG@9265..9266
- EXPR_VAR@9265..9266
- NAME@9265..9266
- IDENT@9265..9266 "f"
- COMMA@9266..9267 ","
- WHITESPACE@9267..9268 " "
- ARG@9268..9273
- EXPR_LITERAL@9268..9273
- FALSE_KW@9268..9273 "false"
- R_PAREN@9273..9274 ")"
- COMMA@9274..9275 ","
- WHITESPACE@9275..9279 "\n\n "
- MEMBER_FIELD_METHOD@9279..9331
- FIELD_NAME_FIXED@9279..9291
- NAME@9279..9291
- IDENT@9279..9291 "objectHasAll"
- PARAMS_DESC@9291..9297
- L_PAREN@9291..9292 "("
- PARAM@9292..9293
- DESTRUCT_FULL@9292..9293
- NAME@9292..9293
- IDENT@9292..9293 "o"
- COMMA@9293..9294 ","
- WHITESPACE@9294..9295 " "
- PARAM@9295..9296
- DESTRUCT_FULL@9295..9296
- NAME@9295..9296
- IDENT@9295..9296 "f"
- R_PAREN@9296..9297 ")"
- COLONCOLON@9297..9299 "::"
- WHITESPACE@9299..9304 "\n "
- EXPR_APPLY@9304..9331
- EXPR_INDEX@9304..9319
- EXPR_VAR@9304..9307
- NAME@9304..9307
- IDENT@9304..9307 "std"
- DOT@9307..9308 "."
- NAME@9308..9319
- IDENT@9308..9319 "objectHasEx"
- ARGS_DESC@9319..9331
- L_PAREN@9319..9320 "("
- ARG@9320..9321
- EXPR_VAR@9320..9321
- NAME@9320..9321
- IDENT@9320..9321 "o"
- COMMA@9321..9322 ","
- WHITESPACE@9322..9323 " "
- ARG@9323..9324
- EXPR_VAR@9323..9324
- NAME@9323..9324
- IDENT@9323..9324 "f"
- COMMA@9324..9325 ","
- WHITESPACE@9325..9326 " "
- ARG@9326..9330
- EXPR_LITERAL@9326..9330
- TRUE_KW@9326..9330 "true"
- R_PAREN@9330..9331 ")"
- COMMA@9331..9332 ","
- WHITESPACE@9332..9336 "\n\n "
- MEMBER_FIELD_METHOD@9336..9393
- FIELD_NAME_FIXED@9336..9348
- NAME@9336..9348
- IDENT@9336..9348 "objectValues"
- PARAMS_DESC@9348..9351
- L_PAREN@9348..9349 "("
- PARAM@9349..9350
- DESTRUCT_FULL@9349..9350
- NAME@9349..9350
- IDENT@9349..9350 "o"
- R_PAREN@9350..9351 ")"
- COLONCOLON@9351..9353 "::"
- WHITESPACE@9353..9358 "\n "
- EXPR_ARRAY_COMP@9358..9393
- L_BRACK@9358..9359 "["
- EXPR_INDEX_EXPR@9359..9363
- LHS_EXPR@9359..9360
- EXPR_VAR@9359..9360
- NAME@9359..9360
- IDENT@9359..9360 "o"
- L_BRACK@9360..9361 "["
- EXPR_VAR@9361..9362
- NAME@9361..9362
- IDENT@9361..9362 "k"
- R_BRACK@9362..9363 "]"
- WHITESPACE@9363..9364 " "
- FOR_SPEC@9364..9392
- FOR_KW@9364..9367 "for"
- WHITESPACE@9367..9368 " "
- NAME@9368..9369
- IDENT@9368..9369 "k"
- WHITESPACE@9369..9370 " "
- IN_KW@9370..9372 "in"
- WHITESPACE@9372..9373 " "
- EXPR_APPLY@9373..9392
- EXPR_INDEX@9373..9389
- EXPR_VAR@9373..9376
- NAME@9373..9376
- IDENT@9373..9376 "std"
- DOT@9376..9377 "."
- NAME@9377..9389
- IDENT@9377..9389 "objectFields"
- ARGS_DESC@9389..9392
- L_PAREN@9389..9390 "("
- ARG@9390..9391
- EXPR_VAR@9390..9391
- NAME@9390..9391
- IDENT@9390..9391 "o"
- R_PAREN@9391..9392 ")"
- R_BRACK@9392..9393 "]"
- COMMA@9393..9394 ","
- WHITESPACE@9394..9398 "\n\n "
- MEMBER_FIELD_METHOD@9398..9461
- FIELD_NAME_FIXED@9398..9413
- NAME@9398..9413
- IDENT@9398..9413 "objectValuesAll"
- PARAMS_DESC@9413..9416
- L_PAREN@9413..9414 "("
- PARAM@9414..9415
- DESTRUCT_FULL@9414..9415
- NAME@9414..9415
- IDENT@9414..9415 "o"
- R_PAREN@9415..9416 ")"
- COLONCOLON@9416..9418 "::"
- WHITESPACE@9418..9423 "\n "
- EXPR_ARRAY_COMP@9423..9461
- L_BRACK@9423..9424 "["
- EXPR_INDEX_EXPR@9424..9428
- LHS_EXPR@9424..9425
- EXPR_VAR@9424..9425
- NAME@9424..9425
- IDENT@9424..9425 "o"
- L_BRACK@9425..9426 "["
- EXPR_VAR@9426..9427
- NAME@9426..9427
- IDENT@9426..9427 "k"
- R_BRACK@9427..9428 "]"
- WHITESPACE@9428..9429 " "
- FOR_SPEC@9429..9460
- FOR_KW@9429..9432 "for"
- WHITESPACE@9432..9433 " "
- NAME@9433..9434
- IDENT@9433..9434 "k"
- WHITESPACE@9434..9435 " "
- IN_KW@9435..9437 "in"
- WHITESPACE@9437..9438 " "
- EXPR_APPLY@9438..9460
- EXPR_INDEX@9438..9457
- EXPR_VAR@9438..9441
- NAME@9438..9441
- IDENT@9438..9441 "std"
- DOT@9441..9442 "."
- NAME@9442..9457
- IDENT@9442..9457 "objectFieldsAll"
- ARGS_DESC@9457..9460
- L_PAREN@9457..9458 "("
- ARG@9458..9459
- EXPR_VAR@9458..9459
- NAME@9458..9459
- IDENT@9458..9459 "o"
- R_PAREN@9459..9460 ")"
- R_BRACK@9460..9461 "]"
- COMMA@9461..9462 ","
- WHITESPACE@9462..9466 "\n\n "
- MEMBER_FIELD_METHOD@9466..9600
- FIELD_NAME_FIXED@9466..9477
- NAME@9466..9477
- IDENT@9466..9477 "resolvePath"
- PARAMS_DESC@9477..9483
- L_PAREN@9477..9478 "("
- PARAM@9478..9479
- DESTRUCT_FULL@9478..9479
- NAME@9478..9479
- IDENT@9478..9479 "f"
- COMMA@9479..9480 ","
- WHITESPACE@9480..9481 " "
- PARAM@9481..9482
- DESTRUCT_FULL@9481..9482
- NAME@9481..9482
- IDENT@9481..9482 "r"
- R_PAREN@9482..9483 ")"
- COLONCOLON@9483..9485 "::"
- WHITESPACE@9485..9490 "\n "
- EXPR_LOCAL@9490..9600
- LOCAL_KW@9490..9495 "local"
- WHITESPACE@9495..9496 " "
- BIND_DESTRUCT@9496..9519
- DESTRUCT_FULL@9496..9499
- NAME@9496..9499
- IDENT@9496..9499 "arr"
- WHITESPACE@9499..9500 " "
- ASSIGN@9500..9501 "="
- WHITESPACE@9501..9502 " "
- EXPR_APPLY@9502..9519
- EXPR_INDEX@9502..9511
- EXPR_VAR@9502..9505
- NAME@9502..9505
- IDENT@9502..9505 "std"
- DOT@9505..9506 "."
- NAME@9506..9511
- IDENT@9506..9511 "split"
- ARGS_DESC@9511..9519
- L_PAREN@9511..9512 "("
- ARG@9512..9513
- EXPR_VAR@9512..9513
- NAME@9512..9513
- IDENT@9512..9513 "f"
- COMMA@9513..9514 ","
+ 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 " "
- ARG@9515..9518
- EXPR_STRING@9515..9518
- STRING_SINGLE@9515..9518 "'/'"
- R_PAREN@9518..9519 ")"
- SEMI@9519..9520 ";"
- WHITESPACE@9520..9525 "\n "
- EXPR_APPLY@9525..9600
- EXPR_INDEX@9525..9533
- EXPR_VAR@9525..9528
- NAME@9525..9528
- IDENT@9525..9528 "std"
- DOT@9528..9529 "."
- NAME@9529..9533
- IDENT@9529..9533 "join"
- ARGS_DESC@9533..9600
- L_PAREN@9533..9534 "("
- ARG@9534..9537
- EXPR_STRING@9534..9537
- STRING_SINGLE@9534..9537 "'/'"
- COMMA@9537..9538 ","
- WHITESPACE@9538..9539 " "
- ARG@9539..9599
- EXPR_BINARY@9539..9599
- LHS_EXPR@9539..9593
- EXPR_APPLY@9539..9593
- EXPR_INDEX@9539..9552
- EXPR_VAR@9539..9542
- NAME@9539..9542
- IDENT@9539..9542 "std"
- DOT@9542..9543 "."
- NAME@9543..9552
- IDENT@9543..9552 "makeArray"
- ARGS_DESC@9552..9593
- L_PAREN@9552..9553 "("
- ARG@9553..9572
- EXPR_BINARY@9553..9572
- LHS_EXPR@9553..9568
- EXPR_APPLY@9553..9568
- EXPR_INDEX@9553..9563
- EXPR_VAR@9553..9556
- NAME@9553..9556
- IDENT@9553..9556 "std"
- DOT@9556..9557 "."
- NAME@9557..9563
- IDENT@9557..9563 "length"
- ARGS_DESC@9563..9568
- L_PAREN@9563..9564 "("
- ARG@9564..9567
- EXPR_VAR@9564..9567
- NAME@9564..9567
- IDENT@9564..9567 "arr"
- R_PAREN@9567..9568 ")"
- WHITESPACE@9568..9569 " "
- MINUS@9569..9570 "-"
- WHITESPACE@9570..9571 " "
- EXPR_NUMBER@9571..9572
- FLOAT@9571..9572 "1"
- COMMA@9572..9573 ","
- WHITESPACE@9573..9574 " "
- ARG@9574..9592
- EXPR_FUNCTION@9574..9592
- FUNCTION_KW@9574..9582 "function"
- PARAMS_DESC@9582..9585
- L_PAREN@9582..9583 "("
- PARAM@9583..9584
- DESTRUCT_FULL@9583..9584
- NAME@9583..9584
- IDENT@9583..9584 "i"
- R_PAREN@9584..9585 ")"
- WHITESPACE@9585..9586 " "
- EXPR_INDEX_EXPR@9586..9592
- LHS_EXPR@9586..9589
- EXPR_VAR@9586..9589
- NAME@9586..9589
- IDENT@9586..9589 "arr"
- L_BRACK@9589..9590 "["
- EXPR_VAR@9590..9591
- NAME@9590..9591
- IDENT@9590..9591 "i"
- R_BRACK@9591..9592 "]"
- R_PAREN@9592..9593 ")"
- WHITESPACE@9593..9594 " "
- PLUS@9594..9595 "+"
- WHITESPACE@9595..9596 " "
- EXPR_ARRAY@9596..9599
- L_BRACK@9596..9597 "["
- EXPR_VAR@9597..9598
- NAME@9597..9598
- IDENT@9597..9598 "r"
- R_BRACK@9598..9599 "]"
- R_PAREN@9599..9600 ")"
- COMMA@9600..9601 ","
- WHITESPACE@9601..9605 "\n\n "
- MEMBER_FIELD_METHOD@9605..10058
- FIELD_NAME_FIXED@9605..9610
- NAME@9605..9610
- IDENT@9605..9610 "prune"
- PARAMS_DESC@9610..9613
- L_PAREN@9610..9611 "("
- PARAM@9611..9612
- DESTRUCT_FULL@9611..9612
- NAME@9611..9612
- IDENT@9611..9612 "a"
- R_PAREN@9612..9613 ")"
- COLONCOLON@9613..9615 "::"
- WHITESPACE@9615..9620 "\n "
- EXPR_LOCAL@9620..10058
- LOCAL_KW@9620..9625 "local"
+ 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 " "
- BIND_FUNCTION@9626..9823
- NAME@9626..9635
- IDENT@9626..9635 "isContent"
- PARAMS_DESC@9635..9638
- L_PAREN@9635..9636 "("
- PARAM@9636..9637
- DESTRUCT_FULL@9636..9637
- NAME@9636..9637
- IDENT@9636..9637 "b"
- R_PAREN@9637..9638 ")"
- WHITESPACE@9638..9639 " "
- ASSIGN@9639..9640 "="
- WHITESPACE@9640..9647 "\n "
- EXPR_IF_THEN_ELSE@9647..9823
- IF_KW@9647..9649 "if"
- WHITESPACE@9649..9650 " "
- EXPR_BINARY@9650..9659
- LHS_EXPR@9650..9651
- EXPR_VAR@9650..9651
- NAME@9650..9651
- IDENT@9650..9651 "b"
- WHITESPACE@9651..9652 " "
- EQ@9652..9654 "=="
- WHITESPACE@9654..9655 " "
- EXPR_LITERAL@9655..9659
- NULL_KW@9655..9659 "null"
- WHITESPACE@9659..9660 " "
- THEN_KW@9660..9664 "then"
- WHITESPACE@9664..9673 "\n "
- TRUE_EXPR@9673..9678
- EXPR_LITERAL@9673..9678
- FALSE_KW@9673..9678 "false"
- WHITESPACE@9678..9685 "\n "
- ELSE_KW@9685..9689 "else"
- WHITESPACE@9689..9690 " "
- FALSE_EXPR@9690..9823
- EXPR_IF_THEN_ELSE@9690..9823
- IF_KW@9690..9692 "if"
- WHITESPACE@9692..9693 " "
- EXPR_APPLY@9693..9707
- EXPR_INDEX@9693..9704
- EXPR_VAR@9693..9696
- NAME@9693..9696
- IDENT@9693..9696 "std"
- DOT@9696..9697 "."
- NAME@9697..9704
- IDENT@9697..9704 "isArray"
- ARGS_DESC@9704..9707
- L_PAREN@9704..9705 "("
- ARG@9705..9706
- EXPR_VAR@9705..9706
- NAME@9705..9706
- IDENT@9705..9706 "b"
- R_PAREN@9706..9707 ")"
- WHITESPACE@9707..9708 " "
- THEN_KW@9708..9712 "then"
- WHITESPACE@9712..9721 "\n "
- TRUE_EXPR@9721..9738
- EXPR_BINARY@9721..9738
- LHS_EXPR@9721..9734
- EXPR_APPLY@9721..9734
- EXPR_INDEX@9721..9731
- EXPR_VAR@9721..9724
- NAME@9721..9724
- IDENT@9721..9724 "std"
- DOT@9724..9725 "."
- NAME@9725..9731
- IDENT@9725..9731 "length"
- ARGS_DESC@9731..9734
- L_PAREN@9731..9732 "("
- ARG@9732..9733
- EXPR_VAR@9732..9733
- NAME@9732..9733
- IDENT@9732..9733 "b"
- R_PAREN@9733..9734 ")"
- WHITESPACE@9734..9735 " "
- GT@9735..9736 ">"
- WHITESPACE@9736..9737 " "
- EXPR_NUMBER@9737..9738
- FLOAT@9737..9738 "0"
- WHITESPACE@9738..9745 "\n "
- ELSE_KW@9745..9749 "else"
- WHITESPACE@9749..9750 " "
- FALSE_EXPR@9750..9823
- EXPR_IF_THEN_ELSE@9750..9823
- IF_KW@9750..9752 "if"
- WHITESPACE@9752..9753 " "
- EXPR_APPLY@9753..9768
- EXPR_INDEX@9753..9765
- EXPR_VAR@9753..9756
- NAME@9753..9756
- IDENT@9753..9756 "std"
- DOT@9756..9757 "."
- NAME@9757..9765
- IDENT@9757..9765 "isObject"
- ARGS_DESC@9765..9768
- L_PAREN@9765..9766 "("
- ARG@9766..9767
- EXPR_VAR@9766..9767
- NAME@9766..9767
- IDENT@9766..9767 "b"
- R_PAREN@9767..9768 ")"
- WHITESPACE@9768..9769 " "
- THEN_KW@9769..9773 "then"
- WHITESPACE@9773..9782 "\n "
- TRUE_EXPR@9782..9799
- EXPR_BINARY@9782..9799
- LHS_EXPR@9782..9795
- EXPR_APPLY@9782..9795
- EXPR_INDEX@9782..9792
- EXPR_VAR@9782..9785
- NAME@9782..9785
- IDENT@9782..9785 "std"
- DOT@9785..9786 "."
- NAME@9786..9792
- IDENT@9786..9792 "length"
- ARGS_DESC@9792..9795
- L_PAREN@9792..9793 "("
- ARG@9793..9794
- EXPR_VAR@9793..9794
- NAME@9793..9794
- IDENT@9793..9794 "b"
- R_PAREN@9794..9795 ")"
- WHITESPACE@9795..9796 " "
- GT@9796..9797 ">"
- WHITESPACE@9797..9798 " "
- EXPR_NUMBER@9798..9799
- FLOAT@9798..9799 "0"
- WHITESPACE@9799..9806 "\n "
- ELSE_KW@9806..9810 "else"
- WHITESPACE@9810..9819 "\n "
- FALSE_EXPR@9819..9823
- EXPR_LITERAL@9819..9823
- TRUE_KW@9819..9823 "true"
- SEMI@9823..9824 ";"
- WHITESPACE@9824..9829 "\n "
- EXPR_IF_THEN_ELSE@9829..10058
- IF_KW@9829..9831 "if"
- WHITESPACE@9831..9832 " "
- EXPR_APPLY@9832..9846
- EXPR_INDEX@9832..9843
- EXPR_VAR@9832..9835
- NAME@9832..9835
- IDENT@9832..9835 "std"
- DOT@9835..9836 "."
- NAME@9836..9843
- IDENT@9836..9843 "isArray"
- ARGS_DESC@9843..9846
- L_PAREN@9843..9844 "("
- ARG@9844..9845
- EXPR_VAR@9844..9845
- NAME@9844..9845
- IDENT@9844..9845 "a"
- R_PAREN@9845..9846 ")"
- WHITESPACE@9846..9847 " "
- THEN_KW@9847..9851 "then"
- WHITESPACE@9851..9858 "\n "
- TRUE_EXPR@9858..9908
- EXPR_ARRAY_COMP@9858..9908
- L_BRACK@9858..9859 "["
- EXPR_APPLY@9859..9871
- EXPR_INDEX@9859..9868
- EXPR_VAR@9859..9862
- NAME@9859..9862
- IDENT@9859..9862 "std"
- DOT@9862..9863 "."
- NAME@9863..9868
- IDENT@9863..9868 "prune"
- ARGS_DESC@9868..9871
- L_PAREN@9868..9869 "("
- ARG@9869..9870
- EXPR_VAR@9869..9870
- NAME@9869..9870
- IDENT@9869..9870 "x"
- R_PAREN@9870..9871 ")"
- WHITESPACE@9871..9872 " "
- FOR_SPEC@9872..9882
- FOR_KW@9872..9875 "for"
- WHITESPACE@9875..9876 " "
- NAME@9876..9877
- IDENT@9876..9877 "x"
- WHITESPACE@9877..9878 " "
- IN_KW@9878..9880 "in"
- WHITESPACE@9880..9881 " "
- EXPR_VAR@9881..9882
- NAME@9881..9882
- IDENT@9881..9882 "a"
- WHITESPACE@9882..9883 " "
- IF_SPEC@9883..9907
- IF_KW@9883..9885 "if"
- WHITESPACE@9885..9886 " "
- EXPR_APPLY@9886..9907
- EXPR_VAR@9886..9895
- NAME@9886..9895
- IDENT@9886..9895 "isContent"
- ARGS_DESC@9895..9907
- L_PAREN@9895..9896 "("
- ARG@9896..9906
- EXPR_APPLY@9896..9906
- EXPR_INDEX@9896..9903
- EXPR_LITERAL@9896..9897
- DOLLAR@9896..9897 "$"
- DOT@9897..9898 "."
- NAME@9898..9903
- IDENT@9898..9903 "prune"
- ARGS_DESC@9903..9906
- L_PAREN@9903..9904 "("
- ARG@9904..9905
- EXPR_VAR@9904..9905
- NAME@9904..9905
- IDENT@9904..9905 "x"
- R_PAREN@9905..9906 ")"
- R_PAREN@9906..9907 ")"
- R_BRACK@9907..9908 "]"
- WHITESPACE@9908..9913 "\n "
- ELSE_KW@9913..9917 "else"
- WHITESPACE@9917..9918 " "
- FALSE_EXPR@9918..10058
- EXPR_IF_THEN_ELSE@9918..10058
- IF_KW@9918..9920 "if"
- WHITESPACE@9920..9921 " "
- EXPR_APPLY@9921..9936
- EXPR_INDEX@9921..9933
- EXPR_VAR@9921..9924
- NAME@9921..9924
- IDENT@9921..9924 "std"
- DOT@9924..9925 "."
- NAME@9925..9933
- IDENT@9925..9933 "isObject"
- ARGS_DESC@9933..9936
- L_PAREN@9933..9934 "("
- ARG@9934..9935
- EXPR_VAR@9934..9935
- NAME@9934..9935
- IDENT@9934..9935 "a"
- R_PAREN@9935..9936 ")"
- WHITESPACE@9936..9937 " "
- THEN_KW@9937..9941 "then"
- WHITESPACE@9941..9942 " "
- TRUE_EXPR@9942..10045
- EXPR_OBJECT@9942..10045
- OBJ_BODY_COMP@9942..10045
- L_BRACE@9942..9943 "{"
- WHITESPACE@9943..9950 "\n "
- MEMBER_FIELD_NORMAL@9950..9968
- FIELD_NAME_DYNAMIC@9950..9953
- L_BRACK@9950..9951 "["
- EXPR_VAR@9951..9952
- NAME@9951..9952
- IDENT@9951..9952 "x"
- R_BRACK@9952..9953 "]"
- COLON@9953..9954 ":"
- WHITESPACE@9954..9955 " "
- EXPR_APPLY@9955..9968
- EXPR_INDEX@9955..9962
- EXPR_LITERAL@9955..9956
- DOLLAR@9955..9956 "$"
- DOT@9956..9957 "."
- NAME@9957..9962
- IDENT@9957..9962 "prune"
- ARGS_DESC@9962..9968
- L_PAREN@9962..9963 "("
- ARG@9963..9967
- EXPR_INDEX_EXPR@9963..9967
- LHS_EXPR@9963..9964
- EXPR_VAR@9963..9964
- NAME@9963..9964
- IDENT@9963..9964 "a"
- L_BRACK@9964..9965 "["
- EXPR_VAR@9965..9966
- NAME@9965..9966
- IDENT@9965..9966 "x"
- R_BRACK@9966..9967 "]"
- R_PAREN@9967..9968 ")"
- WHITESPACE@9968..9975 "\n "
- FOR_SPEC@9975..10003
- FOR_KW@9975..9978 "for"
- WHITESPACE@9978..9979 " "
- NAME@9979..9980
- IDENT@9979..9980 "x"
- WHITESPACE@9980..9981 " "
- IN_KW@9981..9983 "in"
- WHITESPACE@9983..9984 " "
- EXPR_APPLY@9984..10003
- EXPR_INDEX@9984..10000
- EXPR_VAR@9984..9987
- NAME@9984..9987
- IDENT@9984..9987 "std"
- DOT@9987..9988 "."
- NAME@9988..10000
- IDENT@9988..10000 "objectFields"
- ARGS_DESC@10000..10003
- L_PAREN@10000..10001 "("
- ARG@10001..10002
- EXPR_VAR@10001..10002
- NAME@10001..10002
- IDENT@10001..10002 "a"
- R_PAREN@10002..10003 ")"
- WHITESPACE@10003..10010 "\n "
- IF_SPEC@10010..10039
- IF_KW@10010..10012 "if"
- WHITESPACE@10012..10013 " "
- EXPR_APPLY@10013..10039
- EXPR_VAR@10013..10022
- NAME@10013..10022
- IDENT@10013..10022 "isContent"
- ARGS_DESC@10022..10039
- L_PAREN@10022..10023 "("
- ARG@10023..10038
- EXPR_APPLY@10023..10038
- EXPR_INDEX@10023..10032
- EXPR_VAR@10023..10026
- NAME@10023..10026
- IDENT@10023..10026 "std"
- DOT@10026..10027 "."
- NAME@10027..10032
- IDENT@10027..10032 "prune"
- ARGS_DESC@10032..10038
- L_PAREN@10032..10033 "("
- ARG@10033..10037
- EXPR_INDEX_EXPR@10033..10037
- LHS_EXPR@10033..10034
- EXPR_VAR@10033..10034
- NAME@10033..10034
- IDENT@10033..10034 "a"
- L_BRACK@10034..10035 "["
- EXPR_VAR@10035..10036
- NAME@10035..10036
- IDENT@10035..10036 "x"
- R_BRACK@10036..10037 "]"
- R_PAREN@10037..10038 ")"
- R_PAREN@10038..10039 ")"
- WHITESPACE@10039..10044 "\n "
- R_BRACE@10044..10045 "}"
- WHITESPACE@10045..10046 " "
- ELSE_KW@10046..10050 "else"
- WHITESPACE@10050..10057 "\n "
- FALSE_EXPR@10057..10058
- EXPR_VAR@10057..10058
- NAME@10057..10058
- IDENT@10057..10058 "a"
- COMMA@10058..10059 ","
- WHITESPACE@10059..10063 "\n\n "
- MEMBER_FIELD_METHOD@10063..10278
- FIELD_NAME_FIXED@10063..10067
- NAME@10063..10067
- IDENT@10063..10067 "find"
- PARAMS_DESC@10067..10079
- L_PAREN@10067..10068 "("
- PARAM@10068..10073
- DESTRUCT_FULL@10068..10073
- NAME@10068..10073
- IDENT@10068..10073 "value"
- COMMA@10073..10074 ","
- WHITESPACE@10074..10075 " "
- PARAM@10075..10078
- DESTRUCT_FULL@10075..10078
- NAME@10075..10078
- IDENT@10075..10078 "arr"
- R_PAREN@10078..10079 ")"
- COLONCOLON@10079..10081 "::"
- WHITESPACE@10081..10086 "\n "
- EXPR_IF_THEN_ELSE@10086..10278
- IF_KW@10086..10088 "if"
- WHITESPACE@10088..10089 " "
- EXPR_UNARY@10089..10106
- NOT@10089..10090 "!"
- EXPR_APPLY@10090..10106
- EXPR_INDEX@10090..10101
- EXPR_VAR@10090..10093
- NAME@10090..10093
- IDENT@10090..10093 "std"
- DOT@10093..10094 "."
- NAME@10094..10101
- IDENT@10094..10101 "isArray"
- ARGS_DESC@10101..10106
- L_PAREN@10101..10102 "("
- ARG@10102..10105
- EXPR_VAR@10102..10105
- NAME@10102..10105
- IDENT@10102..10105 "arr"
- R_PAREN@10105..10106 ")"
- WHITESPACE@10106..10107 " "
- THEN_KW@10107..10111 "then"
- WHITESPACE@10111..10118 "\n "
- TRUE_EXPR@10118..10188
- EXPR_ERROR@10118..10188
- ERROR_KW@10118..10123 "error"
- WHITESPACE@10123..10124 " "
- EXPR_BINARY@10124..10188
- LHS_EXPR@10124..10172
- EXPR_STRING@10124..10172
- STRING_SINGLE@10124..10172 "'find second paramete ..."
- WHITESPACE@10172..10173 " "
- PLUS@10173..10174 "+"
- WHITESPACE@10174..10175 " "
- EXPR_APPLY@10175..10188
- EXPR_INDEX@10175..10183
- EXPR_VAR@10175..10178
- NAME@10175..10178
- IDENT@10175..10178 "std"
- DOT@10178..10179 "."
- NAME@10179..10183
- IDENT@10179..10183 "type"
- ARGS_DESC@10183..10188
- L_PAREN@10183..10184 "("
- ARG@10184..10187
- EXPR_VAR@10184..10187
- NAME@10184..10187
- IDENT@10184..10187 "arr"
- R_PAREN@10187..10188 ")"
- WHITESPACE@10188..10193 "\n "
- ELSE_KW@10193..10197 "else"
- WHITESPACE@10197..10204 "\n "
- FALSE_EXPR@10204..10278
- EXPR_APPLY@10204..10278
- EXPR_INDEX@10204..10214
- EXPR_VAR@10204..10207
- NAME@10204..10207
- IDENT@10204..10207 "std"
- DOT@10207..10208 "."
- NAME@10208..10214
- IDENT@10208..10214 "filter"
- ARGS_DESC@10214..10278
- L_PAREN@10214..10215 "("
- ARG@10215..10242
- EXPR_FUNCTION@10215..10242
- FUNCTION_KW@10215..10223 "function"
- PARAMS_DESC@10223..10226
- L_PAREN@10223..10224 "("
- PARAM@10224..10225
- DESTRUCT_FULL@10224..10225
- NAME@10224..10225
- IDENT@10224..10225 "i"
- R_PAREN@10225..10226 ")"
- WHITESPACE@10226..10227 " "
- EXPR_BINARY@10227..10242
- LHS_EXPR@10227..10233
- EXPR_INDEX_EXPR@10227..10233
- LHS_EXPR@10227..10230
- EXPR_VAR@10227..10230
- NAME@10227..10230
- IDENT@10227..10230 "arr"
- L_BRACK@10230..10231 "["
- EXPR_VAR@10231..10232
- NAME@10231..10232
- IDENT@10231..10232 "i"
- R_BRACK@10232..10233 "]"
- WHITESPACE@10233..10234 " "
- EQ@10234..10236 "=="
- WHITESPACE@10236..10237 " "
- EXPR_VAR@10237..10242
- NAME@10237..10242
- IDENT@10237..10242 "value"
- COMMA@10242..10243 ","
- WHITESPACE@10243..10244 " "
- ARG@10244..10277
- EXPR_APPLY@10244..10277
- EXPR_INDEX@10244..10253
- EXPR_VAR@10244..10247
- NAME@10244..10247
- IDENT@10244..10247 "std"
- DOT@10247..10248 "."
- NAME@10248..10253
- IDENT@10248..10253 "range"
- ARGS_DESC@10253..10277
- L_PAREN@10253..10254 "("
- ARG@10254..10255
- EXPR_NUMBER@10254..10255
- FLOAT@10254..10255 "0"
- COMMA@10255..10256 ","
- WHITESPACE@10256..10257 " "
- ARG@10257..10276
- EXPR_BINARY@10257..10276
- LHS_EXPR@10257..10272
- EXPR_APPLY@10257..10272
- EXPR_INDEX@10257..10267
- EXPR_VAR@10257..10260
- NAME@10257..10260
- IDENT@10257..10260 "std"
- DOT@10260..10261 "."
- NAME@10261..10267
- IDENT@10261..10267 "length"
- ARGS_DESC@10267..10272
- L_PAREN@10267..10268 "("
- ARG@10268..10271
- EXPR_VAR@10268..10271
- NAME@10268..10271
- IDENT@10268..10271 "arr"
- R_PAREN@10271..10272 ")"
- WHITESPACE@10272..10273 " "
- MINUS@10273..10274 "-"
- WHITESPACE@10274..10275 " "
- EXPR_NUMBER@10275..10276
- FLOAT@10275..10276 "1"
- R_PAREN@10276..10277 ")"
- R_PAREN@10277..10278 ")"
- COMMA@10278..10279 ","
- WHITESPACE@10279..10280 "\n"
- R_BRACE@10280..10281 "}"
- WHITESPACE@10281..10282 "\n"
+ 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"
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,7 +3,7 @@
expression: "local * = 1;\na\n"
---
SOURCE_FILE@0..15
- EXPR_LOCAL@0..14
+ STMT_LOCAL@0..12
LOCAL_KW@0..5 "local"
WHITESPACE@5..6 " "
BIND_DESTRUCT@6..11
@@ -15,10 +15,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"
+ 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/tests.rsdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/tests.rs
+++ b/crates/jrsonnet-rowan-parser/src/tests.rs
@@ -244,3 +244,10 @@
let result = process(src);
insta::assert_snapshot!("stdlib", result, src);
}
+#[test]
+fn eval_simple() {
+ let src = "local a = 1, b = 2; a + local c = 1; c";
+ let (node, errors) = parse(src);
+
+ dbg!(node);
+}
flake.nixdiffbeforeafterboth--- a/flake.nix
+++ b/flake.nix
@@ -132,6 +132,7 @@
cargo-asm
cargo-outdated
cargo-watch
+ cargo-insta
lld
hyperfine
graphviz