difftreelog
fix incorrect expression suffix handling in rowan parser
in: master
31 files changed
Cargo.lockdiffbeforeafterboth--- a/Cargo.lock
+++ b/Cargo.lock
@@ -704,10 +704,12 @@
dependencies = [
"anyhow",
"drop_bomb",
+ "hi-doc",
"indoc",
"insta",
"logos",
"rowan",
+ "strip-ansi-escapes",
"thiserror",
]
@@ -1318,6 +1320,15 @@
checksum = "2b2231b7c3057d5e4ad0156fb3dc807d900806020c5ffa3ee6ff2c8c76fb8520"
[[package]]
+name = "strip-ansi-escapes"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a8f8038e7e7969abb3f1b7c2a811225e9296da208539e0f79c5251d6cac0025"
+dependencies = [
+ "vte",
+]
+
+[[package]]
name = "strsim"
version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1471,6 +1482,15 @@
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
[[package]]
+name = "vte"
+version = "0.14.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "231fdcd7ef3037e8330d8e17e61011a2c244126acc0a982f4040ac3f9f0bc077"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
name = "wasip2"
version = "1.0.2+wasi-0.2.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
crates/jrsonnet-formatter/src/lib.rsdiffbeforeafterboth--- a/crates/jrsonnet-formatter/src/lib.rs
+++ b/crates/jrsonnet-formatter/src/lib.rs
@@ -685,7 +685,7 @@
fn print(&self, out: &mut PrintItems) {
match self {
Self::ExprBinary(b) => {
- p!(out, {b.lhs_work()} str(" ") {b.binary_operator()} str(" ") {b.rhs_work()});
+ p!(out, {b.lhs()} str(" ") {b.binary_operator()} str(" ") {b.rhs()});
}
Self::ExprUnary(u) => p!(out, {u.unary_operator()} {u.rhs()}),
// Self::ExprSlice(s) => {
crates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__self_super.snapdiffbeforeafterboth--- /dev/null
+++ b/crates/jrsonnet-formatter/src/snapshots/jrsonnet_formatter__tests__self_super.snap
@@ -0,0 +1,13 @@
+---
+source: crates/jrsonnet-formatter/src/tests.rs
+expression: "reformat(indoc!(\"\n\t\t\tlocal base = {\n\t\t\t foo: 'bar',\n\t\t\t method():: self.foo,\n\t\t\t};\n\n\t\t\tbase {\n\t\t\t foo: super.foo + '-extended',\n\t\t\t result: self.method(),\n\t\t\t}\n\t\t\"))"
+---
+local base = {
+ foo: 'bar',
+ method(
+ ):: self.foo,
+};
+base {
+ foo: super.foo + '-extended',
+ result: self.method(),
+}
crates/jrsonnet-formatter/src/tests.rsdiffbeforeafterboth--- a/crates/jrsonnet-formatter/src/tests.rs
+++ b/crates/jrsonnet-formatter/src/tests.rs
@@ -148,3 +148,20 @@
"
)));
}
+
+#[test]
+fn self_super() {
+ insta::assert_snapshot!(reformat(indoc!(
+ "
+ local base = {
+ foo: 'bar',
+ method():: self.foo,
+ };
+
+ base {
+ foo: super.foo + '-extended',
+ result: self.method(),
+ }
+ "
+ )));
+}
crates/jrsonnet-rowan-parser/Cargo.tomldiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/Cargo.toml
+++ b/crates/jrsonnet-rowan-parser/Cargo.toml
@@ -12,6 +12,7 @@
[dependencies]
anyhow.workspace = true
drop_bomb.workspace = true
+hi-doc.workspace = true
indoc.workspace = true
logos.workspace = true
rowan.workspace = true
@@ -21,3 +22,4 @@
indoc.workspace = true
insta.workspace = true
anyhow.workspace = true
+strip-ansi-escapes = "0.2.1"
crates/jrsonnet-rowan-parser/src/lib.rsdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/lib.rs
+++ b/crates/jrsonnet-rowan-parser/src/lib.rs
@@ -47,17 +47,6 @@
parse.errors,
)
}
-impl ExprBinary {
- pub fn lhs_work(&self) -> Option<Expr> {
- support::child(self.syntax())
- }
- pub fn rhs_work(&self) -> Option<Expr> {
- let mut children = support::children(self.syntax());
- // skip lhs
- children.next()?;
- children.next()
- }
-}
impl ExprObjExtend {
pub fn lhs_work(&self) -> Option<Expr> {
support::child(self.syntax())
crates/jrsonnet-rowan-parser/src/marker.rsdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/marker.rs
+++ b/crates/jrsonnet-rowan-parser/src/marker.rs
@@ -140,8 +140,15 @@
new_m
}
- /// Create new node around existing marker, not counting anything that comes after it
- fn wrap_raw(self, p: &mut Parser, kind: SyntaxKind, error: Option<SyntaxError>) -> Self {
+ /// Create new node around existing marker
+ /// If previous_pos is set - the wrapping node would not include everything that happened between wrapped node end and the current position of the parser
+ fn wrap_raw(
+ self,
+ p: &mut Parser,
+ kind: SyntaxKind,
+ error: Option<SyntaxError>,
+ previous_pos: bool,
+ ) -> Self {
let new_m = p.start();
match &mut p.events[self.start_event_idx] {
Event::Start { forward_parent, .. } => {
@@ -154,30 +161,33 @@
let completed = new_m.complete_raw(p, kind, error);
- match &mut p.events[self.finish_event_idx] {
- Event::Finish {
- wrapper,
- error: _error,
- } => {
- *wrapper = Some(
- NonZeroUsize::new(completed.finish_event_idx - self.finish_event_idx)
- .expect("!= 0"),
- );
+ if previous_pos {
+ match &mut p.events[self.finish_event_idx] {
+ Event::Finish {
+ wrapper,
+ error: _error,
+ } => {
+ *wrapper = Some(
+ NonZeroUsize::new(completed.finish_event_idx - self.finish_event_idx)
+ .expect("!= 0"),
+ );
+ }
+ _ => unreachable!(),
}
- _ => unreachable!(),
}
completed
}
- pub fn wrap(self, p: &mut Parser, kind: SyntaxKind) -> Self {
- self.wrap_raw(p, kind, None)
+ pub fn wrap(self, p: &mut Parser, kind: SyntaxKind, previous_pos: bool) -> Self {
+ self.wrap_raw(p, kind, None, previous_pos)
}
- pub fn wrap_error(self, p: &mut Parser, msg: impl AsRef<str>) -> Self {
+ pub fn wrap_error(self, p: &mut Parser, msg: impl AsRef<str>, previous_pos: bool) -> Self {
self.wrap_raw(
p,
SyntaxKind::ERROR_CUSTOM,
Some(SyntaxError::Custom {
error: msg.as_ref().to_owned(),
}),
+ previous_pos,
)
}
}
crates/jrsonnet-rowan-parser/src/parser.rsdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/parser.rs
+++ b/crates/jrsonnet-rowan-parser/src/parser.rs
@@ -45,6 +45,18 @@
error: String,
},
}
+impl fmt::Display for SyntaxError {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ match self {
+ SyntaxError::Unexpected { expected, found } => {
+ write!(f, "unexpected {found:?}, expecting {expected}")
+ }
+ SyntaxError::Missing { expected } => write!(f, "missing {expected}"),
+ SyntaxError::Custom { error } => write!(f, "{error}"),
+ SyntaxError::Hint { error } => write!(f, "{error}"),
+ }
+ }
+}
#[derive(Debug)]
pub struct LocatedSyntaxError {
@@ -316,12 +328,14 @@
break;
}
+ let m = lhs.wrap(p, EXPR, false);
+
// Object apply is not a real operator, we dont have something to bump
if op != BinaryOperatorKind::MetaObjectApply {
p.bump();
}
- let m = lhs.wrap(p, EXPR).precede(p);
+ let m = m.precede(p);
let parsed_rhs = expr_binding_power(p, right_binding_power)
.map(|v| v.precede(p).complete(p, EXPR))
.is_ok();
@@ -491,12 +505,13 @@
errored.wrap_error(
p,
"compspec may only be used if there is only one object element",
+ true,
);
}
m.complete(p, OBJ_BODY_MEMBER_LIST);
} else if !compspecs.is_empty() {
for errored in asserts {
- errored.wrap_error(p, "asserts can't be used in object comprehensions");
+ errored.wrap_error(p, "asserts can't be used in object comprehensions", true);
}
m.complete(p, OBJ_BODY_COMP);
} else {
@@ -569,7 +584,7 @@
}
for errored in unnamed_after_named {
- errored.wrap_error(p, "can't use positional arguments after named");
+ errored.wrap_error(p, "can't use positional arguments after named", true);
}
m.complete(p, ARGS_DESC);
@@ -615,6 +630,7 @@
spec.wrap_error(
p,
"compspec may only be used if there is only one array element",
+ true,
);
}
@@ -639,20 +655,20 @@
p.bump();
// End
if !p.at(T![']']) {
- expr(p).wrap(p, SLICE_DESC_END);
+ expr(p).wrap(p, SLICE_DESC_END, true);
}
if p.at(T![:]) {
p.bump();
// Step
if !p.at(T![']']) {
- expr(p).wrap(p, SLICE_DESC_STEP);
+ expr(p).wrap(p, SLICE_DESC_STEP, true);
}
}
} else if p.at(T![::]) {
p.bump();
// End
if !p.at(T![']']) {
- expr(p).wrap(p, SLICE_DESC_END);
+ expr(p).wrap(p, SLICE_DESC_END, true);
}
} else {
// It was not a slice
@@ -865,10 +881,10 @@
p.bump();
expr(p);
p.expect(T![then]);
- expr(p).wrap(p, TRUE_EXPR);
+ expr(p).wrap(p, TRUE_EXPR, true);
if p.at(T![else]) {
p.bump();
- expr(p).wrap(p, FALSE_EXPR);
+ expr(p).wrap(p, FALSE_EXPR, true);
}
m.complete(p, EXPR_IF_THEN_ELSE)
} else if p.at(T!['[']) {
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_incompatible_with_multiple_elems.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_incompatible_with_multiple_elems.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_incompatible_with_multiple_elems.snap
@@ -49,9 +49,5 @@
===
LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one array element" }, range: 3..21 }
===
- x syntax error
- ,----
- 1 | [a for a in [1, 2, 3], b]
- : ^^^^^^^^^|^^^^^^^^
- : `-- compspec may only be used if there is only one array element
- `----
+ · ╭──────────────────── compspec may only be used if there is only one array element
+1 │ [a for a in [1, 2, 3], b]
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_incompatible_with_multiple_elems_w.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_incompatible_with_multiple_elems_w.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_incompatible_with_multiple_elems_w.snap
@@ -56,9 +56,5 @@
===
LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one array element" }, range: 7..25 }
===
- x syntax error
- ,----
- 1 | [a, b, for a in [1, 2, 3], c]
- : ^^^^^^^^^|^^^^^^^^
- : `-- compspec may only be used if there is only one array element
- `----
+ · ╭──────────────────── compspec may only be used if there is only one array element
+1 │ [a, b, for a in [1, 2, 3], c]
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_no_elems.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_no_elems.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_no_elems.snap
@@ -39,9 +39,5 @@
===
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 1..1 }
===
- x syntax error
- ,----
- 1 | [for a in [1, 2, 3]]
- : ^
- : `-- missing expression
- `----
+ · ╭── missing expression
+1 │ [for a in [1, 2, 3]]
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
@@ -64,14 +64,9 @@
LocatedSyntaxError { error: Unexpected { expected: Unnamed(SyntaxKindSet([L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA, QUESTION_MARK])), found: IDENT }, range: 14..23 }
LocatedSyntaxError { error: Custom { error: "unexpected tokens after end" }, range: 29..67 }
===
- x syntax error
- ,-[1:15]
- 1 | ,-> local intr = $intrinsic(test);
- : | ^^^^|^^^^
- : | `-- expected L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA or QUESTION_MARK, found IDENT
- 2 | |
- 3 | | local a = 1, b = 2, c = a + b;
- 4 | |
- 5 | |-> [c]
- : `---- unexpected tokens after end
- `----
+ · ╭─────────── unexpected IDENT, expecting L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA or QUESTION_MARK
+1 │ ╭─local intr = $intrinsic(test);
+2 │ │
+3 │ │ local a = 1, b = 2, c = a + b;
+4 │ │
+5 │ ╰─[c] 🢒 unexpected tokens after end
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__empty.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__empty.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__empty.snap
@@ -9,9 +9,5 @@
===
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 1..1 }
===
- x syntax error
- ,----
- 1 |
- : ^
- : `-- missing expression
- `----
+ · ╭── missing expression
+1 │
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_body.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_body.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_body.snap
@@ -25,9 +25,5 @@
===
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 15..15 }
===
- x syntax error
- ,----
- 1 | function(a, b)
- : ^
- : `-- missing expression
- `----
+ · ╭── missing expression
+1 │ function(a, b)
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_no_value.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_no_value.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_no_value.snap
@@ -42,9 +42,5 @@
===
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 16..16 }
===
- x syntax error
- ,----
- 1 | function(a, b = ) a + b
- : ^
- : `-- missing expression
- `----
+ · ╭── missing expression
+1 │ function(a, b = ) a + b
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_rparen.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_rparen.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_rparen.snap
@@ -26,10 +26,6 @@
LocatedSyntaxError { error: Missing { expected: Unnamed(SyntaxKindSet([R_PAREN, COMMA, ASSIGN])) }, range: 14..14 }
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 14..14 }
===
- x syntax error
- ,----
- 1 | function(a, b
- : ^^
- : |`-- missing expression
- : `-- missing R_PAREN, COMMA or ASSIGN
- `----
+ · ╭── missing R_PAREN, COMMA or ASSIGN
+1 │ function(a, b
+ · ╰── missing expression
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
@@ -39,11 +39,8 @@
LocatedSyntaxError { error: Missing { expected: Unnamed(SyntaxKindSet([L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA, QUESTION_MARK])) }, range: 25..25 }
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 25..25 }
===
- x syntax error
- ,-[3:3]
- 2 | local b = 3;
- 3 | 1
- : ^^
- : |`-- missing expression
- : `-- missing L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA or QUESTION_MARK
- `----
+1 │ local a =
+2 │ local b = 3;
+ · ╭── missing L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA or QUESTION_MARK
+3 │ 1
+ · ╰── missing expression
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_novalue.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_novalue.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_novalue.snap
@@ -23,11 +23,7 @@
LocatedSyntaxError { error: Missing { expected: Unnamed(SyntaxKindSet([SEMI, COMMA])) }, range: 10..10 }
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 10..10 }
===
- x syntax error
- ,----
- 1 | local a =
- : ^^^
- : `-- missing expression
- : |`-- missing SEMI or COMMA
- : `-- missing expression
- `----
+ · ╭── missing SEMI or COMMA
+ · ┟── missing expression
+1 │ local a =
+ · ╰── missing expression
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__named_before_positional.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__named_before_positional.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__named_before_positional.snap
@@ -68,11 +68,7 @@
LocatedSyntaxError { error: Custom { error: "can't use positional arguments after named" }, range: 16..17 }
LocatedSyntaxError { error: Custom { error: "can't use positional arguments after named" }, range: 27..28 }
===
- x syntax error
- ,----
- 1 | a(1, 2, b=4, 3, 5, k = 12, 6)
- : | | |
- : | | `-- can't use positional arguments after named
- : | `-- can't use positional arguments after named
- : `-- can't use positional arguments after named
- `----
+ · ╭────── can't use positional arguments after named
+ · │ ╭─── can't use positional arguments after named
+1 │ a(1, 2, b=4, 3, 5, k = 12, 6)
+ · ╰─── can't use positional arguments after named
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_lhs.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_lhs.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_lhs.snap
@@ -14,10 +14,6 @@
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 0..0 }
LocatedSyntaxError { error: Custom { error: "unexpected tokens after end" }, range: 0..3 }
===
- x syntax error
- ,----
- 1 | + 2
- : ^^|
- : | `-- unexpected tokens after end
- : `-- missing expression
- `----
+ · ╭── missing expression
+1 │ + 2
+ · ╰───── unexpected tokens after end
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_operator.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_operator.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_operator.snap
@@ -13,9 +13,5 @@
===
LocatedSyntaxError { error: Custom { error: "unexpected tokens after end" }, range: 2..3 }
===
- x syntax error
- ,----
- 1 | 2 2
- : |
- : `-- unexpected tokens after end
- `----
+ · ╭─── unexpected tokens after end
+1 │ 2 2
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_rhs.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_rhs.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_rhs.snap
@@ -16,9 +16,5 @@
===
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 4..4 }
===
- x syntax error
- ,----
- 1 | a +
- : ^
- : `-- missing expression
- `----
+ · ╭── missing expression
+1 │ a +
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_asserts.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_asserts.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_asserts.snap
@@ -56,9 +56,5 @@
===
LocatedSyntaxError { error: Custom { error: "asserts can't be used in object comprehensions" }, range: 1..9 }
===
- x syntax error
- ,----
- 1 | {assert 1, a: 1 for a in [1,2,3]}
- : ^^^^|^^^
- : `-- asserts can't be used in object comprehensions
- `----
+ · ╭────────── asserts can't be used in object comprehensions
+1 │ {assert 1, a: 1 for a in [1,2,3]}
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_multiple_elems.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_multiple_elems.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_multiple_elems.snap
@@ -58,9 +58,5 @@
===
LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one object element" }, range: 5..23 }
===
- x syntax error
- ,----
- 1 | {a:1 for a in [1, 2, 3], b:1}
- : ^^^^^^^^^|^^^^^^^^
- : `-- compspec may only be used if there is only one object element
- `----
+ · ╭──────────────────── compspec may only be used if there is only one object element
+1 │ {a:1 for a in [1, 2, 3], b:1}
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_multiple_elems_w.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_multiple_elems_w.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_multiple_elems_w.snap
@@ -69,9 +69,5 @@
===
LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one object element" }, range: 11..29 }
===
- x syntax error
- ,----
- 1 | {a:1, b:1, for a in [1, 2, 3], c:1}
- : ^^^^^^^^^|^^^^^^^^
- : `-- compspec may only be used if there is only one object element
- `----
+ · ╭──────────────────── compspec may only be used if there is only one object element
+1 │ {a:1, b:1, for a in [1, 2, 3], c:1}
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_no_elems.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_no_elems.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_no_elems.snap
@@ -39,9 +39,5 @@
===
LocatedSyntaxError { error: Missing { expected: Named("field definition") }, range: 1..1 }
===
- x syntax error
- ,----
- 1 | {for a in [1, 2, 3]}
- : ^
- : `-- missing field definition
- `----
+ · ╭── missing field definition
+1 │ {for a in [1, 2, 3]}
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
+++ /dev/null
@@ -1,5686 +0,0 @@
----
-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 lstripChars(str, chars)::\n if std.length(str) > 0 && std.member(chars, str[0]) then\n std.lstripChars(str[1:], chars)\n else\n str,\n\n rstripChars(str, chars)::\n local len = std.length(str);\n if len > 0 && std.member(chars, str[len - 1]) then\n std.rstripChars(str[:len - 1], chars)\n else\n str,\n\n stripChars(str, chars)::\n std.lstripChars(std.rstripChars(str, chars), chars),\n\n splitLimitR(str, c, maxsplits)::\n if maxsplits == -1 then\n std.splitLimit(str, c, -1)\n else\n local revStr(str) = std.join('', std.reverse(std.stringChars(str)));\n std.map(function(e) revStr(e), std.reverse(std.splitLimit(revStr(str), revStr(c), maxsplits))),\n\n split(str, c):: std.splitLimit(str, c, -1),\n\n mapWithIndex(func, arr)::\n if !std.isFunction(func) then\n error ('std.mapWithIndex first param must be function, got ' + std.type(func))\n else if !std.isArray(arr) && !std.isString(arr) then\n error ('std.mapWithIndex second param must be array, got ' + std.type(arr))\n else\n std.makeArray(std.length(arr), function(i) func(i, arr[i])),\n\n mapWithKey(func, obj)::\n if !std.isFunction(func) then\n error ('std.mapWithKey first param must be function, got ' + std.type(func))\n else if !std.isObject(obj) then\n error ('std.mapWithKey second param must be object, got ' + std.type(obj))\n else\n { [k]: func(k, obj[k]) for k in std.objectFields(obj) },\n\n lines(arr)::\n std.join('\\n', arr + ['']),\n\n deepJoin(arr)::\n if std.isString(arr) then\n arr\n else if std.isArray(arr) then\n std.join('', [std.deepJoin(x) for x in arr])\n else\n error 'Expected string or array, got %s' % std.type(arr),\n\n assertEqual(a, b)::\n if a == b then\n true\n else\n error 'Assertion failed. ' + a + ' != ' + b,\n\n clamp(x, minVal, maxVal)::\n if x < minVal then minVal\n else if x > maxVal then maxVal\n else x,\n\n manifestIni(ini)::\n local body_lines(body) =\n std.join([], [\n local value_or_values = body[k];\n if std.isArray(value_or_values) then\n ['%s = %s' % [k, value] for value in value_or_values]\n else\n ['%s = %s' % [k, value_or_values]]\n\n for k in std.objectFields(body)\n ]);\n\n local section_lines(sname, sbody) = ['[%s]' % [sname]] + body_lines(sbody),\n main_body = if std.objectHas(ini, 'main') then body_lines(ini.main) else [],\n all_sections = [\n section_lines(k, ini.sections[k])\n for k in std.objectFields(ini.sections)\n ];\n std.join('\\n', main_body + std.flattenArrays(all_sections) + ['']),\n\n manifestToml(value):: std.manifestTomlEx(value, ' '),\n\n escapeStringPython(str)::\n std.escapeStringJson(str),\n\n escapeStringBash(str_)::\n local str = std.toString(str_);\n local trans(ch) =\n if ch == \"'\" then\n \"'\\\"'\\\"'\"\n else\n ch;\n \"'%s'\" % std.join('', [trans(ch) for ch in std.stringChars(str)]),\n\n escapeStringDollars(str_)::\n local str = std.toString(str_);\n local trans(ch) =\n if ch == '$' then\n '$$'\n else\n ch;\n std.foldl(function(a, b) a + trans(b), std.stringChars(str), ''),\n\n local xml_escapes = {\n '<': '<',\n '>': '>',\n '&': '&',\n '\"': '"',\n \"'\": ''',\n },\n\n escapeStringXML(str_)::\n local str = std.toString(str_);\n std.join('', [std.get(xml_escapes, ch, ch) for ch in std.stringChars(str)]),\n\n manifestJson(value):: std.manifestJsonEx(value, ' ') tailstrict,\n\n manifestJsonMinified(value):: std.manifestJsonEx(value, '', '', ':'),\n\n manifestYamlStream(value, indent_array_in_object=false, c_document_end=true, quote_keys=true)::\n if !std.isArray(value) then\n error 'manifestYamlStream only takes arrays, got ' + std.type(value)\n else\n '---\\n' + std.join(\n '\\n---\\n', [std.manifestYamlDoc(e, indent_array_in_object, quote_keys) for e in value]\n ) + if c_document_end then '\\n...\\n' else '\\n',\n\n manifestPython(v)::\n if std.isObject(v) then\n local fields = [\n '%s: %s' % [std.escapeStringPython(k), std.manifestPython(v[k])]\n for k in std.objectFields(v)\n ];\n '{%s}' % [std.join(', ', fields)]\n else if std.isArray(v) then\n '[%s]' % [std.join(', ', [std.manifestPython(v2) for v2 in v])]\n else if std.isString(v) then\n '%s' % [std.escapeStringPython(v)]\n else if std.isFunction(v) then\n error 'cannot manifest function'\n else if std.isNumber(v) then\n std.toString(v)\n else if v == true then\n 'True'\n else if v == false then\n 'False'\n else if v == null then\n 'None',\n\n manifestPythonVars(conf)::\n local vars = ['%s = %s' % [k, std.manifestPython(conf[k])] for k in std.objectFields(conf)];\n std.join('\\n', vars + ['']),\n\n manifestXmlJsonml(value)::\n if !std.isArray(value) then\n error 'Expected a JSONML value (an array), got %s' % std.type(value)\n else\n local aux(v) =\n if std.isString(v) then\n v\n else\n local tag = v[0];\n local has_attrs = std.length(v) > 1 && std.isObject(v[1]);\n local attrs = if has_attrs then v[1] else {};\n local children = if has_attrs then v[2:] else v[1:];\n local attrs_str =\n std.join('', [' %s=\"%s\"' % [k, attrs[k]] for k in std.objectFields(attrs)]);\n std.deepJoin(['<', tag, attrs_str, '>', [aux(x) for x in children], '</', tag, '>']);\n\n aux(value),\n\n mergePatch(target, patch)::\n if std.isObject(patch) then\n local target_object =\n if std.isObject(target) then target else {};\n\n local target_fields =\n if std.isObject(target_object) then std.objectFields(target_object) else [];\n\n local null_fields = [k for k in std.objectFields(patch) if patch[k] == null];\n local both_fields = std.setUnion(target_fields, std.objectFields(patch));\n\n {\n [k]:\n if !std.objectHas(patch, k) then\n target_object[k]\n else if !std.objectHas(target_object, k) then\n std.mergePatch(null, patch[k]) tailstrict\n else\n std.mergePatch(target_object[k], patch[k]) tailstrict\n for k in std.setDiff(both_fields, null_fields)\n }\n else\n patch,\n\n get(o, f, default=null, inc_hidden=true)::\n if std.objectHasEx(o, f, inc_hidden) then o[f] else default,\n\n resolvePath(f, r)::\n local arr = std.split(f, '/');\n std.join('/', std.makeArray(std.length(arr) - 1, function(i) arr[i]) + [r]),\n\n prune(a)::\n local isContent(b) =\n if b == null then\n false\n else if std.isArray(b) then\n std.length(b) > 0\n else if std.isObject(b) then\n std.length(b) > 0\n else\n true;\n if std.isArray(a) then\n [std.prune(x) for x in a if isContent($.prune(x))]\n else if std.isObject(a) then {\n [x]: $.prune(a[x])\n for x in std.objectFields(a)\n if isContent(std.prune(a[x]))\n } else\n a,\n\n find(value, arr)::\n if !std.isArray(arr) then\n error 'find second parameter should be an array, got ' + std.type(arr)\n else\n std.filter(function(i) arr[i] == value, std.range(0, std.length(arr) - 1)),\n\n // Compat\n __compare_array(arr1, arr2)::\n assert std.isArray(arr1) && std.isArray(arr2);\n std.__compare(arr1, arr2),\n __array_less(arr1, arr2):: std.__compare_array(arr1, arr2) == -1,\n __array_greater(arr1, arr2):: std.__compare_array(arr1, arr2) == 1,\n __array_less_or_equal(arr1, arr2):: std.__compare_array(arr1, arr2) <= 0,\n __array_greater_or_equal(arr1, arr2):: std.__compare_array(arr1, arr2) >= 0,\n}\n"
----
-SOURCE_FILE@0..7835
- EXPR@0..7834
- EXPR_OBJECT@0..7834
- OBJ_BODY_MEMBER_LIST@0..7834
- L_BRACE@0..1 "{"
- WHITESPACE@1..4 "\n "
- MEMBER_BIND_STMT@4..20
- OBJ_LOCAL@4..20
- LOCAL_KW@4..9 "local"
- WHITESPACE@9..10 " "
- BIND_DESTRUCT@10..20
- DESTRUCT_FULL@10..13
- NAME@10..13
- IDENT@10..13 "std"
- WHITESPACE@13..14 " "
- ASSIGN@14..15 "="
- WHITESPACE@15..16 " "
- EXPR@16..20
- EXPR_LITERAL@16..20
- SELF_KW@16..20 "self"
- COMMA@20..21 ","
- WHITESPACE@21..24 "\n "
- MEMBER_BIND_STMT@24..41
- OBJ_LOCAL@24..41
- LOCAL_KW@24..29 "local"
- WHITESPACE@29..30 " "
- BIND_DESTRUCT@30..41
- DESTRUCT_FULL@30..32
- NAME@30..32
- IDENT@30..32 "id"
- WHITESPACE@32..33 " "
- ASSIGN@33..34 "="
- WHITESPACE@34..35 " "
- EXPR@35..41
- EXPR_VAR@35..38
- NAME@35..38
- IDENT@35..38 "std"
- SUFFIX_INDEX@38..41
- DOT@38..39 "."
- NAME@39..41
- IDENT@39..41 "id"
- COMMA@41..42 ","
- WHITESPACE@42..46 "\n\n "
- MEMBER_FIELD_NORMAL@46..224
- FIELD_NAME_FIXED@46..54
- NAME@46..54
- IDENT@46..54 "thisFile"
- COLONCOLON@54..56 "::"
- WHITESPACE@56..57 " "
- EXPR@57..224
- EXPR_ERROR@57..224
- ERROR_KW@57..62 "error"
- WHITESPACE@62..63 " "
- EXPR@63..224
- EXPR_STRING@63..224
- STRING_SINGLE@63..224 "'std.thisFile is depr ..."
- COMMA@224..225 ","
- WHITESPACE@225..229 "\n\n "
- MEMBER_FIELD_METHOD@229..372
- FIELD_NAME_FIXED@229..240
- NAME@229..240
- IDENT@229..240 "lstripChars"
- PARAMS_DESC@240..252
- L_PAREN@240..241 "("
- PARAM@241..244
- DESTRUCT_FULL@241..244
- NAME@241..244
- IDENT@241..244 "str"
- COMMA@244..245 ","
- WHITESPACE@245..246 " "
- PARAM@246..251
- DESTRUCT_FULL@246..251
- NAME@246..251
- IDENT@246..251 "chars"
- R_PAREN@251..252 ")"
- COLONCOLON@252..254 "::"
- WHITESPACE@254..259 "\n "
- EXPR@259..372
- EXPR_IF_THEN_ELSE@259..372
- IF_KW@259..261 "if"
- WHITESPACE@261..262 " "
- EXPR@262..310
- EXPR_BINARY@262..310
- EXPR@262..281
- EXPR_BINARY@262..281
- EXPR@262..265
- EXPR_VAR@262..265
- NAME@262..265
- IDENT@262..265 "std"
- SUFFIX_INDEX@265..272
- DOT@265..266 "."
- NAME@266..272
- IDENT@266..272 "length"
- SUFFIX_APPLY@272..277
- ARGS_DESC@272..277
- L_PAREN@272..273 "("
- ARG@273..276
- EXPR@273..276
- EXPR_VAR@273..276
- NAME@273..276
- IDENT@273..276 "str"
- R_PAREN@276..277 ")"
- WHITESPACE@277..278 " "
- GT@278..279 ">"
- WHITESPACE@279..280 " "
- EXPR@280..281
- EXPR_NUMBER@280..281
- FLOAT@280..281 "0"
- WHITESPACE@281..282 " "
- AND@282..284 "&&"
- WHITESPACE@284..285 " "
- EXPR@285..310
- EXPR_VAR@285..288
- NAME@285..288
- IDENT@285..288 "std"
- SUFFIX_INDEX@288..295
- DOT@288..289 "."
- NAME@289..295
- IDENT@289..295 "member"
- SUFFIX_APPLY@295..310
- ARGS_DESC@295..310
- L_PAREN@295..296 "("
- ARG@296..301
- EXPR@296..301
- EXPR_VAR@296..301
- NAME@296..301
- IDENT@296..301 "chars"
- COMMA@301..302 ","
- WHITESPACE@302..303 " "
- ARG@303..309
- EXPR@303..309
- EXPR_VAR@303..306
- NAME@303..306
- IDENT@303..306 "str"
- SUFFIX_INDEX_EXPR@306..309
- L_BRACK@306..307 "["
- EXPR@307..308
- EXPR_NUMBER@307..308
- FLOAT@307..308 "0"
- R_BRACK@308..309 "]"
- R_PAREN@309..310 ")"
- WHITESPACE@310..311 " "
- THEN_KW@311..315 "then"
- WHITESPACE@315..322 "\n "
- TRUE_EXPR@322..353
- EXPR@322..353
- EXPR_VAR@322..325
- NAME@322..325
- IDENT@322..325 "std"
- SUFFIX_INDEX@325..337
- DOT@325..326 "."
- NAME@326..337
- IDENT@326..337 "lstripChars"
- SUFFIX_APPLY@337..353
- ARGS_DESC@337..353
- L_PAREN@337..338 "("
- ARG@338..345
- EXPR@338..345
- EXPR_VAR@338..341
- NAME@338..341
- IDENT@338..341 "str"
- SUFFIX_SLICE@341..345
- SLICE_DESC@341..345
- L_BRACK@341..342 "["
- EXPR@342..343
- EXPR_NUMBER@342..343
- FLOAT@342..343 "1"
- COLON@343..344 ":"
- R_BRACK@344..345 "]"
- COMMA@345..346 ","
- WHITESPACE@346..347 " "
- ARG@347..352
- EXPR@347..352
- EXPR_VAR@347..352
- NAME@347..352
- IDENT@347..352 "chars"
- R_PAREN@352..353 ")"
- WHITESPACE@353..358 "\n "
- ELSE_KW@358..362 "else"
- WHITESPACE@362..369 "\n "
- FALSE_EXPR@369..372
- EXPR@369..372
- EXPR_VAR@369..372
- NAME@369..372
- IDENT@369..372 "str"
- COMMA@372..373 ","
- WHITESPACE@373..377 "\n\n "
- MEMBER_FIELD_METHOD@377..553
- FIELD_NAME_FIXED@377..388
- NAME@377..388
- IDENT@377..388 "rstripChars"
- PARAMS_DESC@388..400
- L_PAREN@388..389 "("
- PARAM@389..392
- DESTRUCT_FULL@389..392
- NAME@389..392
- IDENT@389..392 "str"
- COMMA@392..393 ","
- WHITESPACE@393..394 " "
- PARAM@394..399
- DESTRUCT_FULL@394..399
- NAME@394..399
- IDENT@394..399 "chars"
- R_PAREN@399..400 ")"
- COLONCOLON@400..402 "::"
- WHITESPACE@402..407 "\n "
- EXPR@407..553
- STMT_LOCAL@407..435
- LOCAL_KW@407..412 "local"
- WHITESPACE@412..413 " "
- BIND_DESTRUCT@413..434
- DESTRUCT_FULL@413..416
- NAME@413..416
- IDENT@413..416 "len"
- WHITESPACE@416..417 " "
- ASSIGN@417..418 "="
- WHITESPACE@418..419 " "
- EXPR@419..434
- EXPR_VAR@419..422
- NAME@419..422
- IDENT@419..422 "std"
- SUFFIX_INDEX@422..429
- DOT@422..423 "."
- NAME@423..429
- IDENT@423..429 "length"
- SUFFIX_APPLY@429..434
- ARGS_DESC@429..434
- L_PAREN@429..430 "("
- ARG@430..433
- EXPR@430..433
- EXPR_VAR@430..433
- NAME@430..433
- IDENT@430..433 "str"
- R_PAREN@433..434 ")"
- SEMI@434..435 ";"
- WHITESPACE@435..440 "\n "
- EXPR_IF_THEN_ELSE@440..553
- IF_KW@440..442 "if"
- WHITESPACE@442..443 " "
- EXPR@443..485
- EXPR_BINARY@443..485
- EXPR@443..450
- EXPR_BINARY@443..450
- EXPR@443..446
- EXPR_VAR@443..446
- NAME@443..446
- IDENT@443..446 "len"
- WHITESPACE@446..447 " "
- GT@447..448 ">"
- WHITESPACE@448..449 " "
- EXPR@449..450
- EXPR_NUMBER@449..450
- FLOAT@449..450 "0"
- WHITESPACE@450..451 " "
- AND@451..453 "&&"
- WHITESPACE@453..454 " "
- EXPR@454..485
- EXPR_VAR@454..457
- NAME@454..457
- IDENT@454..457 "std"
- SUFFIX_INDEX@457..464
- DOT@457..458 "."
- NAME@458..464
- IDENT@458..464 "member"
- SUFFIX_APPLY@464..485
- ARGS_DESC@464..485
- L_PAREN@464..465 "("
- ARG@465..470
- EXPR@465..470
- EXPR_VAR@465..470
- NAME@465..470
- IDENT@465..470 "chars"
- COMMA@470..471 ","
- WHITESPACE@471..472 " "
- ARG@472..484
- EXPR@472..484
- EXPR_VAR@472..475
- NAME@472..475
- IDENT@472..475 "str"
- SUFFIX_INDEX_EXPR@475..484
- L_BRACK@475..476 "["
- EXPR@476..483
- EXPR_BINARY@476..483
- EXPR@476..479
- EXPR_VAR@476..479
- NAME@476..479
- IDENT@476..479 "len"
- WHITESPACE@479..480 " "
- MINUS@480..481 "-"
- WHITESPACE@481..482 " "
- EXPR@482..483
- EXPR_NUMBER@482..483
- FLOAT@482..483 "1"
- R_BRACK@483..484 "]"
- R_PAREN@484..485 ")"
- WHITESPACE@485..486 " "
- THEN_KW@486..490 "then"
- WHITESPACE@490..497 "\n "
- TRUE_EXPR@497..534
- EXPR@497..534
- EXPR_VAR@497..500
- NAME@497..500
- IDENT@497..500 "std"
- SUFFIX_INDEX@500..512
- DOT@500..501 "."
- NAME@501..512
- IDENT@501..512 "rstripChars"
- SUFFIX_APPLY@512..534
- ARGS_DESC@512..534
- L_PAREN@512..513 "("
- ARG@513..526
- EXPR@513..526
- EXPR_VAR@513..516
- NAME@513..516
- IDENT@513..516 "str"
- SUFFIX_SLICE@516..526
- SLICE_DESC@516..526
- L_BRACK@516..517 "["
- COLON@517..518 ":"
- SLICE_DESC_END@518..525
- EXPR@518..525
- EXPR_BINARY@518..525
- EXPR@518..521
- EXPR_VAR@518..521
- NAME@518..521
- IDENT@518..521 "len"
- WHITESPACE@521..522 " "
- MINUS@522..523 "-"
- WHITESPACE@523..524 " "
- EXPR@524..525
- EXPR_NUMBER@524..525
- FLOAT@524..525 "1"
- R_BRACK@525..526 "]"
- COMMA@526..527 ","
- WHITESPACE@527..528 " "
- ARG@528..533
- EXPR@528..533
- EXPR_VAR@528..533
- NAME@528..533
- IDENT@528..533 "chars"
- R_PAREN@533..534 ")"
- WHITESPACE@534..539 "\n "
- ELSE_KW@539..543 "else"
- WHITESPACE@543..550 "\n "
- FALSE_EXPR@550..553
- EXPR@550..553
- EXPR_VAR@550..553
- NAME@550..553
- IDENT@550..553 "str"
- COMMA@553..554 ","
- WHITESPACE@554..558 "\n\n "
- MEMBER_FIELD_METHOD@558..638
- FIELD_NAME_FIXED@558..568
- NAME@558..568
- IDENT@558..568 "stripChars"
- PARAMS_DESC@568..580
- L_PAREN@568..569 "("
- PARAM@569..572
- DESTRUCT_FULL@569..572
- NAME@569..572
- IDENT@569..572 "str"
- COMMA@572..573 ","
- WHITESPACE@573..574 " "
- PARAM@574..579
- DESTRUCT_FULL@574..579
- NAME@574..579
- IDENT@574..579 "chars"
- R_PAREN@579..580 ")"
- COLONCOLON@580..582 "::"
- WHITESPACE@582..587 "\n "
- EXPR@587..638
- EXPR_VAR@587..590
- NAME@587..590
- IDENT@587..590 "std"
- SUFFIX_INDEX@590..602
- DOT@590..591 "."
- NAME@591..602
- IDENT@591..602 "lstripChars"
- SUFFIX_APPLY@602..638
- ARGS_DESC@602..638
- L_PAREN@602..603 "("
- ARG@603..630
- EXPR@603..630
- EXPR_VAR@603..606
- NAME@603..606
- IDENT@603..606 "std"
- SUFFIX_INDEX@606..618
- DOT@606..607 "."
- NAME@607..618
- IDENT@607..618 "rstripChars"
- SUFFIX_APPLY@618..630
- ARGS_DESC@618..630
- L_PAREN@618..619 "("
- ARG@619..622
- EXPR@619..622
- EXPR_VAR@619..622
- NAME@619..622
- IDENT@619..622 "str"
- COMMA@622..623 ","
- WHITESPACE@623..624 " "
- ARG@624..629
- EXPR@624..629
- EXPR_VAR@624..629
- NAME@624..629
- IDENT@624..629 "chars"
- R_PAREN@629..630 ")"
- COMMA@630..631 ","
- WHITESPACE@631..632 " "
- ARG@632..637
- EXPR@632..637
- EXPR_VAR@632..637
- NAME@632..637
- IDENT@632..637 "chars"
- R_PAREN@637..638 ")"
- COMMA@638..639 ","
- WHITESPACE@639..643 "\n\n "
- MEMBER_FIELD_METHOD@643..921
- FIELD_NAME_FIXED@643..654
- NAME@643..654
- IDENT@643..654 "splitLimitR"
- PARAMS_DESC@654..673
- L_PAREN@654..655 "("
- PARAM@655..658
- DESTRUCT_FULL@655..658
- NAME@655..658
- IDENT@655..658 "str"
- COMMA@658..659 ","
- WHITESPACE@659..660 " "
- PARAM@660..661
- DESTRUCT_FULL@660..661
- NAME@660..661
- IDENT@660..661 "c"
- COMMA@661..662 ","
- WHITESPACE@662..663 " "
- PARAM@663..672
- DESTRUCT_FULL@663..672
- NAME@663..672
- IDENT@663..672 "maxsplits"
- R_PAREN@672..673 ")"
- COLONCOLON@673..675 "::"
- WHITESPACE@675..680 "\n "
- EXPR@680..921
- EXPR_IF_THEN_ELSE@680..921
- IF_KW@680..682 "if"
- WHITESPACE@682..683 " "
- EXPR@683..698
- EXPR_BINARY@683..698
- EXPR@683..692
- EXPR_VAR@683..692
- NAME@683..692
- IDENT@683..692 "maxsplits"
- WHITESPACE@692..693 " "
- EQ@693..695 "=="
- WHITESPACE@695..696 " "
- EXPR@696..698
- EXPR_UNARY@696..698
- MINUS@696..697 "-"
- EXPR_NUMBER@697..698
- FLOAT@697..698 "1"
- WHITESPACE@698..699 " "
- THEN_KW@699..703 "then"
- WHITESPACE@703..710 "\n "
- TRUE_EXPR@710..736
- EXPR@710..736
- EXPR_VAR@710..713
- NAME@710..713
- IDENT@710..713 "std"
- SUFFIX_INDEX@713..724
- DOT@713..714 "."
- NAME@714..724
- IDENT@714..724 "splitLimit"
- SUFFIX_APPLY@724..736
- ARGS_DESC@724..736
- L_PAREN@724..725 "("
- ARG@725..728
- EXPR@725..728
- EXPR_VAR@725..728
- NAME@725..728
- IDENT@725..728 "str"
- COMMA@728..729 ","
- WHITESPACE@729..730 " "
- ARG@730..731
- EXPR@730..731
- EXPR_VAR@730..731
- NAME@730..731
- IDENT@730..731 "c"
- COMMA@731..732 ","
- WHITESPACE@732..733 " "
- ARG@733..735
- EXPR@733..735
- EXPR_UNARY@733..735
- MINUS@733..734 "-"
- EXPR_NUMBER@734..735
- FLOAT@734..735 "1"
- R_PAREN@735..736 ")"
- WHITESPACE@736..741 "\n "
- ELSE_KW@741..745 "else"
- WHITESPACE@745..752 "\n "
- FALSE_EXPR@752..921
- EXPR@752..921
- STMT_LOCAL@752..820
- LOCAL_KW@752..757 "local"
- WHITESPACE@757..758 " "
- BIND_FUNCTION@758..819
- NAME@758..764
- IDENT@758..764 "revStr"
- PARAMS_DESC@764..769
- L_PAREN@764..765 "("
- PARAM@765..768
- DESTRUCT_FULL@765..768
- NAME@765..768
- IDENT@765..768 "str"
- R_PAREN@768..769 ")"
- WHITESPACE@769..770 " "
- ASSIGN@770..771 "="
- WHITESPACE@771..772 " "
- EXPR@772..819
- EXPR_VAR@772..775
- NAME@772..775
- IDENT@772..775 "std"
- SUFFIX_INDEX@775..780
- DOT@775..776 "."
- NAME@776..780
- IDENT@776..780 "join"
- SUFFIX_APPLY@780..819
- ARGS_DESC@780..819
- L_PAREN@780..781 "("
- ARG@781..783
- EXPR@781..783
- EXPR_STRING@781..783
- STRING_SINGLE@781..783 "''"
- COMMA@783..784 ","
- WHITESPACE@784..785 " "
- ARG@785..818
- EXPR@785..818
- EXPR_VAR@785..788
- NAME@785..788
- IDENT@785..788 "std"
- SUFFIX_INDEX@788..796
- DOT@788..789 "."
- NAME@789..796
- IDENT@789..796 "reverse"
- SUFFIX_APPLY@796..818
- ARGS_DESC@796..818
- L_PAREN@796..797 "("
- ARG@797..817
- EXPR@797..817
- EXPR_VAR@797..800
- NAME@797..800
- IDENT@797..800 "std"
- SUFFIX_INDEX@800..812
- DOT@800..801 "."
- NAME@801..812
- IDENT@801..812 "stringChars"
- SUFFIX_APPLY@812..817
- ARGS_DESC@812..817
- L_PAREN@812..813 "("
- ARG@813..816
- EXPR@813..816
- EXPR_VAR@813..816
- NAME@813..816
- IDENT@813..816 "str"
- R_PAREN@816..817 ")"
- R_PAREN@817..818 ")"
- R_PAREN@818..819 ")"
- SEMI@819..820 ";"
- WHITESPACE@820..827 "\n "
- EXPR_VAR@827..830
- NAME@827..830
- IDENT@827..830 "std"
- SUFFIX_INDEX@830..834
- DOT@830..831 "."
- NAME@831..834
- IDENT@831..834 "map"
- SUFFIX_APPLY@834..921
- ARGS_DESC@834..921
- L_PAREN@834..835 "("
- ARG@835..856
- EXPR@835..856
- EXPR_FUNCTION@835..856
- FUNCTION_KW@835..843 "function"
- PARAMS_DESC@843..846
- L_PAREN@843..844 "("
- PARAM@844..845
- DESTRUCT_FULL@844..845
- NAME@844..845
- IDENT@844..845 "e"
- R_PAREN@845..846 ")"
- WHITESPACE@846..847 " "
- EXPR@847..856
- EXPR_VAR@847..853
- NAME@847..853
- IDENT@847..853 "revStr"
- SUFFIX_APPLY@853..856
- ARGS_DESC@853..856
- L_PAREN@853..854 "("
- ARG@854..855
- EXPR@854..855
- EXPR_VAR@854..855
- NAME@854..855
- IDENT@854..855 "e"
- R_PAREN@855..856 ")"
- COMMA@856..857 ","
- WHITESPACE@857..858 " "
- ARG@858..920
- EXPR@858..920
- EXPR_VAR@858..861
- NAME@858..861
- IDENT@858..861 "std"
- SUFFIX_INDEX@861..869
- DOT@861..862 "."
- NAME@862..869
- IDENT@862..869 "reverse"
- SUFFIX_APPLY@869..920
- ARGS_DESC@869..920
- L_PAREN@869..870 "("
- ARG@870..919
- EXPR@870..919
- EXPR_VAR@870..873
- NAME@870..873
- IDENT@870..873 "std"
- SUFFIX_INDEX@873..884
- DOT@873..874 "."
- NAME@874..884
- IDENT@874..884 "splitLimit"
- SUFFIX_APPLY@884..919
- ARGS_DESC@884..919
- L_PAREN@884..885 "("
- ARG@885..896
- EXPR@885..896
- EXPR_VAR@885..891
- NAME@885..891
- IDENT@885..891 "revStr"
- SUFFIX_APPLY@891..896
- ARGS_DESC@891..896
- L_PAREN@891..892 "("
- ARG@892..895
- EXPR@892..895
- EXPR_VAR@892..895
- NAME@892..895
- IDENT@892..895 "str"
- R_PAREN@895..896 ")"
- COMMA@896..897 ","
- WHITESPACE@897..898 " "
- ARG@898..907
- EXPR@898..907
- EXPR_VAR@898..904
- NAME@898..904
- IDENT@898..904 "revStr"
- SUFFIX_APPLY@904..907
- ARGS_DESC@904..907
- L_PAREN@904..905 "("
- ARG@905..906
- EXPR@905..906
- EXPR_VAR@905..906
- NAME@905..906
- IDENT@905..906 "c"
- R_PAREN@906..907 ")"
- COMMA@907..908 ","
- WHITESPACE@908..909 " "
- ARG@909..918
- EXPR@909..918
- EXPR_VAR@909..918
- NAME@909..918
- IDENT@909..918 "maxsplits"
- R_PAREN@918..919 ")"
- R_PAREN@919..920 ")"
- R_PAREN@920..921 ")"
- COMMA@921..922 ","
- WHITESPACE@922..926 "\n\n "
- MEMBER_FIELD_METHOD@926..968
- FIELD_NAME_FIXED@926..931
- NAME@926..931
- IDENT@926..931 "split"
- PARAMS_DESC@931..939
- L_PAREN@931..932 "("
- PARAM@932..935
- DESTRUCT_FULL@932..935
- NAME@932..935
- IDENT@932..935 "str"
- COMMA@935..936 ","
- WHITESPACE@936..937 " "
- PARAM@937..938
- DESTRUCT_FULL@937..938
- NAME@937..938
- IDENT@937..938 "c"
- R_PAREN@938..939 ")"
- COLONCOLON@939..941 "::"
- WHITESPACE@941..942 " "
- EXPR@942..968
- EXPR_VAR@942..945
- NAME@942..945
- IDENT@942..945 "std"
- SUFFIX_INDEX@945..956
- DOT@945..946 "."
- NAME@946..956
- IDENT@946..956 "splitLimit"
- SUFFIX_APPLY@956..968
- ARGS_DESC@956..968
- L_PAREN@956..957 "("
- ARG@957..960
- EXPR@957..960
- EXPR_VAR@957..960
- NAME@957..960
- IDENT@957..960 "str"
- COMMA@960..961 ","
- WHITESPACE@961..962 " "
- ARG@962..963
- EXPR@962..963
- EXPR_VAR@962..963
- NAME@962..963
- IDENT@962..963 "c"
- COMMA@963..964 ","
- WHITESPACE@964..965 " "
- ARG@965..967
- EXPR@965..967
- EXPR_UNARY@965..967
- MINUS@965..966 "-"
- EXPR_NUMBER@966..967
- FLOAT@966..967 "1"
- R_PAREN@967..968 ")"
- COMMA@968..969 ","
- WHITESPACE@969..973 "\n\n "
- MEMBER_FIELD_METHOD@973..1331
- FIELD_NAME_FIXED@973..985
- NAME@973..985
- IDENT@973..985 "mapWithIndex"
- PARAMS_DESC@985..996
- L_PAREN@985..986 "("
- PARAM@986..990
- DESTRUCT_FULL@986..990
- NAME@986..990
- IDENT@986..990 "func"
- COMMA@990..991 ","
- WHITESPACE@991..992 " "
- PARAM@992..995
- DESTRUCT_FULL@992..995
- NAME@992..995
- IDENT@992..995 "arr"
- R_PAREN@995..996 ")"
- COLONCOLON@996..998 "::"
- WHITESPACE@998..1003 "\n "
- EXPR@1003..1331
- EXPR_IF_THEN_ELSE@1003..1331
- IF_KW@1003..1005 "if"
- WHITESPACE@1005..1006 " "
- EXPR@1006..1027
- EXPR_UNARY@1006..1027
- NOT@1006..1007 "!"
- EXPR_VAR@1007..1010
- NAME@1007..1010
- IDENT@1007..1010 "std"
- SUFFIX_INDEX@1010..1021
- DOT@1010..1011 "."
- NAME@1011..1021
- IDENT@1011..1021 "isFunction"
- SUFFIX_APPLY@1021..1027
- ARGS_DESC@1021..1027
- L_PAREN@1021..1022 "("
- ARG@1022..1026
- EXPR@1022..1026
- EXPR_VAR@1022..1026
- NAME@1022..1026
- IDENT@1022..1026 "func"
- R_PAREN@1026..1027 ")"
- WHITESPACE@1027..1028 " "
- THEN_KW@1028..1032 "then"
- WHITESPACE@1032..1039 "\n "
- TRUE_EXPR@1039..1117
- EXPR@1039..1117
- EXPR_ERROR@1039..1117
- ERROR_KW@1039..1044 "error"
- WHITESPACE@1044..1045 " "
- EXPR@1045..1117
- EXPR_PARENED@1045..1117
- L_PAREN@1045..1046 "("
- EXPR@1046..1116
- EXPR_BINARY@1046..1116
- EXPR@1046..1099
- EXPR_STRING@1046..1099
- STRING_SINGLE@1046..1099 "'std.mapWithIndex fir ..."
- WHITESPACE@1099..1100 " "
- PLUS@1100..1101 "+"
- WHITESPACE@1101..1102 " "
- EXPR@1102..1116
- EXPR_VAR@1102..1105
- NAME@1102..1105
- IDENT@1102..1105 "std"
- SUFFIX_INDEX@1105..1110
- DOT@1105..1106 "."
- NAME@1106..1110
- IDENT@1106..1110 "type"
- SUFFIX_APPLY@1110..1116
- ARGS_DESC@1110..1116
- L_PAREN@1110..1111 "("
- ARG@1111..1115
- EXPR@1111..1115
- EXPR_VAR@1111..1115
- NAME@1111..1115
- IDENT@1111..1115 "func"
- R_PAREN@1115..1116 ")"
- R_PAREN@1116..1117 ")"
- WHITESPACE@1117..1122 "\n "
- ELSE_KW@1122..1126 "else"
- WHITESPACE@1126..1127 " "
- FALSE_EXPR@1127..1331
- EXPR@1127..1331
- EXPR_IF_THEN_ELSE@1127..1331
- IF_KW@1127..1129 "if"
- WHITESPACE@1129..1130 " "
- EXPR@1130..1169
- EXPR_BINARY@1130..1169
- EXPR@1130..1147
- EXPR_UNARY@1130..1147
- NOT@1130..1131 "!"
- EXPR_VAR@1131..1134
- NAME@1131..1134
- IDENT@1131..1134 "std"
- SUFFIX_INDEX@1134..1142
- DOT@1134..1135 "."
- NAME@1135..1142
- IDENT@1135..1142 "isArray"
- SUFFIX_APPLY@1142..1147
- ARGS_DESC@1142..1147
- L_PAREN@1142..1143 "("
- ARG@1143..1146
- EXPR@1143..1146
- EXPR_VAR@1143..1146
- NAME@1143..1146
- IDENT@1143..1146 "arr"
- R_PAREN@1146..1147 ")"
- WHITESPACE@1147..1148 " "
- AND@1148..1150 "&&"
- WHITESPACE@1150..1151 " "
- EXPR@1151..1169
- EXPR_UNARY@1151..1169
- NOT@1151..1152 "!"
- EXPR_VAR@1152..1155
- NAME@1152..1155
- IDENT@1152..1155 "std"
- SUFFIX_INDEX@1155..1164
- DOT@1155..1156 "."
- NAME@1156..1164
- IDENT@1156..1164 "isString"
- SUFFIX_APPLY@1164..1169
- ARGS_DESC@1164..1169
- L_PAREN@1164..1165 "("
- ARG@1165..1168
- EXPR@1165..1168
- EXPR_VAR@1165..1168
- NAME@1165..1168
- IDENT@1165..1168 "arr"
- R_PAREN@1168..1169 ")"
- WHITESPACE@1169..1170 " "
- THEN_KW@1170..1174 "then"
- WHITESPACE@1174..1181 "\n "
- TRUE_EXPR@1181..1256
- EXPR@1181..1256
- EXPR_ERROR@1181..1256
- ERROR_KW@1181..1186 "error"
- WHITESPACE@1186..1187 " "
- EXPR@1187..1256
- EXPR_PARENED@1187..1256
- L_PAREN@1187..1188 "("
- EXPR@1188..1255
- EXPR_BINARY@1188..1255
- EXPR@1188..1239
- EXPR_STRING@1188..1239
- STRING_SINGLE@1188..1239 "'std.mapWithIndex sec ..."
- WHITESPACE@1239..1240 " "
- PLUS@1240..1241 "+"
- WHITESPACE@1241..1242 " "
- EXPR@1242..1255
- EXPR_VAR@1242..1245
- NAME@1242..1245
- IDENT@1242..1245 "std"
- SUFFIX_INDEX@1245..1250
- DOT@1245..1246 "."
- NAME@1246..1250
- IDENT@1246..1250 "type"
- SUFFIX_APPLY@1250..1255
- ARGS_DESC@1250..1255
- L_PAREN@1250..1251 "("
- ARG@1251..1254
- EXPR@1251..1254
- EXPR_VAR@1251..1254
- NAME@1251..1254
- IDENT@1251..1254 "arr"
- R_PAREN@1254..1255 ")"
- R_PAREN@1255..1256 ")"
- WHITESPACE@1256..1261 "\n "
- ELSE_KW@1261..1265 "else"
- WHITESPACE@1265..1272 "\n "
- FALSE_EXPR@1272..1331
- EXPR@1272..1331
- EXPR_VAR@1272..1275
- NAME@1272..1275
- IDENT@1272..1275 "std"
- SUFFIX_INDEX@1275..1285
- DOT@1275..1276 "."
- NAME@1276..1285
- IDENT@1276..1285 "makeArray"
- SUFFIX_APPLY@1285..1331
- ARGS_DESC@1285..1331
- L_PAREN@1285..1286 "("
- ARG@1286..1301
- EXPR@1286..1301
- EXPR_VAR@1286..1289
- NAME@1286..1289
- IDENT@1286..1289 "std"
- SUFFIX_INDEX@1289..1296
- DOT@1289..1290 "."
- NAME@1290..1296
- IDENT@1290..1296 "length"
- SUFFIX_APPLY@1296..1301
- ARGS_DESC@1296..1301
- L_PAREN@1296..1297 "("
- ARG@1297..1300
- EXPR@1297..1300
- EXPR_VAR@1297..1300
- NAME@1297..1300
- IDENT@1297..1300 "arr"
- R_PAREN@1300..1301 ")"
- COMMA@1301..1302 ","
- WHITESPACE@1302..1303 " "
- ARG@1303..1330
- EXPR@1303..1330
- EXPR_FUNCTION@1303..1330
- FUNCTION_KW@1303..1311 "function"
- PARAMS_DESC@1311..1314
- L_PAREN@1311..1312 "("
- PARAM@1312..1313
- DESTRUCT_FULL@1312..1313
- NAME@1312..1313
- IDENT@1312..1313 "i"
- R_PAREN@1313..1314 ")"
- WHITESPACE@1314..1315 " "
- EXPR@1315..1330
- EXPR_VAR@1315..1319
- NAME@1315..1319
- IDENT@1315..1319 "func"
- SUFFIX_APPLY@1319..1330
- ARGS_DESC@1319..1330
- L_PAREN@1319..1320 "("
- ARG@1320..1321
- EXPR@1320..1321
- EXPR_VAR@1320..1321
- NAME@1320..1321
- IDENT@1320..1321 "i"
- COMMA@1321..1322 ","
- WHITESPACE@1322..1323 " "
- ARG@1323..1329
- EXPR@1323..1329
- EXPR_VAR@1323..1326
- NAME@1323..1326
- IDENT@1323..1326 "arr"
- SUFFIX_INDEX_EXPR@1326..1329
- L_BRACK@1326..1327 "["
- EXPR@1327..1328
- EXPR_VAR@1327..1328
- NAME@1327..1328
- IDENT@1327..1328 "i"
- R_BRACK@1328..1329 "]"
- R_PAREN@1329..1330 ")"
- R_PAREN@1330..1331 ")"
- COMMA@1331..1332 ","
- WHITESPACE@1332..1336 "\n\n "
- MEMBER_FIELD_METHOD@1336..1664
- FIELD_NAME_FIXED@1336..1346
- NAME@1336..1346
- IDENT@1336..1346 "mapWithKey"
- PARAMS_DESC@1346..1357
- L_PAREN@1346..1347 "("
- PARAM@1347..1351
- DESTRUCT_FULL@1347..1351
- NAME@1347..1351
- IDENT@1347..1351 "func"
- COMMA@1351..1352 ","
- WHITESPACE@1352..1353 " "
- PARAM@1353..1356
- DESTRUCT_FULL@1353..1356
- NAME@1353..1356
- IDENT@1353..1356 "obj"
- R_PAREN@1356..1357 ")"
- COLONCOLON@1357..1359 "::"
- WHITESPACE@1359..1364 "\n "
- EXPR@1364..1664
- EXPR_IF_THEN_ELSE@1364..1664
- IF_KW@1364..1366 "if"
- WHITESPACE@1366..1367 " "
- EXPR@1367..1388
- EXPR_UNARY@1367..1388
- NOT@1367..1368 "!"
- EXPR_VAR@1368..1371
- NAME@1368..1371
- IDENT@1368..1371 "std"
- SUFFIX_INDEX@1371..1382
- DOT@1371..1372 "."
- NAME@1372..1382
- IDENT@1372..1382 "isFunction"
- SUFFIX_APPLY@1382..1388
- ARGS_DESC@1382..1388
- L_PAREN@1382..1383 "("
- ARG@1383..1387
- EXPR@1383..1387
- EXPR_VAR@1383..1387
- NAME@1383..1387
- IDENT@1383..1387 "func"
- R_PAREN@1387..1388 ")"
- WHITESPACE@1388..1389 " "
- THEN_KW@1389..1393 "then"
- WHITESPACE@1393..1400 "\n "
- TRUE_EXPR@1400..1476
- EXPR@1400..1476
- EXPR_ERROR@1400..1476
- ERROR_KW@1400..1405 "error"
- WHITESPACE@1405..1406 " "
- EXPR@1406..1476
- EXPR_PARENED@1406..1476
- L_PAREN@1406..1407 "("
- EXPR@1407..1475
- EXPR_BINARY@1407..1475
- EXPR@1407..1458
- EXPR_STRING@1407..1458
- STRING_SINGLE@1407..1458 "'std.mapWithKey first ..."
- WHITESPACE@1458..1459 " "
- PLUS@1459..1460 "+"
- WHITESPACE@1460..1461 " "
- EXPR@1461..1475
- EXPR_VAR@1461..1464
- NAME@1461..1464
- IDENT@1461..1464 "std"
- SUFFIX_INDEX@1464..1469
- DOT@1464..1465 "."
- NAME@1465..1469
- IDENT@1465..1469 "type"
- SUFFIX_APPLY@1469..1475
- ARGS_DESC@1469..1475
- L_PAREN@1469..1470 "("
- ARG@1470..1474
- EXPR@1470..1474
- EXPR_VAR@1470..1474
- NAME@1470..1474
- IDENT@1470..1474 "func"
- R_PAREN@1474..1475 ")"
- R_PAREN@1475..1476 ")"
- WHITESPACE@1476..1481 "\n "
- ELSE_KW@1481..1485 "else"
- WHITESPACE@1485..1486 " "
- FALSE_EXPR@1486..1664
- EXPR@1486..1664
- EXPR_IF_THEN_ELSE@1486..1664
- IF_KW@1486..1488 "if"
- WHITESPACE@1488..1489 " "
- EXPR@1489..1507
- EXPR_UNARY@1489..1507
- NOT@1489..1490 "!"
- EXPR_VAR@1490..1493
- NAME@1490..1493
- IDENT@1490..1493 "std"
- SUFFIX_INDEX@1493..1502
- DOT@1493..1494 "."
- NAME@1494..1502
- IDENT@1494..1502 "isObject"
- SUFFIX_APPLY@1502..1507
- ARGS_DESC@1502..1507
- L_PAREN@1502..1503 "("
- ARG@1503..1506
- EXPR@1503..1506
- EXPR_VAR@1503..1506
- NAME@1503..1506
- IDENT@1503..1506 "obj"
- R_PAREN@1506..1507 ")"
- WHITESPACE@1507..1508 " "
- THEN_KW@1508..1512 "then"
- WHITESPACE@1512..1519 "\n "
- TRUE_EXPR@1519..1593
- EXPR@1519..1593
- EXPR_ERROR@1519..1593
- ERROR_KW@1519..1524 "error"
- WHITESPACE@1524..1525 " "
- EXPR@1525..1593
- EXPR_PARENED@1525..1593
- L_PAREN@1525..1526 "("
- EXPR@1526..1592
- EXPR_BINARY@1526..1592
- EXPR@1526..1576
- EXPR_STRING@1526..1576
- STRING_SINGLE@1526..1576 "'std.mapWithKey secon ..."
- WHITESPACE@1576..1577 " "
- PLUS@1577..1578 "+"
- WHITESPACE@1578..1579 " "
- EXPR@1579..1592
- EXPR_VAR@1579..1582
- NAME@1579..1582
- IDENT@1579..1582 "std"
- SUFFIX_INDEX@1582..1587
- DOT@1582..1583 "."
- NAME@1583..1587
- IDENT@1583..1587 "type"
- SUFFIX_APPLY@1587..1592
- ARGS_DESC@1587..1592
- L_PAREN@1587..1588 "("
- ARG@1588..1591
- EXPR@1588..1591
- EXPR_VAR@1588..1591
- NAME@1588..1591
- IDENT@1588..1591 "obj"
- R_PAREN@1591..1592 ")"
- R_PAREN@1592..1593 ")"
- WHITESPACE@1593..1598 "\n "
- ELSE_KW@1598..1602 "else"
- WHITESPACE@1602..1609 "\n "
- FALSE_EXPR@1609..1664
- EXPR@1609..1664
- EXPR_OBJECT@1609..1664
- OBJ_BODY_COMP@1609..1664
- L_BRACE@1609..1610 "{"
- WHITESPACE@1610..1611 " "
- MEMBER_FIELD_NORMAL@1611..1631
- FIELD_NAME_DYNAMIC@1611..1614
- L_BRACK@1611..1612 "["
- EXPR@1612..1613
- EXPR_VAR@1612..1613
- NAME@1612..1613
- IDENT@1612..1613 "k"
- R_BRACK@1613..1614 "]"
- COLON@1614..1615 ":"
- WHITESPACE@1615..1616 " "
- EXPR@1616..1631
- EXPR_VAR@1616..1620
- NAME@1616..1620
- IDENT@1616..1620 "func"
- SUFFIX_APPLY@1620..1631
- ARGS_DESC@1620..1631
- L_PAREN@1620..1621 "("
- ARG@1621..1622
- EXPR@1621..1622
- EXPR_VAR@1621..1622
- NAME@1621..1622
- IDENT@1621..1622 "k"
- COMMA@1622..1623 ","
- WHITESPACE@1623..1624 " "
- ARG@1624..1630
- EXPR@1624..1630
- EXPR_VAR@1624..1627
- NAME@1624..1627
- IDENT@1624..1627 "obj"
- SUFFIX_INDEX_EXPR@1627..1630
- L_BRACK@1627..1628 "["
- EXPR@1628..1629
- EXPR_VAR@1628..1629
- NAME@1628..1629
- IDENT@1628..1629 "k"
- R_BRACK@1629..1630 "]"
- R_PAREN@1630..1631 ")"
- WHITESPACE@1631..1632 " "
- FOR_SPEC@1632..1662
- FOR_KW@1632..1635 "for"
- WHITESPACE@1635..1636 " "
- DESTRUCT_FULL@1636..1637
- NAME@1636..1637
- IDENT@1636..1637 "k"
- WHITESPACE@1637..1638 " "
- IN_KW@1638..1640 "in"
- WHITESPACE@1640..1641 " "
- EXPR@1641..1662
- EXPR_VAR@1641..1644
- NAME@1641..1644
- IDENT@1641..1644 "std"
- SUFFIX_INDEX@1644..1657
- DOT@1644..1645 "."
- NAME@1645..1657
- IDENT@1645..1657 "objectFields"
- SUFFIX_APPLY@1657..1662
- ARGS_DESC@1657..1662
- L_PAREN@1657..1658 "("
- ARG@1658..1661
- EXPR@1658..1661
- EXPR_VAR@1658..1661
- NAME@1658..1661
- IDENT@1658..1661 "obj"
- R_PAREN@1661..1662 ")"
- WHITESPACE@1662..1663 " "
- R_BRACE@1663..1664 "}"
- COMMA@1664..1665 ","
- WHITESPACE@1665..1669 "\n\n "
- MEMBER_FIELD_METHOD@1669..1712
- FIELD_NAME_FIXED@1669..1674
- NAME@1669..1674
- IDENT@1669..1674 "lines"
- PARAMS_DESC@1674..1679
- L_PAREN@1674..1675 "("
- PARAM@1675..1678
- DESTRUCT_FULL@1675..1678
- NAME@1675..1678
- IDENT@1675..1678 "arr"
- R_PAREN@1678..1679 ")"
- COLONCOLON@1679..1681 "::"
- WHITESPACE@1681..1686 "\n "
- EXPR@1686..1712
- EXPR_VAR@1686..1689
- NAME@1686..1689
- IDENT@1686..1689 "std"
- SUFFIX_INDEX@1689..1694
- DOT@1689..1690 "."
- NAME@1690..1694
- IDENT@1690..1694 "join"
- SUFFIX_APPLY@1694..1712
- ARGS_DESC@1694..1712
- L_PAREN@1694..1695 "("
- ARG@1695..1699
- EXPR@1695..1699
- EXPR_STRING@1695..1699
- STRING_SINGLE@1695..1699 "'\\n'"
- COMMA@1699..1700 ","
- WHITESPACE@1700..1701 " "
- ARG@1701..1711
- EXPR@1701..1711
- EXPR_BINARY@1701..1711
- EXPR@1701..1704
- EXPR_VAR@1701..1704
- NAME@1701..1704
- IDENT@1701..1704 "arr"
- WHITESPACE@1704..1705 " "
- PLUS@1705..1706 "+"
- WHITESPACE@1706..1707 " "
- EXPR@1707..1711
- EXPR_ARRAY@1707..1711
- L_BRACK@1707..1708 "["
- EXPR@1708..1710
- EXPR_STRING@1708..1710
- STRING_SINGLE@1708..1710 "''"
- R_BRACK@1710..1711 "]"
- R_PAREN@1711..1712 ")"
- COMMA@1712..1713 ","
- WHITESPACE@1713..1717 "\n\n "
- MEMBER_FIELD_METHOD@1717..1929
- FIELD_NAME_FIXED@1717..1725
- NAME@1717..1725
- IDENT@1717..1725 "deepJoin"
- PARAMS_DESC@1725..1730
- L_PAREN@1725..1726 "("
- PARAM@1726..1729
- DESTRUCT_FULL@1726..1729
- NAME@1726..1729
- IDENT@1726..1729 "arr"
- R_PAREN@1729..1730 ")"
- COLONCOLON@1730..1732 "::"
- WHITESPACE@1732..1737 "\n "
- EXPR@1737..1929
- EXPR_IF_THEN_ELSE@1737..1929
- IF_KW@1737..1739 "if"
- WHITESPACE@1739..1740 " "
- EXPR@1740..1757
- EXPR_VAR@1740..1743
- NAME@1740..1743
- IDENT@1740..1743 "std"
- SUFFIX_INDEX@1743..1752
- DOT@1743..1744 "."
- NAME@1744..1752
- IDENT@1744..1752 "isString"
- SUFFIX_APPLY@1752..1757
- ARGS_DESC@1752..1757
- L_PAREN@1752..1753 "("
- ARG@1753..1756
- EXPR@1753..1756
- EXPR_VAR@1753..1756
- NAME@1753..1756
- IDENT@1753..1756 "arr"
- R_PAREN@1756..1757 ")"
- WHITESPACE@1757..1758 " "
- THEN_KW@1758..1762 "then"
- WHITESPACE@1762..1769 "\n "
- TRUE_EXPR@1769..1772
- EXPR@1769..1772
- EXPR_VAR@1769..1772
- NAME@1769..1772
- IDENT@1769..1772 "arr"
- WHITESPACE@1772..1777 "\n "
- ELSE_KW@1777..1781 "else"
- WHITESPACE@1781..1782 " "
- FALSE_EXPR@1782..1929
- EXPR@1782..1929
- EXPR_IF_THEN_ELSE@1782..1929
- IF_KW@1782..1784 "if"
- WHITESPACE@1784..1785 " "
- EXPR@1785..1801
- EXPR_VAR@1785..1788
- NAME@1785..1788
- IDENT@1785..1788 "std"
- SUFFIX_INDEX@1788..1796
- DOT@1788..1789 "."
- NAME@1789..1796
- IDENT@1789..1796 "isArray"
- SUFFIX_APPLY@1796..1801
- ARGS_DESC@1796..1801
- L_PAREN@1796..1797 "("
- ARG@1797..1800
- EXPR@1797..1800
- EXPR_VAR@1797..1800
- NAME@1797..1800
- IDENT@1797..1800 "arr"
- R_PAREN@1800..1801 ")"
- WHITESPACE@1801..1802 " "
- THEN_KW@1802..1806 "then"
- WHITESPACE@1806..1813 "\n "
- TRUE_EXPR@1813..1857
- EXPR@1813..1857
- EXPR_VAR@1813..1816
- NAME@1813..1816
- IDENT@1813..1816 "std"
- SUFFIX_INDEX@1816..1821
- DOT@1816..1817 "."
- NAME@1817..1821
- IDENT@1817..1821 "join"
- SUFFIX_APPLY@1821..1857
- ARGS_DESC@1821..1857
- L_PAREN@1821..1822 "("
- ARG@1822..1824
- EXPR@1822..1824
- EXPR_STRING@1822..1824
- STRING_SINGLE@1822..1824 "''"
- COMMA@1824..1825 ","
- WHITESPACE@1825..1826 " "
- ARG@1826..1856
- EXPR@1826..1856
- EXPR_ARRAY_COMP@1826..1856
- L_BRACK@1826..1827 "["
- EXPR@1827..1842
- EXPR_VAR@1827..1830
- NAME@1827..1830
- IDENT@1827..1830 "std"
- SUFFIX_INDEX@1830..1839
- DOT@1830..1831 "."
- NAME@1831..1839
- IDENT@1831..1839 "deepJoin"
- SUFFIX_APPLY@1839..1842
- ARGS_DESC@1839..1842
- L_PAREN@1839..1840 "("
- ARG@1840..1841
- EXPR@1840..1841
- EXPR_VAR@1840..1841
- NAME@1840..1841
- IDENT@1840..1841 "x"
- R_PAREN@1841..1842 ")"
- WHITESPACE@1842..1843 " "
- FOR_SPEC@1843..1855
- FOR_KW@1843..1846 "for"
- WHITESPACE@1846..1847 " "
- DESTRUCT_FULL@1847..1848
- NAME@1847..1848
- IDENT@1847..1848 "x"
- WHITESPACE@1848..1849 " "
- IN_KW@1849..1851 "in"
- WHITESPACE@1851..1852 " "
- EXPR@1852..1855
- EXPR_VAR@1852..1855
- NAME@1852..1855
- IDENT@1852..1855 "arr"
- R_BRACK@1855..1856 "]"
- R_PAREN@1856..1857 ")"
- WHITESPACE@1857..1862 "\n "
- ELSE_KW@1862..1866 "else"
- WHITESPACE@1866..1873 "\n "
- FALSE_EXPR@1873..1929
- EXPR@1873..1929
- EXPR_ERROR@1873..1929
- ERROR_KW@1873..1878 "error"
- WHITESPACE@1878..1879 " "
- EXPR@1879..1929
- EXPR_BINARY@1879..1929
- EXPR@1879..1913
- EXPR_STRING@1879..1913
- STRING_SINGLE@1879..1913 "'Expected string or a ..."
- WHITESPACE@1913..1914 " "
- MODULO@1914..1915 "%"
- WHITESPACE@1915..1916 " "
- EXPR@1916..1929
- EXPR_VAR@1916..1919
- NAME@1916..1919
- IDENT@1916..1919 "std"
- SUFFIX_INDEX@1919..1924
- DOT@1919..1920 "."
- NAME@1920..1924
- IDENT@1920..1924 "type"
- SUFFIX_APPLY@1924..1929
- ARGS_DESC@1924..1929
- L_PAREN@1924..1925 "("
- ARG@1925..1928
- EXPR@1925..1928
- EXPR_VAR@1925..1928
- NAME@1925..1928
- IDENT@1925..1928 "arr"
- R_PAREN@1928..1929 ")"
- COMMA@1929..1930 ","
- WHITESPACE@1930..1934 "\n\n "
- MEMBER_FIELD_METHOD@1934..2042
- FIELD_NAME_FIXED@1934..1945
- NAME@1934..1945
- IDENT@1934..1945 "assertEqual"
- PARAMS_DESC@1945..1951
- L_PAREN@1945..1946 "("
- PARAM@1946..1947
- DESTRUCT_FULL@1946..1947
- NAME@1946..1947
- IDENT@1946..1947 "a"
- COMMA@1947..1948 ","
- WHITESPACE@1948..1949 " "
- PARAM@1949..1950
- DESTRUCT_FULL@1949..1950
- NAME@1949..1950
- IDENT@1949..1950 "b"
- R_PAREN@1950..1951 ")"
- COLONCOLON@1951..1953 "::"
- WHITESPACE@1953..1958 "\n "
- EXPR@1958..2042
- EXPR_IF_THEN_ELSE@1958..2042
- IF_KW@1958..1960 "if"
- WHITESPACE@1960..1961 " "
- EXPR@1961..1967
- EXPR_BINARY@1961..1967
- EXPR@1961..1962
- EXPR_VAR@1961..1962
- NAME@1961..1962
- IDENT@1961..1962 "a"
- WHITESPACE@1962..1963 " "
- EQ@1963..1965 "=="
- WHITESPACE@1965..1966 " "
- EXPR@1966..1967
- EXPR_VAR@1966..1967
- NAME@1966..1967
- IDENT@1966..1967 "b"
- WHITESPACE@1967..1968 " "
- THEN_KW@1968..1972 "then"
- WHITESPACE@1972..1979 "\n "
- TRUE_EXPR@1979..1983
- EXPR@1979..1983
- EXPR_LITERAL@1979..1983
- TRUE_KW@1979..1983 "true"
- WHITESPACE@1983..1988 "\n "
- ELSE_KW@1988..1992 "else"
- WHITESPACE@1992..1999 "\n "
- FALSE_EXPR@1999..2042
- EXPR@1999..2042
- EXPR_ERROR@1999..2042
- ERROR_KW@1999..2004 "error"
- WHITESPACE@2004..2005 " "
- EXPR@2005..2042
- EXPR_BINARY@2005..2042
- EXPR@2005..2038
- EXPR_BINARY@2005..2038
- EXPR@2005..2029
- EXPR_BINARY@2005..2029
- EXPR@2005..2025
- EXPR_STRING@2005..2025
- STRING_SINGLE@2005..2025 "'Assertion failed. '"
- WHITESPACE@2025..2026 " "
- PLUS@2026..2027 "+"
- WHITESPACE@2027..2028 " "
- EXPR@2028..2029
- EXPR_VAR@2028..2029
- NAME@2028..2029
- IDENT@2028..2029 "a"
- WHITESPACE@2029..2030 " "
- PLUS@2030..2031 "+"
- WHITESPACE@2031..2032 " "
- EXPR@2032..2038
- EXPR_STRING@2032..2038
- STRING_SINGLE@2032..2038 "' != '"
- WHITESPACE@2038..2039 " "
- PLUS@2039..2040 "+"
- WHITESPACE@2040..2041 " "
- EXPR@2041..2042
- EXPR_VAR@2041..2042
- NAME@2041..2042
- IDENT@2041..2042 "b"
- COMMA@2042..2043 ","
- WHITESPACE@2043..2047 "\n\n "
- MEMBER_FIELD_METHOD@2047..2149
- FIELD_NAME_FIXED@2047..2052
- NAME@2047..2052
- IDENT@2047..2052 "clamp"
- PARAMS_DESC@2052..2071
- L_PAREN@2052..2053 "("
- PARAM@2053..2054
- DESTRUCT_FULL@2053..2054
- NAME@2053..2054
- IDENT@2053..2054 "x"
- COMMA@2054..2055 ","
- WHITESPACE@2055..2056 " "
- PARAM@2056..2062
- DESTRUCT_FULL@2056..2062
- NAME@2056..2062
- IDENT@2056..2062 "minVal"
- COMMA@2062..2063 ","
- WHITESPACE@2063..2064 " "
- PARAM@2064..2070
- DESTRUCT_FULL@2064..2070
- NAME@2064..2070
- IDENT@2064..2070 "maxVal"
- R_PAREN@2070..2071 ")"
- COLONCOLON@2071..2073 "::"
- WHITESPACE@2073..2078 "\n "
- EXPR@2078..2149
- EXPR_IF_THEN_ELSE@2078..2149
- IF_KW@2078..2080 "if"
- WHITESPACE@2080..2081 " "
- EXPR@2081..2091
- EXPR_BINARY@2081..2091
- EXPR@2081..2082
- EXPR_VAR@2081..2082
- NAME@2081..2082
- IDENT@2081..2082 "x"
- WHITESPACE@2082..2083 " "
- LT@2083..2084 "<"
- WHITESPACE@2084..2085 " "
- EXPR@2085..2091
- EXPR_VAR@2085..2091
- NAME@2085..2091
- IDENT@2085..2091 "minVal"
- WHITESPACE@2091..2092 " "
- THEN_KW@2092..2096 "then"
- WHITESPACE@2096..2097 " "
- TRUE_EXPR@2097..2103
- EXPR@2097..2103
- EXPR_VAR@2097..2103
- NAME@2097..2103
- IDENT@2097..2103 "minVal"
- WHITESPACE@2103..2108 "\n "
- ELSE_KW@2108..2112 "else"
- WHITESPACE@2112..2113 " "
- FALSE_EXPR@2113..2149
- EXPR@2113..2149
- EXPR_IF_THEN_ELSE@2113..2149
- IF_KW@2113..2115 "if"
- WHITESPACE@2115..2116 " "
- EXPR@2116..2126
- EXPR_BINARY@2116..2126
- EXPR@2116..2117
- EXPR_VAR@2116..2117
- NAME@2116..2117
- IDENT@2116..2117 "x"
- WHITESPACE@2117..2118 " "
- GT@2118..2119 ">"
- WHITESPACE@2119..2120 " "
- EXPR@2120..2126
- EXPR_VAR@2120..2126
- NAME@2120..2126
- IDENT@2120..2126 "maxVal"
- WHITESPACE@2126..2127 " "
- THEN_KW@2127..2131 "then"
- WHITESPACE@2131..2132 " "
- TRUE_EXPR@2132..2138
- EXPR@2132..2138
- EXPR_VAR@2132..2138
- NAME@2132..2138
- IDENT@2132..2138 "maxVal"
- WHITESPACE@2138..2143 "\n "
- ELSE_KW@2143..2147 "else"
- WHITESPACE@2147..2148 " "
- FALSE_EXPR@2148..2149
- EXPR@2148..2149
- EXPR_VAR@2148..2149
- NAME@2148..2149
- IDENT@2148..2149 "x"
- COMMA@2149..2150 ","
- WHITESPACE@2150..2154 "\n\n "
- MEMBER_FIELD_METHOD@2154..2840
- FIELD_NAME_FIXED@2154..2165
- NAME@2154..2165
- IDENT@2154..2165 "manifestIni"
- PARAMS_DESC@2165..2170
- L_PAREN@2165..2166 "("
- PARAM@2166..2169
- DESTRUCT_FULL@2166..2169
- NAME@2166..2169
- IDENT@2166..2169 "ini"
- R_PAREN@2169..2170 ")"
- COLONCOLON@2170..2172 "::"
- WHITESPACE@2172..2177 "\n "
- EXPR@2177..2840
- STMT_LOCAL@2177..2481
- LOCAL_KW@2177..2182 "local"
- WHITESPACE@2182..2183 " "
- BIND_FUNCTION@2183..2480
- NAME@2183..2193
- IDENT@2183..2193 "body_lines"
- PARAMS_DESC@2193..2199
- L_PAREN@2193..2194 "("
- PARAM@2194..2198
- DESTRUCT_FULL@2194..2198
- NAME@2194..2198
- IDENT@2194..2198 "body"
- R_PAREN@2198..2199 ")"
- WHITESPACE@2199..2200 " "
- ASSIGN@2200..2201 "="
- WHITESPACE@2201..2208 "\n "
- EXPR@2208..2480
- EXPR_VAR@2208..2211
- NAME@2208..2211
- IDENT@2208..2211 "std"
- SUFFIX_INDEX@2211..2216
- DOT@2211..2212 "."
- NAME@2212..2216
- IDENT@2212..2216 "join"
- SUFFIX_APPLY@2216..2480
- ARGS_DESC@2216..2480
- L_PAREN@2216..2217 "("
- ARG@2217..2219
- EXPR@2217..2219
- EXPR_ARRAY@2217..2219
- L_BRACK@2217..2218 "["
- R_BRACK@2218..2219 "]"
- COMMA@2219..2220 ","
- WHITESPACE@2220..2221 " "
- ARG@2221..2479
- EXPR@2221..2479
- EXPR_ARRAY_COMP@2221..2479
- L_BRACK@2221..2222 "["
- WHITESPACE@2222..2231 "\n "
- EXPR@2231..2430
- STMT_LOCAL@2231..2263
- LOCAL_KW@2231..2236 "local"
- WHITESPACE@2236..2237 " "
- BIND_DESTRUCT@2237..2262
- DESTRUCT_FULL@2237..2252
- NAME@2237..2252
- IDENT@2237..2252 "value_or_values"
- WHITESPACE@2252..2253 " "
- ASSIGN@2253..2254 "="
- WHITESPACE@2254..2255 " "
- EXPR@2255..2262
- EXPR_VAR@2255..2259
- NAME@2255..2259
- IDENT@2255..2259 "body"
- SUFFIX_INDEX_EXPR@2259..2262
- L_BRACK@2259..2260 "["
- EXPR@2260..2261
- EXPR_VAR@2260..2261
- NAME@2260..2261
- IDENT@2260..2261 "k"
- R_BRACK@2261..2262 "]"
- SEMI@2262..2263 ";"
- WHITESPACE@2263..2272 "\n "
- EXPR_IF_THEN_ELSE@2272..2430
- IF_KW@2272..2274 "if"
- WHITESPACE@2274..2275 " "
- EXPR@2275..2303
- EXPR_VAR@2275..2278
- NAME@2275..2278
- IDENT@2275..2278 "std"
- SUFFIX_INDEX@2278..2286
- DOT@2278..2279 "."
- NAME@2279..2286
- IDENT@2279..2286 "isArray"
- SUFFIX_APPLY@2286..2303
- ARGS_DESC@2286..2303
- L_PAREN@2286..2287 "("
- ARG@2287..2302
- EXPR@2287..2302
- EXPR_VAR@2287..2302
- NAME@2287..2302
- IDENT@2287..2302 "value_or_values"
- R_PAREN@2302..2303 ")"
- WHITESPACE@2303..2304 " "
- THEN_KW@2304..2308 "then"
- WHITESPACE@2308..2319 "\n "
- TRUE_EXPR@2319..2372
- EXPR@2319..2372
- EXPR_ARRAY_COMP@2319..2372
- L_BRACK@2319..2320 "["
- EXPR@2320..2342
- EXPR_BINARY@2320..2342
- EXPR@2320..2329
- EXPR_STRING@2320..2329
- STRING_SINGLE@2320..2329 "'%s = %s'"
- WHITESPACE@2329..2330 " "
- MODULO@2330..2331 "%"
- WHITESPACE@2331..2332 " "
- EXPR@2332..2342
- EXPR_ARRAY@2332..2342
- L_BRACK@2332..2333 "["
- EXPR@2333..2334
- EXPR_VAR@2333..2334
- NAME@2333..2334
- IDENT@2333..2334 "k"
- COMMA@2334..2335 ","
- WHITESPACE@2335..2336 " "
- EXPR@2336..2341
- EXPR_VAR@2336..2341
- NAME@2336..2341
- IDENT@2336..2341 "value"
- R_BRACK@2341..2342 "]"
- WHITESPACE@2342..2343 " "
- FOR_SPEC@2343..2371
- FOR_KW@2343..2346 "for"
- WHITESPACE@2346..2347 " "
- DESTRUCT_FULL@2347..2352
- NAME@2347..2352
- IDENT@2347..2352 "value"
- WHITESPACE@2352..2353 " "
- IN_KW@2353..2355 "in"
- WHITESPACE@2355..2356 " "
- EXPR@2356..2371
- EXPR_VAR@2356..2371
- NAME@2356..2371
- IDENT@2356..2371 "value_or_values"
- R_BRACK@2371..2372 "]"
- WHITESPACE@2372..2381 "\n "
- ELSE_KW@2381..2385 "else"
- WHITESPACE@2385..2396 "\n "
- FALSE_EXPR@2396..2430
- EXPR@2396..2430
- EXPR_ARRAY@2396..2430
- L_BRACK@2396..2397 "["
- EXPR@2397..2429
- EXPR_BINARY@2397..2429
- EXPR@2397..2406
- EXPR_STRING@2397..2406
- STRING_SINGLE@2397..2406 "'%s = %s'"
- WHITESPACE@2406..2407 " "
- MODULO@2407..2408 "%"
- WHITESPACE@2408..2409 " "
- EXPR@2409..2429
- EXPR_ARRAY@2409..2429
- L_BRACK@2409..2410 "["
- EXPR@2410..2411
- EXPR_VAR@2410..2411
- NAME@2410..2411
- IDENT@2410..2411 "k"
- COMMA@2411..2412 ","
- WHITESPACE@2412..2413 " "
- EXPR@2413..2428
- EXPR_VAR@2413..2428
- NAME@2413..2428
- IDENT@2413..2428 "value_or_values"
- R_BRACK@2428..2429 "]"
- R_BRACK@2429..2430 "]"
- WHITESPACE@2430..2440 "\n\n "
- FOR_SPEC@2440..2471
- FOR_KW@2440..2443 "for"
- WHITESPACE@2443..2444 " "
- DESTRUCT_FULL@2444..2445
- NAME@2444..2445
- IDENT@2444..2445 "k"
- WHITESPACE@2445..2446 " "
- IN_KW@2446..2448 "in"
- WHITESPACE@2448..2449 " "
- EXPR@2449..2471
- EXPR_VAR@2449..2452
- NAME@2449..2452
- IDENT@2449..2452 "std"
- SUFFIX_INDEX@2452..2465
- DOT@2452..2453 "."
- NAME@2453..2465
- IDENT@2453..2465 "objectFields"
- SUFFIX_APPLY@2465..2471
- ARGS_DESC@2465..2471
- L_PAREN@2465..2466 "("
- ARG@2466..2470
- EXPR@2466..2470
- EXPR_VAR@2466..2470
- NAME@2466..2470
- IDENT@2466..2470 "body"
- R_PAREN@2470..2471 ")"
- WHITESPACE@2471..2478 "\n "
- R_BRACK@2478..2479 "]"
- R_PAREN@2479..2480 ")"
- SEMI@2480..2481 ";"
- WHITESPACE@2481..2487 "\n\n "
- STMT_LOCAL@2487..2769
- LOCAL_KW@2487..2492 "local"
- WHITESPACE@2492..2493 " "
- BIND_FUNCTION@2493..2561
- NAME@2493..2506
- IDENT@2493..2506 "section_lines"
- PARAMS_DESC@2506..2520
- L_PAREN@2506..2507 "("
- PARAM@2507..2512
- DESTRUCT_FULL@2507..2512
- NAME@2507..2512
- IDENT@2507..2512 "sname"
- COMMA@2512..2513 ","
- WHITESPACE@2513..2514 " "
- PARAM@2514..2519
- DESTRUCT_FULL@2514..2519
- NAME@2514..2519
- IDENT@2514..2519 "sbody"
- R_PAREN@2519..2520 ")"
- WHITESPACE@2520..2521 " "
- ASSIGN@2521..2522 "="
- WHITESPACE@2522..2523 " "
- EXPR@2523..2561
- EXPR_BINARY@2523..2561
- EXPR@2523..2541
- EXPR_ARRAY@2523..2541
- L_BRACK@2523..2524 "["
- EXPR@2524..2540
- EXPR_BINARY@2524..2540
- EXPR@2524..2530
- EXPR_STRING@2524..2530
- STRING_SINGLE@2524..2530 "'[%s]'"
- WHITESPACE@2530..2531 " "
- MODULO@2531..2532 "%"
- WHITESPACE@2532..2533 " "
- EXPR@2533..2540
- EXPR_ARRAY@2533..2540
- L_BRACK@2533..2534 "["
- EXPR@2534..2539
- EXPR_VAR@2534..2539
- NAME@2534..2539
- IDENT@2534..2539 "sname"
- R_BRACK@2539..2540 "]"
- R_BRACK@2540..2541 "]"
- WHITESPACE@2541..2542 " "
- PLUS@2542..2543 "+"
- WHITESPACE@2543..2544 " "
- EXPR@2544..2561
- EXPR_VAR@2544..2554
- NAME@2544..2554
- IDENT@2544..2554 "body_lines"
- SUFFIX_APPLY@2554..2561
- ARGS_DESC@2554..2561
- L_PAREN@2554..2555 "("
- ARG@2555..2560
- EXPR@2555..2560
- EXPR_VAR@2555..2560
- NAME@2555..2560
- IDENT@2555..2560 "sbody"
- R_PAREN@2560..2561 ")"
- COMMA@2561..2562 ","
- WHITESPACE@2562..2573 "\n "
- BIND_DESTRUCT@2573..2648
- DESTRUCT_FULL@2573..2582
- NAME@2573..2582
- IDENT@2573..2582 "main_body"
- WHITESPACE@2582..2583 " "
- ASSIGN@2583..2584 "="
- WHITESPACE@2584..2585 " "
- EXPR@2585..2648
- EXPR_IF_THEN_ELSE@2585..2648
- IF_KW@2585..2587 "if"
- WHITESPACE@2587..2588 " "
- EXPR@2588..2614
- EXPR_VAR@2588..2591
- NAME@2588..2591
- IDENT@2588..2591 "std"
- SUFFIX_INDEX@2591..2601
- DOT@2591..2592 "."
- NAME@2592..2601
- IDENT@2592..2601 "objectHas"
- SUFFIX_APPLY@2601..2614
- ARGS_DESC@2601..2614
- L_PAREN@2601..2602 "("
- ARG@2602..2605
- EXPR@2602..2605
- EXPR_VAR@2602..2605
- NAME@2602..2605
- IDENT@2602..2605 "ini"
- COMMA@2605..2606 ","
- WHITESPACE@2606..2607 " "
- ARG@2607..2613
- EXPR@2607..2613
- EXPR_STRING@2607..2613
- STRING_SINGLE@2607..2613 "'main'"
- R_PAREN@2613..2614 ")"
- WHITESPACE@2614..2615 " "
- THEN_KW@2615..2619 "then"
- WHITESPACE@2619..2620 " "
- TRUE_EXPR@2620..2640
- EXPR@2620..2640
- EXPR_VAR@2620..2630
- NAME@2620..2630
- IDENT@2620..2630 "body_lines"
- SUFFIX_APPLY@2630..2640
- ARGS_DESC@2630..2640
- L_PAREN@2630..2631 "("
- ARG@2631..2639
- EXPR@2631..2639
- EXPR_VAR@2631..2634
- NAME@2631..2634
- IDENT@2631..2634 "ini"
- SUFFIX_INDEX@2634..2639
- DOT@2634..2635 "."
- NAME@2635..2639
- IDENT@2635..2639 "main"
- R_PAREN@2639..2640 ")"
- WHITESPACE@2640..2641 " "
- ELSE_KW@2641..2645 "else"
- WHITESPACE@2645..2646 " "
- FALSE_EXPR@2646..2648
- EXPR@2646..2648
- EXPR_ARRAY@2646..2648
- L_BRACK@2646..2647 "["
- R_BRACK@2647..2648 "]"
- COMMA@2648..2649 ","
- WHITESPACE@2649..2660 "\n "
- BIND_DESTRUCT@2660..2768
- DESTRUCT_FULL@2660..2672
- NAME@2660..2672
- IDENT@2660..2672 "all_sections"
- WHITESPACE@2672..2673 " "
- ASSIGN@2673..2674 "="
- WHITESPACE@2674..2675 " "
- EXPR@2675..2768
- EXPR_ARRAY_COMP@2675..2768
- L_BRACK@2675..2676 "["
- WHITESPACE@2676..2683 "\n "
- EXPR@2683..2716
- EXPR_VAR@2683..2696
- NAME@2683..2696
- IDENT@2683..2696 "section_lines"
- SUFFIX_APPLY@2696..2716
- ARGS_DESC@2696..2716
- L_PAREN@2696..2697 "("
- ARG@2697..2698
- EXPR@2697..2698
- EXPR_VAR@2697..2698
- NAME@2697..2698
- IDENT@2697..2698 "k"
- COMMA@2698..2699 ","
- WHITESPACE@2699..2700 " "
- ARG@2700..2715
- EXPR@2700..2715
- EXPR_VAR@2700..2703
- NAME@2700..2703
- IDENT@2700..2703 "ini"
- SUFFIX_INDEX@2703..2712
- DOT@2703..2704 "."
- NAME@2704..2712
- IDENT@2704..2712 "sections"
- SUFFIX_INDEX_EXPR@2712..2715
- L_BRACK@2712..2713 "["
- EXPR@2713..2714
- EXPR_VAR@2713..2714
- NAME@2713..2714
- IDENT@2713..2714 "k"
- R_BRACK@2714..2715 "]"
- R_PAREN@2715..2716 ")"
- WHITESPACE@2716..2723 "\n "
- FOR_SPEC@2723..2762
- FOR_KW@2723..2726 "for"
- WHITESPACE@2726..2727 " "
- DESTRUCT_FULL@2727..2728
- NAME@2727..2728
- IDENT@2727..2728 "k"
- WHITESPACE@2728..2729 " "
- IN_KW@2729..2731 "in"
- WHITESPACE@2731..2732 " "
- EXPR@2732..2762
- EXPR_VAR@2732..2735
- NAME@2732..2735
- IDENT@2732..2735 "std"
- SUFFIX_INDEX@2735..2748
- DOT@2735..2736 "."
- NAME@2736..2748
- IDENT@2736..2748 "objectFields"
- SUFFIX_APPLY@2748..2762
- ARGS_DESC@2748..2762
- L_PAREN@2748..2749 "("
- ARG@2749..2761
- EXPR@2749..2761
- EXPR_VAR@2749..2752
- NAME@2749..2752
- IDENT@2749..2752 "ini"
- SUFFIX_INDEX@2752..2761
- DOT@2752..2753 "."
- NAME@2753..2761
- IDENT@2753..2761 "sections"
- R_PAREN@2761..2762 ")"
- WHITESPACE@2762..2767 "\n "
- R_BRACK@2767..2768 "]"
- SEMI@2768..2769 ";"
- WHITESPACE@2769..2774 "\n "
- EXPR_VAR@2774..2777
- NAME@2774..2777
- IDENT@2774..2777 "std"
- SUFFIX_INDEX@2777..2782
- DOT@2777..2778 "."
- NAME@2778..2782
- IDENT@2778..2782 "join"
- SUFFIX_APPLY@2782..2840
- ARGS_DESC@2782..2840
- L_PAREN@2782..2783 "("
- ARG@2783..2787
- EXPR@2783..2787
- EXPR_STRING@2783..2787
- STRING_SINGLE@2783..2787 "'\\n'"
- COMMA@2787..2788 ","
- WHITESPACE@2788..2789 " "
- ARG@2789..2839
- EXPR@2789..2839
- EXPR_BINARY@2789..2839
- EXPR@2789..2832
- EXPR_BINARY@2789..2832
- EXPR@2789..2798
- EXPR_VAR@2789..2798
- NAME@2789..2798
- IDENT@2789..2798 "main_body"
- WHITESPACE@2798..2799 " "
- PLUS@2799..2800 "+"
- WHITESPACE@2800..2801 " "
- EXPR@2801..2832
- EXPR_VAR@2801..2804
- NAME@2801..2804
- IDENT@2801..2804 "std"
- SUFFIX_INDEX@2804..2818
- DOT@2804..2805 "."
- NAME@2805..2818
- IDENT@2805..2818 "flattenArrays"
- SUFFIX_APPLY@2818..2832
- ARGS_DESC@2818..2832
- L_PAREN@2818..2819 "("
- ARG@2819..2831
- EXPR@2819..2831
- EXPR_VAR@2819..2831
- NAME@2819..2831
- IDENT@2819..2831 "all_sections"
- R_PAREN@2831..2832 ")"
- WHITESPACE@2832..2833 " "
- PLUS@2833..2834 "+"
- WHITESPACE@2834..2835 " "
- EXPR@2835..2839
- EXPR_ARRAY@2835..2839
- L_BRACK@2835..2836 "["
- EXPR@2836..2838
- EXPR_STRING@2836..2838
- STRING_SINGLE@2836..2838 "''"
- R_BRACK@2838..2839 "]"
- R_PAREN@2839..2840 ")"
- COMMA@2840..2841 ","
- WHITESPACE@2841..2845 "\n\n "
- MEMBER_FIELD_METHOD@2845..2898
- FIELD_NAME_FIXED@2845..2857
- NAME@2845..2857
- IDENT@2845..2857 "manifestToml"
- PARAMS_DESC@2857..2864
- L_PAREN@2857..2858 "("
- PARAM@2858..2863
- DESTRUCT_FULL@2858..2863
- NAME@2858..2863
- IDENT@2858..2863 "value"
- R_PAREN@2863..2864 ")"
- COLONCOLON@2864..2866 "::"
- WHITESPACE@2866..2867 " "
- EXPR@2867..2898
- EXPR_VAR@2867..2870
- NAME@2867..2870
- IDENT@2867..2870 "std"
- SUFFIX_INDEX@2870..2885
- DOT@2870..2871 "."
- NAME@2871..2885
- IDENT@2871..2885 "manifestTomlEx"
- SUFFIX_APPLY@2885..2898
- ARGS_DESC@2885..2898
- L_PAREN@2885..2886 "("
- ARG@2886..2891
- EXPR@2886..2891
- EXPR_VAR@2886..2891
- NAME@2886..2891
- IDENT@2886..2891 "value"
- COMMA@2891..2892 ","
- WHITESPACE@2892..2893 " "
- ARG@2893..2897
- EXPR@2893..2897
- EXPR_STRING@2893..2897
- STRING_SINGLE@2893..2897 "' '"
- R_PAREN@2897..2898 ")"
- COMMA@2898..2899 ","
- WHITESPACE@2899..2903 "\n\n "
- MEMBER_FIELD_METHOD@2903..2958
- FIELD_NAME_FIXED@2903..2921
- NAME@2903..2921
- IDENT@2903..2921 "escapeStringPython"
- PARAMS_DESC@2921..2926
- L_PAREN@2921..2922 "("
- PARAM@2922..2925
- DESTRUCT_FULL@2922..2925
- NAME@2922..2925
- IDENT@2922..2925 "str"
- R_PAREN@2925..2926 ")"
- COLONCOLON@2926..2928 "::"
- WHITESPACE@2928..2933 "\n "
- EXPR@2933..2958
- EXPR_VAR@2933..2936
- NAME@2933..2936
- IDENT@2933..2936 "std"
- SUFFIX_INDEX@2936..2953
- DOT@2936..2937 "."
- NAME@2937..2953
- IDENT@2937..2953 "escapeStringJson"
- SUFFIX_APPLY@2953..2958
- ARGS_DESC@2953..2958
- L_PAREN@2953..2954 "("
- ARG@2954..2957
- EXPR@2954..2957
- EXPR_VAR@2954..2957
- NAME@2954..2957
- IDENT@2954..2957 "str"
- R_PAREN@2957..2958 ")"
- COMMA@2958..2959 ","
- WHITESPACE@2959..2963 "\n\n "
- MEMBER_FIELD_METHOD@2963..3180
- FIELD_NAME_FIXED@2963..2979
- NAME@2963..2979
- IDENT@2963..2979 "escapeStringBash"
- PARAMS_DESC@2979..2985
- L_PAREN@2979..2980 "("
- PARAM@2980..2984
- DESTRUCT_FULL@2980..2984
- NAME@2980..2984
- IDENT@2980..2984 "str_"
- R_PAREN@2984..2985 ")"
- COLONCOLON@2985..2987 "::"
- WHITESPACE@2987..2992 "\n "
- EXPR@2992..3180
- STMT_LOCAL@2992..3023
- LOCAL_KW@2992..2997 "local"
- WHITESPACE@2997..2998 " "
- BIND_DESTRUCT@2998..3022
- DESTRUCT_FULL@2998..3001
- NAME@2998..3001
- IDENT@2998..3001 "str"
- WHITESPACE@3001..3002 " "
- ASSIGN@3002..3003 "="
- WHITESPACE@3003..3004 " "
- EXPR@3004..3022
- EXPR_VAR@3004..3007
- NAME@3004..3007
- IDENT@3004..3007 "std"
- SUFFIX_INDEX@3007..3016
- DOT@3007..3008 "."
- NAME@3008..3016
- IDENT@3008..3016 "toString"
- SUFFIX_APPLY@3016..3022
- ARGS_DESC@3016..3022
- L_PAREN@3016..3017 "("
- ARG@3017..3021
- EXPR@3017..3021
- EXPR_VAR@3017..3021
- NAME@3017..3021
- IDENT@3017..3021 "str_"
- R_PAREN@3021..3022 ")"
- SEMI@3022..3023 ";"
- WHITESPACE@3023..3028 "\n "
- STMT_LOCAL@3028..3110
- LOCAL_KW@3028..3033 "local"
- WHITESPACE@3033..3034 " "
- BIND_FUNCTION@3034..3109
- NAME@3034..3039
- IDENT@3034..3039 "trans"
- PARAMS_DESC@3039..3043
- L_PAREN@3039..3040 "("
- PARAM@3040..3042
- DESTRUCT_FULL@3040..3042
- NAME@3040..3042
- IDENT@3040..3042 "ch"
- R_PAREN@3042..3043 ")"
- WHITESPACE@3043..3044 " "
- ASSIGN@3044..3045 "="
- WHITESPACE@3045..3052 "\n "
- EXPR@3052..3109
- EXPR_IF_THEN_ELSE@3052..3109
- IF_KW@3052..3054 "if"
- WHITESPACE@3054..3055 " "
- EXPR@3055..3064
- EXPR_BINARY@3055..3064
- EXPR@3055..3057
- EXPR_VAR@3055..3057
- NAME@3055..3057
- IDENT@3055..3057 "ch"
- WHITESPACE@3057..3058 " "
- EQ@3058..3060 "=="
- WHITESPACE@3060..3061 " "
- EXPR@3061..3064
- EXPR_STRING@3061..3064
- STRING_DOUBLE@3061..3064 "\"'\""
- WHITESPACE@3064..3065 " "
- THEN_KW@3065..3069 "then"
- WHITESPACE@3069..3078 "\n "
- TRUE_EXPR@3078..3087
- EXPR@3078..3087
- EXPR_STRING@3078..3087
- STRING_DOUBLE@3078..3087 "\"'\\\"'\\\"'\""
- WHITESPACE@3087..3094 "\n "
- ELSE_KW@3094..3098 "else"
- WHITESPACE@3098..3107 "\n "
- FALSE_EXPR@3107..3109
- EXPR@3107..3109
- EXPR_VAR@3107..3109
- NAME@3107..3109
- IDENT@3107..3109 "ch"
- SEMI@3109..3110 ";"
- WHITESPACE@3110..3115 "\n "
- EXPR_BINARY@3115..3180
- EXPR@3115..3121
- EXPR_STRING@3115..3121
- STRING_DOUBLE@3115..3121 "\"'%s'\""
- WHITESPACE@3121..3122 " "
- MODULO@3122..3123 "%"
- WHITESPACE@3123..3124 " "
- EXPR@3124..3180
- EXPR_VAR@3124..3127
- NAME@3124..3127
- IDENT@3124..3127 "std"
- SUFFIX_INDEX@3127..3132
- DOT@3127..3128 "."
- NAME@3128..3132
- IDENT@3128..3132 "join"
- SUFFIX_APPLY@3132..3180
- ARGS_DESC@3132..3180
- L_PAREN@3132..3133 "("
- ARG@3133..3135
- EXPR@3133..3135
- EXPR_STRING@3133..3135
- STRING_SINGLE@3133..3135 "''"
- COMMA@3135..3136 ","
- WHITESPACE@3136..3137 " "
- ARG@3137..3179
- EXPR@3137..3179
- EXPR_ARRAY_COMP@3137..3179
- L_BRACK@3137..3138 "["
- EXPR@3138..3147
- EXPR_VAR@3138..3143
- NAME@3138..3143
- IDENT@3138..3143 "trans"
- SUFFIX_APPLY@3143..3147
- ARGS_DESC@3143..3147
- L_PAREN@3143..3144 "("
- ARG@3144..3146
- EXPR@3144..3146
- EXPR_VAR@3144..3146
- NAME@3144..3146
- IDENT@3144..3146 "ch"
- R_PAREN@3146..3147 ")"
- WHITESPACE@3147..3148 " "
- FOR_SPEC@3148..3178
- FOR_KW@3148..3151 "for"
- WHITESPACE@3151..3152 " "
- DESTRUCT_FULL@3152..3154
- NAME@3152..3154
- IDENT@3152..3154 "ch"
- WHITESPACE@3154..3155 " "
- IN_KW@3155..3157 "in"
- WHITESPACE@3157..3158 " "
- EXPR@3158..3178
- EXPR_VAR@3158..3161
- NAME@3158..3161
- IDENT@3158..3161 "std"
- SUFFIX_INDEX@3161..3173
- DOT@3161..3162 "."
- NAME@3162..3173
- IDENT@3162..3173 "stringChars"
- SUFFIX_APPLY@3173..3178
- ARGS_DESC@3173..3178
- L_PAREN@3173..3174 "("
- ARG@3174..3177
- EXPR@3174..3177
- EXPR_VAR@3174..3177
- NAME@3174..3177
- IDENT@3174..3177 "str"
- R_PAREN@3177..3178 ")"
- R_BRACK@3178..3179 "]"
- R_PAREN@3179..3180 ")"
- COMMA@3180..3181 ","
- WHITESPACE@3181..3185 "\n\n "
- MEMBER_FIELD_METHOD@3185..3399
- FIELD_NAME_FIXED@3185..3204
- NAME@3185..3204
- IDENT@3185..3204 "escapeStringDollars"
- PARAMS_DESC@3204..3210
- L_PAREN@3204..3205 "("
- PARAM@3205..3209
- DESTRUCT_FULL@3205..3209
- NAME@3205..3209
- IDENT@3205..3209 "str_"
- R_PAREN@3209..3210 ")"
- COLONCOLON@3210..3212 "::"
- WHITESPACE@3212..3217 "\n "
- EXPR@3217..3399
- STMT_LOCAL@3217..3248
- LOCAL_KW@3217..3222 "local"
- WHITESPACE@3222..3223 " "
- BIND_DESTRUCT@3223..3247
- DESTRUCT_FULL@3223..3226
- NAME@3223..3226
- IDENT@3223..3226 "str"
- WHITESPACE@3226..3227 " "
- ASSIGN@3227..3228 "="
- WHITESPACE@3228..3229 " "
- EXPR@3229..3247
- EXPR_VAR@3229..3232
- NAME@3229..3232
- IDENT@3229..3232 "std"
- SUFFIX_INDEX@3232..3241
- DOT@3232..3233 "."
- NAME@3233..3241
- IDENT@3233..3241 "toString"
- SUFFIX_APPLY@3241..3247
- ARGS_DESC@3241..3247
- L_PAREN@3241..3242 "("
- ARG@3242..3246
- EXPR@3242..3246
- EXPR_VAR@3242..3246
- NAME@3242..3246
- IDENT@3242..3246 "str_"
- R_PAREN@3246..3247 ")"
- SEMI@3247..3248 ";"
- WHITESPACE@3248..3253 "\n "
- STMT_LOCAL@3253..3330
- LOCAL_KW@3253..3258 "local"
- WHITESPACE@3258..3259 " "
- BIND_FUNCTION@3259..3329
- NAME@3259..3264
- IDENT@3259..3264 "trans"
- PARAMS_DESC@3264..3268
- L_PAREN@3264..3265 "("
- PARAM@3265..3267
- DESTRUCT_FULL@3265..3267
- NAME@3265..3267
- IDENT@3265..3267 "ch"
- R_PAREN@3267..3268 ")"
- WHITESPACE@3268..3269 " "
- ASSIGN@3269..3270 "="
- WHITESPACE@3270..3277 "\n "
- EXPR@3277..3329
- EXPR_IF_THEN_ELSE@3277..3329
- IF_KW@3277..3279 "if"
- WHITESPACE@3279..3280 " "
- EXPR@3280..3289
- EXPR_BINARY@3280..3289
- EXPR@3280..3282
- EXPR_VAR@3280..3282
- NAME@3280..3282
- IDENT@3280..3282 "ch"
- WHITESPACE@3282..3283 " "
- EQ@3283..3285 "=="
- WHITESPACE@3285..3286 " "
- EXPR@3286..3289
- EXPR_STRING@3286..3289
- STRING_SINGLE@3286..3289 "'$'"
- WHITESPACE@3289..3290 " "
- THEN_KW@3290..3294 "then"
- WHITESPACE@3294..3303 "\n "
- TRUE_EXPR@3303..3307
- EXPR@3303..3307
- EXPR_STRING@3303..3307
- STRING_SINGLE@3303..3307 "'$$'"
- WHITESPACE@3307..3314 "\n "
- ELSE_KW@3314..3318 "else"
- WHITESPACE@3318..3327 "\n "
- FALSE_EXPR@3327..3329
- EXPR@3327..3329
- EXPR_VAR@3327..3329
- NAME@3327..3329
- IDENT@3327..3329 "ch"
- SEMI@3329..3330 ";"
- WHITESPACE@3330..3335 "\n "
- EXPR_VAR@3335..3338
- NAME@3335..3338
- IDENT@3335..3338 "std"
- SUFFIX_INDEX@3338..3344
- DOT@3338..3339 "."
- NAME@3339..3344
- IDENT@3339..3344 "foldl"
- SUFFIX_APPLY@3344..3399
- ARGS_DESC@3344..3399
- L_PAREN@3344..3345 "("
- ARG@3345..3372
- EXPR@3345..3372
- EXPR_FUNCTION@3345..3372
- FUNCTION_KW@3345..3353 "function"
- PARAMS_DESC@3353..3359
- L_PAREN@3353..3354 "("
- PARAM@3354..3355
- DESTRUCT_FULL@3354..3355
- NAME@3354..3355
- IDENT@3354..3355 "a"
- COMMA@3355..3356 ","
- WHITESPACE@3356..3357 " "
- PARAM@3357..3358
- DESTRUCT_FULL@3357..3358
- NAME@3357..3358
- IDENT@3357..3358 "b"
- R_PAREN@3358..3359 ")"
- WHITESPACE@3359..3360 " "
- EXPR@3360..3372
- EXPR_BINARY@3360..3372
- EXPR@3360..3361
- EXPR_VAR@3360..3361
- NAME@3360..3361
- IDENT@3360..3361 "a"
- WHITESPACE@3361..3362 " "
- PLUS@3362..3363 "+"
- WHITESPACE@3363..3364 " "
- EXPR@3364..3372
- EXPR_VAR@3364..3369
- NAME@3364..3369
- IDENT@3364..3369 "trans"
- SUFFIX_APPLY@3369..3372
- ARGS_DESC@3369..3372
- L_PAREN@3369..3370 "("
- ARG@3370..3371
- EXPR@3370..3371
- EXPR_VAR@3370..3371
- NAME@3370..3371
- IDENT@3370..3371 "b"
- R_PAREN@3371..3372 ")"
- COMMA@3372..3373 ","
- WHITESPACE@3373..3374 " "
- ARG@3374..3394
- EXPR@3374..3394
- EXPR_VAR@3374..3377
- NAME@3374..3377
- IDENT@3374..3377 "std"
- SUFFIX_INDEX@3377..3389
- DOT@3377..3378 "."
- NAME@3378..3389
- IDENT@3378..3389 "stringChars"
- SUFFIX_APPLY@3389..3394
- ARGS_DESC@3389..3394
- L_PAREN@3389..3390 "("
- ARG@3390..3393
- EXPR@3390..3393
- EXPR_VAR@3390..3393
- NAME@3390..3393
- IDENT@3390..3393 "str"
- R_PAREN@3393..3394 ")"
- COMMA@3394..3395 ","
- WHITESPACE@3395..3396 " "
- ARG@3396..3398
- EXPR@3396..3398
- EXPR_STRING@3396..3398
- STRING_SINGLE@3396..3398 "''"
- R_PAREN@3398..3399 ")"
- COMMA@3399..3400 ","
- WHITESPACE@3400..3404 "\n\n "
- MEMBER_BIND_STMT@3404..3519
- OBJ_LOCAL@3404..3519
- LOCAL_KW@3404..3409 "local"
- WHITESPACE@3409..3410 " "
- BIND_DESTRUCT@3410..3519
- DESTRUCT_FULL@3410..3421
- NAME@3410..3421
- IDENT@3410..3421 "xml_escapes"
- WHITESPACE@3421..3422 " "
- ASSIGN@3422..3423 "="
- WHITESPACE@3423..3424 " "
- EXPR@3424..3519
- EXPR_OBJECT@3424..3519
- OBJ_BODY_MEMBER_LIST@3424..3519
- L_BRACE@3424..3425 "{"
- WHITESPACE@3425..3430 "\n "
- MEMBER_FIELD_NORMAL@3430..3441
- FIELD_NAME_FIXED@3430..3433
- STRING_SINGLE@3430..3433 "'<'"
- COLON@3433..3434 ":"
- WHITESPACE@3434..3435 " "
- EXPR@3435..3441
- EXPR_STRING@3435..3441
- STRING_SINGLE@3435..3441 "'<'"
- COMMA@3441..3442 ","
- WHITESPACE@3442..3447 "\n "
- MEMBER_FIELD_NORMAL@3447..3458
- FIELD_NAME_FIXED@3447..3450
- STRING_SINGLE@3447..3450 "'>'"
- COLON@3450..3451 ":"
- WHITESPACE@3451..3452 " "
- EXPR@3452..3458
- EXPR_STRING@3452..3458
- STRING_SINGLE@3452..3458 "'>'"
- COMMA@3458..3459 ","
- WHITESPACE@3459..3464 "\n "
- MEMBER_FIELD_NORMAL@3464..3476
- FIELD_NAME_FIXED@3464..3467
- STRING_SINGLE@3464..3467 "'&'"
- COLON@3467..3468 ":"
- WHITESPACE@3468..3469 " "
- EXPR@3469..3476
- EXPR_STRING@3469..3476
- STRING_SINGLE@3469..3476 "'&'"
- COMMA@3476..3477 ","
- WHITESPACE@3477..3482 "\n "
- MEMBER_FIELD_NORMAL@3482..3495
- FIELD_NAME_FIXED@3482..3485
- STRING_SINGLE@3482..3485 "'\"'"
- COLON@3485..3486 ":"
- WHITESPACE@3486..3487 " "
- EXPR@3487..3495
- EXPR_STRING@3487..3495
- STRING_SINGLE@3487..3495 "'"'"
- COMMA@3495..3496 ","
- WHITESPACE@3496..3501 "\n "
- MEMBER_FIELD_NORMAL@3501..3514
- FIELD_NAME_FIXED@3501..3504
- STRING_DOUBLE@3501..3504 "\"'\""
- COLON@3504..3505 ":"
- WHITESPACE@3505..3506 " "
- EXPR@3506..3514
- EXPR_STRING@3506..3514
- STRING_SINGLE@3506..3514 "'''"
- COMMA@3514..3515 ","
- WHITESPACE@3515..3518 "\n "
- R_BRACE@3518..3519 "}"
- COMMA@3519..3520 ","
- WHITESPACE@3520..3524 "\n\n "
- MEMBER_FIELD_METHOD@3524..3663
- FIELD_NAME_FIXED@3524..3539
- NAME@3524..3539
- IDENT@3524..3539 "escapeStringXML"
- PARAMS_DESC@3539..3545
- L_PAREN@3539..3540 "("
- PARAM@3540..3544
- DESTRUCT_FULL@3540..3544
- NAME@3540..3544
- IDENT@3540..3544 "str_"
- R_PAREN@3544..3545 ")"
- COLONCOLON@3545..3547 "::"
- WHITESPACE@3547..3552 "\n "
- EXPR@3552..3663
- STMT_LOCAL@3552..3583
- LOCAL_KW@3552..3557 "local"
- WHITESPACE@3557..3558 " "
- BIND_DESTRUCT@3558..3582
- DESTRUCT_FULL@3558..3561
- NAME@3558..3561
- IDENT@3558..3561 "str"
- WHITESPACE@3561..3562 " "
- ASSIGN@3562..3563 "="
- WHITESPACE@3563..3564 " "
- EXPR@3564..3582
- EXPR_VAR@3564..3567
- NAME@3564..3567
- IDENT@3564..3567 "std"
- SUFFIX_INDEX@3567..3576
- DOT@3567..3568 "."
- NAME@3568..3576
- IDENT@3568..3576 "toString"
- SUFFIX_APPLY@3576..3582
- ARGS_DESC@3576..3582
- L_PAREN@3576..3577 "("
- ARG@3577..3581
- EXPR@3577..3581
- EXPR_VAR@3577..3581
- NAME@3577..3581
- IDENT@3577..3581 "str_"
- R_PAREN@3581..3582 ")"
- SEMI@3582..3583 ";"
- WHITESPACE@3583..3588 "\n "
- EXPR_VAR@3588..3591
- NAME@3588..3591
- IDENT@3588..3591 "std"
- SUFFIX_INDEX@3591..3596
- DOT@3591..3592 "."
- NAME@3592..3596
- IDENT@3592..3596 "join"
- SUFFIX_APPLY@3596..3663
- ARGS_DESC@3596..3663
- L_PAREN@3596..3597 "("
- ARG@3597..3599
- EXPR@3597..3599
- EXPR_STRING@3597..3599
- STRING_SINGLE@3597..3599 "''"
- COMMA@3599..3600 ","
- WHITESPACE@3600..3601 " "
- ARG@3601..3662
- EXPR@3601..3662
- EXPR_ARRAY_COMP@3601..3662
- L_BRACK@3601..3602 "["
- EXPR@3602..3630
- EXPR_VAR@3602..3605
- NAME@3602..3605
- IDENT@3602..3605 "std"
- SUFFIX_INDEX@3605..3609
- DOT@3605..3606 "."
- NAME@3606..3609
- IDENT@3606..3609 "get"
- SUFFIX_APPLY@3609..3630
- ARGS_DESC@3609..3630
- L_PAREN@3609..3610 "("
- ARG@3610..3621
- EXPR@3610..3621
- EXPR_VAR@3610..3621
- NAME@3610..3621
- IDENT@3610..3621 "xml_escapes"
- COMMA@3621..3622 ","
- WHITESPACE@3622..3623 " "
- ARG@3623..3625
- EXPR@3623..3625
- EXPR_VAR@3623..3625
- NAME@3623..3625
- IDENT@3623..3625 "ch"
- COMMA@3625..3626 ","
- WHITESPACE@3626..3627 " "
- ARG@3627..3629
- EXPR@3627..3629
- EXPR_VAR@3627..3629
- NAME@3627..3629
- IDENT@3627..3629 "ch"
- R_PAREN@3629..3630 ")"
- WHITESPACE@3630..3631 " "
- FOR_SPEC@3631..3661
- FOR_KW@3631..3634 "for"
- WHITESPACE@3634..3635 " "
- DESTRUCT_FULL@3635..3637
- NAME@3635..3637
- IDENT@3635..3637 "ch"
- WHITESPACE@3637..3638 " "
- IN_KW@3638..3640 "in"
- WHITESPACE@3640..3641 " "
- EXPR@3641..3661
- EXPR_VAR@3641..3644
- NAME@3641..3644
- IDENT@3641..3644 "std"
- SUFFIX_INDEX@3644..3656
- DOT@3644..3645 "."
- NAME@3645..3656
- IDENT@3645..3656 "stringChars"
- SUFFIX_APPLY@3656..3661
- ARGS_DESC@3656..3661
- L_PAREN@3656..3657 "("
- ARG@3657..3660
- EXPR@3657..3660
- EXPR_VAR@3657..3660
- NAME@3657..3660
- IDENT@3657..3660 "str"
- R_PAREN@3660..3661 ")"
- R_BRACK@3661..3662 "]"
- R_PAREN@3662..3663 ")"
- COMMA@3663..3664 ","
- WHITESPACE@3664..3668 "\n\n "
- MEMBER_FIELD_METHOD@3668..3734
- FIELD_NAME_FIXED@3668..3680
- NAME@3668..3680
- IDENT@3668..3680 "manifestJson"
- PARAMS_DESC@3680..3687
- L_PAREN@3680..3681 "("
- PARAM@3681..3686
- DESTRUCT_FULL@3681..3686
- NAME@3681..3686
- IDENT@3681..3686 "value"
- R_PAREN@3686..3687 ")"
- COLONCOLON@3687..3689 "::"
- WHITESPACE@3689..3690 " "
- EXPR@3690..3734
- EXPR_VAR@3690..3693
- NAME@3690..3693
- IDENT@3690..3693 "std"
- SUFFIX_INDEX@3693..3708
- DOT@3693..3694 "."
- NAME@3694..3708
- IDENT@3694..3708 "manifestJsonEx"
- SUFFIX_APPLY@3708..3734
- ARGS_DESC@3708..3734
- L_PAREN@3708..3709 "("
- ARG@3709..3714
- EXPR@3709..3714
- EXPR_VAR@3709..3714
- NAME@3709..3714
- IDENT@3709..3714 "value"
- COMMA@3714..3715 ","
- WHITESPACE@3715..3716 " "
- ARG@3716..3722
- EXPR@3716..3722
- EXPR_STRING@3716..3722
- STRING_SINGLE@3716..3722 "' '"
- R_PAREN@3722..3723 ")"
- WHITESPACE@3723..3724 " "
- TAILSTRICT_KW@3724..3734 "tailstrict"
- COMMA@3734..3735 ","
- WHITESPACE@3735..3739 "\n\n "
- MEMBER_FIELD_METHOD@3739..3807
- FIELD_NAME_FIXED@3739..3759
- NAME@3739..3759
- IDENT@3739..3759 "manifestJsonMinified"
- PARAMS_DESC@3759..3766
- L_PAREN@3759..3760 "("
- PARAM@3760..3765
- DESTRUCT_FULL@3760..3765
- NAME@3760..3765
- IDENT@3760..3765 "value"
- R_PAREN@3765..3766 ")"
- COLONCOLON@3766..3768 "::"
- WHITESPACE@3768..3769 " "
- EXPR@3769..3807
- EXPR_VAR@3769..3772
- NAME@3769..3772
- IDENT@3769..3772 "std"
- SUFFIX_INDEX@3772..3787
- DOT@3772..3773 "."
- NAME@3773..3787
- IDENT@3773..3787 "manifestJsonEx"
- SUFFIX_APPLY@3787..3807
- ARGS_DESC@3787..3807
- L_PAREN@3787..3788 "("
- ARG@3788..3793
- EXPR@3788..3793
- EXPR_VAR@3788..3793
- NAME@3788..3793
- IDENT@3788..3793 "value"
- COMMA@3793..3794 ","
- WHITESPACE@3794..3795 " "
- ARG@3795..3797
- EXPR@3795..3797
- EXPR_STRING@3795..3797
- STRING_SINGLE@3795..3797 "''"
- COMMA@3797..3798 ","
- WHITESPACE@3798..3799 " "
- ARG@3799..3801
- EXPR@3799..3801
- EXPR_STRING@3799..3801
- STRING_SINGLE@3799..3801 "''"
- COMMA@3801..3802 ","
- WHITESPACE@3802..3803 " "
- ARG@3803..3806
- EXPR@3803..3806
- EXPR_STRING@3803..3806
- STRING_SINGLE@3803..3806 "':'"
- R_PAREN@3806..3807 ")"
- COMMA@3807..3808 ","
- WHITESPACE@3808..3812 "\n\n "
- MEMBER_FIELD_METHOD@3812..4197
- FIELD_NAME_FIXED@3812..3830
- NAME@3812..3830
- IDENT@3812..3830 "manifestYamlStream"
- PARAMS_DESC@3830..3905
- L_PAREN@3830..3831 "("
- PARAM@3831..3836
- DESTRUCT_FULL@3831..3836
- NAME@3831..3836
- IDENT@3831..3836 "value"
- COMMA@3836..3837 ","
- WHITESPACE@3837..3838 " "
- PARAM@3838..3866
- DESTRUCT_FULL@3838..3860
- NAME@3838..3860
- IDENT@3838..3860 "indent_array_in_object"
- ASSIGN@3860..3861 "="
- EXPR@3861..3866
- EXPR_LITERAL@3861..3866
- FALSE_KW@3861..3866 "false"
- COMMA@3866..3867 ","
- WHITESPACE@3867..3868 " "
- PARAM@3868..3887
- DESTRUCT_FULL@3868..3882
- NAME@3868..3882
- IDENT@3868..3882 "c_document_end"
- ASSIGN@3882..3883 "="
- EXPR@3883..3887
- EXPR_LITERAL@3883..3887
- TRUE_KW@3883..3887 "true"
- COMMA@3887..3888 ","
- WHITESPACE@3888..3889 " "
- PARAM@3889..3904
- DESTRUCT_FULL@3889..3899
- NAME@3889..3899
- IDENT@3889..3899 "quote_keys"
- ASSIGN@3899..3900 "="
- EXPR@3900..3904
- EXPR_LITERAL@3900..3904
- TRUE_KW@3900..3904 "true"
- R_PAREN@3904..3905 ")"
- COLONCOLON@3905..3907 "::"
- WHITESPACE@3907..3912 "\n "
- EXPR@3912..4197
- EXPR_IF_THEN_ELSE@3912..4197
- IF_KW@3912..3914 "if"
- WHITESPACE@3914..3915 " "
- EXPR@3915..3934
- EXPR_UNARY@3915..3934
- NOT@3915..3916 "!"
- EXPR_VAR@3916..3919
- NAME@3916..3919
- IDENT@3916..3919 "std"
- SUFFIX_INDEX@3919..3927
- DOT@3919..3920 "."
- NAME@3920..3927
- IDENT@3920..3927 "isArray"
- SUFFIX_APPLY@3927..3934
- ARGS_DESC@3927..3934
- L_PAREN@3927..3928 "("
- ARG@3928..3933
- EXPR@3928..3933
- EXPR_VAR@3928..3933
- NAME@3928..3933
- IDENT@3928..3933 "value"
- R_PAREN@3933..3934 ")"
- WHITESPACE@3934..3935 " "
- THEN_KW@3935..3939 "then"
- WHITESPACE@3939..3946 "\n "
- TRUE_EXPR@3946..4014
- EXPR@3946..4014
- EXPR_ERROR@3946..4014
- ERROR_KW@3946..3951 "error"
- WHITESPACE@3951..3952 " "
- EXPR@3952..4014
- EXPR_BINARY@3952..4014
- EXPR@3952..3996
- EXPR_STRING@3952..3996
- STRING_SINGLE@3952..3996 "'manifestYamlStream o ..."
- WHITESPACE@3996..3997 " "
- PLUS@3997..3998 "+"
- WHITESPACE@3998..3999 " "
- EXPR@3999..4014
- EXPR_VAR@3999..4002
- NAME@3999..4002
- IDENT@3999..4002 "std"
- SUFFIX_INDEX@4002..4007
- DOT@4002..4003 "."
- NAME@4003..4007
- IDENT@4003..4007 "type"
- SUFFIX_APPLY@4007..4014
- ARGS_DESC@4007..4014
- L_PAREN@4007..4008 "("
- ARG@4008..4013
- EXPR@4008..4013
- EXPR_VAR@4008..4013
- NAME@4008..4013
- IDENT@4008..4013 "value"
- R_PAREN@4013..4014 ")"
- WHITESPACE@4014..4019 "\n "
- ELSE_KW@4019..4023 "else"
- WHITESPACE@4023..4030 "\n "
- FALSE_EXPR@4030..4197
- EXPR@4030..4197
- EXPR_BINARY@4030..4197
- EXPR@4030..4152
- EXPR_BINARY@4030..4152
- EXPR@4030..4037
- EXPR_STRING@4030..4037
- STRING_SINGLE@4030..4037 "'---\\n'"
- WHITESPACE@4037..4038 " "
- PLUS@4038..4039 "+"
- WHITESPACE@4039..4040 " "
- EXPR@4040..4152
- EXPR_VAR@4040..4043
- NAME@4040..4043
- IDENT@4040..4043 "std"
- SUFFIX_INDEX@4043..4048
- DOT@4043..4044 "."
- NAME@4044..4048
- IDENT@4044..4048 "join"
- SUFFIX_APPLY@4048..4152
- ARGS_DESC@4048..4152
- L_PAREN@4048..4049 "("
- WHITESPACE@4049..4058 "\n "
- ARG@4058..4067
- EXPR@4058..4067
- EXPR_STRING@4058..4067
- STRING_SINGLE@4058..4067 "'\\n---\\n'"
- COMMA@4067..4068 ","
- WHITESPACE@4068..4069 " "
- ARG@4069..4144
- EXPR@4069..4144
- EXPR_ARRAY_COMP@4069..4144
- L_BRACK@4069..4070 "["
- EXPR@4070..4128
- EXPR_VAR@4070..4073
- NAME@4070..4073
- IDENT@4070..4073 "std"
- SUFFIX_INDEX@4073..4089
- DOT@4073..4074 "."
- NAME@4074..4089
- IDENT@4074..4089 "manifestYamlDoc"
- SUFFIX_APPLY@4089..4128
- ARGS_DESC@4089..4128
- L_PAREN@4089..4090 "("
- ARG@4090..4091
- EXPR@4090..4091
- EXPR_VAR@4090..4091
- NAME@4090..4091
- IDENT@4090..4091 "e"
- COMMA@4091..4092 ","
- WHITESPACE@4092..4093 " "
- ARG@4093..4115
- EXPR@4093..4115
- EXPR_VAR@4093..4115
- NAME@4093..4115
- IDENT@4093..4115 "indent_array_in_object"
- COMMA@4115..4116 ","
- WHITESPACE@4116..4117 " "
- ARG@4117..4127
- EXPR@4117..4127
- EXPR_VAR@4117..4127
- NAME@4117..4127
- IDENT@4117..4127 "quote_keys"
- R_PAREN@4127..4128 ")"
- WHITESPACE@4128..4129 " "
- FOR_SPEC@4129..4143
- FOR_KW@4129..4132 "for"
- WHITESPACE@4132..4133 " "
- DESTRUCT_FULL@4133..4134
- NAME@4133..4134
- IDENT@4133..4134 "e"
- WHITESPACE@4134..4135 " "
- IN_KW@4135..4137 "in"
- WHITESPACE@4137..4138 " "
- EXPR@4138..4143
- EXPR_VAR@4138..4143
- NAME@4138..4143
- IDENT@4138..4143 "value"
- R_BRACK@4143..4144 "]"
- WHITESPACE@4144..4151 "\n "
- R_PAREN@4151..4152 ")"
- WHITESPACE@4152..4153 " "
- PLUS@4153..4154 "+"
- WHITESPACE@4154..4155 " "
- EXPR@4155..4197
- EXPR_IF_THEN_ELSE@4155..4197
- IF_KW@4155..4157 "if"
- WHITESPACE@4157..4158 " "
- EXPR@4158..4172
- EXPR_VAR@4158..4172
- NAME@4158..4172
- IDENT@4158..4172 "c_document_end"
- WHITESPACE@4172..4173 " "
- THEN_KW@4173..4177 "then"
- WHITESPACE@4177..4178 " "
- TRUE_EXPR@4178..4187
- EXPR@4178..4187
- EXPR_STRING@4178..4187
- STRING_SINGLE@4178..4187 "'\\n...\\n'"
- WHITESPACE@4187..4188 " "
- ELSE_KW@4188..4192 "else"
- WHITESPACE@4192..4193 " "
- FALSE_EXPR@4193..4197
- EXPR@4193..4197
- EXPR_STRING@4193..4197
- STRING_SINGLE@4193..4197 "'\\n'"
- COMMA@4197..4198 ","
- WHITESPACE@4198..4202 "\n\n "
- MEMBER_FIELD_METHOD@4202..4858
- FIELD_NAME_FIXED@4202..4216
- NAME@4202..4216
- IDENT@4202..4216 "manifestPython"
- PARAMS_DESC@4216..4219
- L_PAREN@4216..4217 "("
- PARAM@4217..4218
- DESTRUCT_FULL@4217..4218
- NAME@4217..4218
- IDENT@4217..4218 "v"
- R_PAREN@4218..4219 ")"
- COLONCOLON@4219..4221 "::"
- WHITESPACE@4221..4226 "\n "
- EXPR@4226..4858
- EXPR_IF_THEN_ELSE@4226..4858
- IF_KW@4226..4228 "if"
- WHITESPACE@4228..4229 " "
- EXPR@4229..4244
- EXPR_VAR@4229..4232
- NAME@4229..4232
- IDENT@4229..4232 "std"
- SUFFIX_INDEX@4232..4241
- DOT@4232..4233 "."
- NAME@4233..4241
- IDENT@4233..4241 "isObject"
- SUFFIX_APPLY@4241..4244
- ARGS_DESC@4241..4244
- L_PAREN@4241..4242 "("
- ARG@4242..4243
- EXPR@4242..4243
- EXPR_VAR@4242..4243
- NAME@4242..4243
- IDENT@4242..4243 "v"
- R_PAREN@4243..4244 ")"
- WHITESPACE@4244..4245 " "
- THEN_KW@4245..4249 "then"
- WHITESPACE@4249..4256 "\n "
- TRUE_EXPR@4256..4431
- EXPR@4256..4431
- STMT_LOCAL@4256..4391
- LOCAL_KW@4256..4261 "local"
- WHITESPACE@4261..4262 " "
- BIND_DESTRUCT@4262..4390
- DESTRUCT_FULL@4262..4268
- NAME@4262..4268
- IDENT@4262..4268 "fields"
- WHITESPACE@4268..4269 " "
- ASSIGN@4269..4270 "="
- WHITESPACE@4270..4271 " "
- EXPR@4271..4390
- EXPR_ARRAY_COMP@4271..4390
- L_BRACK@4271..4272 "["
- WHITESPACE@4272..4281 "\n "
- EXPR@4281..4345
- EXPR_BINARY@4281..4345
- EXPR@4281..4289
- EXPR_STRING@4281..4289
- STRING_SINGLE@4281..4289 "'%s: %s'"
- WHITESPACE@4289..4290 " "
- MODULO@4290..4291 "%"
- WHITESPACE@4291..4292 " "
- EXPR@4292..4345
- EXPR_ARRAY@4292..4345
- L_BRACK@4292..4293 "["
- EXPR@4293..4318
- EXPR_VAR@4293..4296
- NAME@4293..4296
- IDENT@4293..4296 "std"
- SUFFIX_INDEX@4296..4315
- DOT@4296..4297 "."
- NAME@4297..4315
- IDENT@4297..4315 "escapeStringPython"
- SUFFIX_APPLY@4315..4318
- ARGS_DESC@4315..4318
- L_PAREN@4315..4316 "("
- ARG@4316..4317
- EXPR@4316..4317
- EXPR_VAR@4316..4317
- NAME@4316..4317
- IDENT@4316..4317 "k"
- R_PAREN@4317..4318 ")"
- COMMA@4318..4319 ","
- WHITESPACE@4319..4320 " "
- EXPR@4320..4344
- EXPR_VAR@4320..4323
- NAME@4320..4323
- IDENT@4320..4323 "std"
- SUFFIX_INDEX@4323..4338
- DOT@4323..4324 "."
- NAME@4324..4338
- IDENT@4324..4338 "manifestPython"
- SUFFIX_APPLY@4338..4344
- ARGS_DESC@4338..4344
- L_PAREN@4338..4339 "("
- ARG@4339..4343
- EXPR@4339..4343
- EXPR_VAR@4339..4340
- NAME@4339..4340
- IDENT@4339..4340 "v"
- SUFFIX_INDEX_EXPR@4340..4343
- L_BRACK@4340..4341 "["
- EXPR@4341..4342
- EXPR_VAR@4341..4342
- NAME@4341..4342
- IDENT@4341..4342 "k"
- R_BRACK@4342..4343 "]"
- R_PAREN@4343..4344 ")"
- R_BRACK@4344..4345 "]"
- WHITESPACE@4345..4354 "\n "
- FOR_SPEC@4354..4382
- FOR_KW@4354..4357 "for"
- WHITESPACE@4357..4358 " "
- DESTRUCT_FULL@4358..4359
- NAME@4358..4359
- IDENT@4358..4359 "k"
- WHITESPACE@4359..4360 " "
- IN_KW@4360..4362 "in"
- WHITESPACE@4362..4363 " "
- EXPR@4363..4382
- EXPR_VAR@4363..4366
- NAME@4363..4366
- IDENT@4363..4366 "std"
- SUFFIX_INDEX@4366..4379
- DOT@4366..4367 "."
- NAME@4367..4379
- IDENT@4367..4379 "objectFields"
- SUFFIX_APPLY@4379..4382
- ARGS_DESC@4379..4382
- L_PAREN@4379..4380 "("
- ARG@4380..4381
- EXPR@4380..4381
- EXPR_VAR@4380..4381
- NAME@4380..4381
- IDENT@4380..4381 "v"
- R_PAREN@4381..4382 ")"
- WHITESPACE@4382..4389 "\n "
- R_BRACK@4389..4390 "]"
- SEMI@4390..4391 ";"
- WHITESPACE@4391..4398 "\n "
- EXPR_BINARY@4398..4431
- EXPR@4398..4404
- EXPR_STRING@4398..4404
- STRING_SINGLE@4398..4404 "'{%s}'"
- WHITESPACE@4404..4405 " "
- MODULO@4405..4406 "%"
- WHITESPACE@4406..4407 " "
- EXPR@4407..4431
- EXPR_ARRAY@4407..4431
- L_BRACK@4407..4408 "["
- EXPR@4408..4430
- EXPR_VAR@4408..4411
- NAME@4408..4411
- IDENT@4408..4411 "std"
- SUFFIX_INDEX@4411..4416
- DOT@4411..4412 "."
- NAME@4412..4416
- IDENT@4412..4416 "join"
- SUFFIX_APPLY@4416..4430
- ARGS_DESC@4416..4430
- L_PAREN@4416..4417 "("
- ARG@4417..4421
- EXPR@4417..4421
- EXPR_STRING@4417..4421
- STRING_SINGLE@4417..4421 "', '"
- COMMA@4421..4422 ","
- WHITESPACE@4422..4423 " "
- ARG@4423..4429
- EXPR@4423..4429
- EXPR_VAR@4423..4429
- NAME@4423..4429
- IDENT@4423..4429 "fields"
- R_PAREN@4429..4430 ")"
- R_BRACK@4430..4431 "]"
- WHITESPACE@4431..4436 "\n "
- ELSE_KW@4436..4440 "else"
- WHITESPACE@4440..4441 " "
- FALSE_EXPR@4441..4858
- EXPR@4441..4858
- EXPR_IF_THEN_ELSE@4441..4858
- IF_KW@4441..4443 "if"
- WHITESPACE@4443..4444 " "
- EXPR@4444..4458
- EXPR_VAR@4444..4447
- NAME@4444..4447
- IDENT@4444..4447 "std"
- SUFFIX_INDEX@4447..4455
- DOT@4447..4448 "."
- NAME@4448..4455
- IDENT@4448..4455 "isArray"
- SUFFIX_APPLY@4455..4458
- ARGS_DESC@4455..4458
- L_PAREN@4455..4456 "("
- ARG@4456..4457
- EXPR@4456..4457
- EXPR_VAR@4456..4457
- NAME@4456..4457
- IDENT@4456..4457 "v"
- R_PAREN@4457..4458 ")"
- WHITESPACE@4458..4459 " "
- THEN_KW@4459..4463 "then"
- WHITESPACE@4463..4470 "\n "
- TRUE_EXPR@4470..4533
- EXPR@4470..4533
- EXPR_BINARY@4470..4533
- EXPR@4470..4476
- EXPR_STRING@4470..4476
- STRING_SINGLE@4470..4476 "'[%s]'"
- WHITESPACE@4476..4477 " "
- MODULO@4477..4478 "%"
- WHITESPACE@4478..4479 " "
- EXPR@4479..4533
- EXPR_ARRAY@4479..4533
- L_BRACK@4479..4480 "["
- EXPR@4480..4532
- EXPR_VAR@4480..4483
- NAME@4480..4483
- IDENT@4480..4483 "std"
- SUFFIX_INDEX@4483..4488
- DOT@4483..4484 "."
- NAME@4484..4488
- IDENT@4484..4488 "join"
- SUFFIX_APPLY@4488..4532
- ARGS_DESC@4488..4532
- L_PAREN@4488..4489 "("
- ARG@4489..4493
- EXPR@4489..4493
- EXPR_STRING@4489..4493
- STRING_SINGLE@4489..4493 "', '"
- COMMA@4493..4494 ","
- WHITESPACE@4494..4495 " "
- ARG@4495..4531
- EXPR@4495..4531
- EXPR_ARRAY_COMP@4495..4531
- L_BRACK@4495..4496 "["
- EXPR@4496..4518
- EXPR_VAR@4496..4499
- NAME@4496..4499
- IDENT@4496..4499 "std"
- SUFFIX_INDEX@4499..4514
- DOT@4499..4500 "."
- NAME@4500..4514
- IDENT@4500..4514 "manifestPython"
- SUFFIX_APPLY@4514..4518
- ARGS_DESC@4514..4518
- L_PAREN@4514..4515 "("
- ARG@4515..4517
- EXPR@4515..4517
- EXPR_VAR@4515..4517
- NAME@4515..4517
- IDENT@4515..4517 "v2"
- R_PAREN@4517..4518 ")"
- WHITESPACE@4518..4519 " "
- FOR_SPEC@4519..4530
- FOR_KW@4519..4522 "for"
- WHITESPACE@4522..4523 " "
- DESTRUCT_FULL@4523..4525
- NAME@4523..4525
- IDENT@4523..4525 "v2"
- WHITESPACE@4525..4526 " "
- IN_KW@4526..4528 "in"
- WHITESPACE@4528..4529 " "
- EXPR@4529..4530
- EXPR_VAR@4529..4530
- NAME@4529..4530
- IDENT@4529..4530 "v"
- R_BRACK@4530..4531 "]"
- R_PAREN@4531..4532 ")"
- R_BRACK@4532..4533 "]"
- WHITESPACE@4533..4538 "\n "
- ELSE_KW@4538..4542 "else"
- WHITESPACE@4542..4543 " "
- FALSE_EXPR@4543..4858
- EXPR@4543..4858
- EXPR_IF_THEN_ELSE@4543..4858
- IF_KW@4543..4545 "if"
- WHITESPACE@4545..4546 " "
- EXPR@4546..4561
- EXPR_VAR@4546..4549
- NAME@4546..4549
- IDENT@4546..4549 "std"
- SUFFIX_INDEX@4549..4558
- DOT@4549..4550 "."
- NAME@4550..4558
- IDENT@4550..4558 "isString"
- SUFFIX_APPLY@4558..4561
- ARGS_DESC@4558..4561
- L_PAREN@4558..4559 "("
- ARG@4559..4560
- EXPR@4559..4560
- EXPR_VAR@4559..4560
- NAME@4559..4560
- IDENT@4559..4560 "v"
- R_PAREN@4560..4561 ")"
- WHITESPACE@4561..4562 " "
- THEN_KW@4562..4566 "then"
- WHITESPACE@4566..4573 "\n "
- TRUE_EXPR@4573..4607
- EXPR@4573..4607
- EXPR_BINARY@4573..4607
- EXPR@4573..4577
- EXPR_STRING@4573..4577
- STRING_SINGLE@4573..4577 "'%s'"
- WHITESPACE@4577..4578 " "
- MODULO@4578..4579 "%"
- WHITESPACE@4579..4580 " "
- EXPR@4580..4607
- EXPR_ARRAY@4580..4607
- L_BRACK@4580..4581 "["
- EXPR@4581..4606
- EXPR_VAR@4581..4584
- NAME@4581..4584
- IDENT@4581..4584 "std"
- SUFFIX_INDEX@4584..4603
- DOT@4584..4585 "."
- NAME@4585..4603
- IDENT@4585..4603 "escapeStringPython"
- SUFFIX_APPLY@4603..4606
- ARGS_DESC@4603..4606
- L_PAREN@4603..4604 "("
- ARG@4604..4605
- EXPR@4604..4605
- EXPR_VAR@4604..4605
- NAME@4604..4605
- IDENT@4604..4605 "v"
- R_PAREN@4605..4606 ")"
- R_BRACK@4606..4607 "]"
- WHITESPACE@4607..4612 "\n "
- ELSE_KW@4612..4616 "else"
- WHITESPACE@4616..4617 " "
- FALSE_EXPR@4617..4858
- EXPR@4617..4858
- EXPR_IF_THEN_ELSE@4617..4858
- IF_KW@4617..4619 "if"
- WHITESPACE@4619..4620 " "
- EXPR@4620..4637
- EXPR_VAR@4620..4623
- NAME@4620..4623
- IDENT@4620..4623 "std"
- SUFFIX_INDEX@4623..4634
- DOT@4623..4624 "."
- NAME@4624..4634
- IDENT@4624..4634 "isFunction"
- SUFFIX_APPLY@4634..4637
- ARGS_DESC@4634..4637
- L_PAREN@4634..4635 "("
- ARG@4635..4636
- EXPR@4635..4636
- EXPR_VAR@4635..4636
- NAME@4635..4636
- IDENT@4635..4636 "v"
- R_PAREN@4636..4637 ")"
- WHITESPACE@4637..4638 " "
- THEN_KW@4638..4642 "then"
- WHITESPACE@4642..4649 "\n "
- TRUE_EXPR@4649..4681
- EXPR@4649..4681
- EXPR_ERROR@4649..4681
- ERROR_KW@4649..4654 "error"
- WHITESPACE@4654..4655 " "
- EXPR@4655..4681
- EXPR_STRING@4655..4681
- STRING_SINGLE@4655..4681 "'cannot manifest func ..."
- WHITESPACE@4681..4686 "\n "
- ELSE_KW@4686..4690 "else"
- WHITESPACE@4690..4691 " "
- FALSE_EXPR@4691..4858
- EXPR@4691..4858
- EXPR_IF_THEN_ELSE@4691..4858
- IF_KW@4691..4693 "if"
- WHITESPACE@4693..4694 " "
- EXPR@4694..4709
- EXPR_VAR@4694..4697
- NAME@4694..4697
- IDENT@4694..4697 "std"
- SUFFIX_INDEX@4697..4706
- DOT@4697..4698 "."
- NAME@4698..4706
- IDENT@4698..4706 "isNumber"
- SUFFIX_APPLY@4706..4709
- ARGS_DESC@4706..4709
- L_PAREN@4706..4707 "("
- ARG@4707..4708
- EXPR@4707..4708
- EXPR_VAR@4707..4708
- NAME@4707..4708
- IDENT@4707..4708 "v"
- R_PAREN@4708..4709 ")"
- WHITESPACE@4709..4710 " "
- THEN_KW@4710..4714 "then"
- WHITESPACE@4714..4721 "\n "
- TRUE_EXPR@4721..4736
- EXPR@4721..4736
- EXPR_VAR@4721..4724
- NAME@4721..4724
- IDENT@4721..4724 "std"
- SUFFIX_INDEX@4724..4733
- DOT@4724..4725 "."
- NAME@4725..4733
- IDENT@4725..4733 "toString"
- SUFFIX_APPLY@4733..4736
- ARGS_DESC@4733..4736
- L_PAREN@4733..4734 "("
- ARG@4734..4735
- EXPR@4734..4735
- EXPR_VAR@4734..4735
- NAME@4734..4735
- IDENT@4734..4735 "v"
- R_PAREN@4735..4736 ")"
- WHITESPACE@4736..4741 "\n "
- ELSE_KW@4741..4745 "else"
- WHITESPACE@4745..4746 " "
- FALSE_EXPR@4746..4858
- EXPR@4746..4858
- EXPR_IF_THEN_ELSE@4746..4858
- IF_KW@4746..4748 "if"
- WHITESPACE@4748..4749 " "
- EXPR@4749..4758
- EXPR_BINARY@4749..4758
- EXPR@4749..4750
- EXPR_VAR@4749..4750
- NAME@4749..4750
- IDENT@4749..4750 "v"
- WHITESPACE@4750..4751 " "
- EQ@4751..4753 "=="
- WHITESPACE@4753..4754 " "
- EXPR@4754..4758
- EXPR_LITERAL@4754..4758
- TRUE_KW@4754..4758 "true"
- WHITESPACE@4758..4759 " "
- THEN_KW@4759..4763 "then"
- WHITESPACE@4763..4770 "\n "
- TRUE_EXPR@4770..4776
- EXPR@4770..4776
- EXPR_STRING@4770..4776
- STRING_SINGLE@4770..4776 "'True'"
- WHITESPACE@4776..4781 "\n "
- ELSE_KW@4781..4785 "else"
- WHITESPACE@4785..4786 " "
- FALSE_EXPR@4786..4858
- EXPR@4786..4858
- EXPR_IF_THEN_ELSE@4786..4858
- IF_KW@4786..4788 "if"
- WHITESPACE@4788..4789 " "
- EXPR@4789..4799
- EXPR_BINARY@4789..4799
- EXPR@4789..4790
- EXPR_VAR@4789..4790
- NAME@4789..4790
- IDENT@4789..4790 "v"
- WHITESPACE@4790..4791 " "
- EQ@4791..4793 "=="
- WHITESPACE@4793..4794 " "
- EXPR@4794..4799
- EXPR_LITERAL@4794..4799
- FALSE_KW@4794..4799 "false"
- WHITESPACE@4799..4800 " "
- THEN_KW@4800..4804 "then"
- WHITESPACE@4804..4811 "\n "
- TRUE_EXPR@4811..4818
- EXPR@4811..4818
- EXPR_STRING@4811..4818
- STRING_SINGLE@4811..4818 "'False'"
- WHITESPACE@4818..4823 "\n "
- ELSE_KW@4823..4827 "else"
- WHITESPACE@4827..4828 " "
- FALSE_EXPR@4828..4858
- EXPR@4828..4858
- EXPR_IF_THEN_ELSE@4828..4858
- IF_KW@4828..4830 "if"
- WHITESPACE@4830..4831 " "
- EXPR@4831..4840
- EXPR_BINARY@4831..4840
- EXPR@4831..4832
- EXPR_VAR@4831..4832
- NAME@4831..4832
- IDENT@4831..4832 "v"
- WHITESPACE@4832..4833 " "
- EQ@4833..4835 "=="
- WHITESPACE@4835..4836 " "
- EXPR@4836..4840
- EXPR_LITERAL@4836..4840
- NULL_KW@4836..4840 "null"
- WHITESPACE@4840..4841 " "
- THEN_KW@4841..4845 "then"
- WHITESPACE@4845..4852 "\n "
- TRUE_EXPR@4852..4858
- EXPR@4852..4858
- EXPR_STRING@4852..4858
- STRING_SINGLE@4852..4858 "'None'"
- COMMA@4858..4859 ","
- WHITESPACE@4859..4863 "\n\n "
- MEMBER_FIELD_METHOD@4863..5018
- FIELD_NAME_FIXED@4863..4881
- NAME@4863..4881
- IDENT@4863..4881 "manifestPythonVars"
- PARAMS_DESC@4881..4887
- L_PAREN@4881..4882 "("
- PARAM@4882..4886
- DESTRUCT_FULL@4882..4886
- NAME@4882..4886
- IDENT@4882..4886 "conf"
- R_PAREN@4886..4887 ")"
- COLONCOLON@4887..4889 "::"
- WHITESPACE@4889..4894 "\n "
- EXPR@4894..5018
- STMT_LOCAL@4894..4986
- LOCAL_KW@4894..4899 "local"
- WHITESPACE@4899..4900 " "
- BIND_DESTRUCT@4900..4985
- DESTRUCT_FULL@4900..4904
- NAME@4900..4904
- IDENT@4900..4904 "vars"
- WHITESPACE@4904..4905 " "
- ASSIGN@4905..4906 "="
- WHITESPACE@4906..4907 " "
- EXPR@4907..4985
- EXPR_ARRAY_COMP@4907..4985
- L_BRACK@4907..4908 "["
- EXPR@4908..4952
- EXPR_BINARY@4908..4952
- EXPR@4908..4917
- EXPR_STRING@4908..4917
- STRING_SINGLE@4908..4917 "'%s = %s'"
- WHITESPACE@4917..4918 " "
- MODULO@4918..4919 "%"
- WHITESPACE@4919..4920 " "
- EXPR@4920..4952
- EXPR_ARRAY@4920..4952
- L_BRACK@4920..4921 "["
- EXPR@4921..4922
- EXPR_VAR@4921..4922
- NAME@4921..4922
- IDENT@4921..4922 "k"
- COMMA@4922..4923 ","
- WHITESPACE@4923..4924 " "
- EXPR@4924..4951
- EXPR_VAR@4924..4927
- NAME@4924..4927
- IDENT@4924..4927 "std"
- SUFFIX_INDEX@4927..4942
- DOT@4927..4928 "."
- NAME@4928..4942
- IDENT@4928..4942 "manifestPython"
- SUFFIX_APPLY@4942..4951
- ARGS_DESC@4942..4951
- L_PAREN@4942..4943 "("
- ARG@4943..4950
- EXPR@4943..4950
- EXPR_VAR@4943..4947
- NAME@4943..4947
- IDENT@4943..4947 "conf"
- SUFFIX_INDEX_EXPR@4947..4950
- L_BRACK@4947..4948 "["
- EXPR@4948..4949
- EXPR_VAR@4948..4949
- NAME@4948..4949
- IDENT@4948..4949 "k"
- R_BRACK@4949..4950 "]"
- R_PAREN@4950..4951 ")"
- R_BRACK@4951..4952 "]"
- WHITESPACE@4952..4953 " "
- FOR_SPEC@4953..4984
- FOR_KW@4953..4956 "for"
- WHITESPACE@4956..4957 " "
- DESTRUCT_FULL@4957..4958
- NAME@4957..4958
- IDENT@4957..4958 "k"
- WHITESPACE@4958..4959 " "
- IN_KW@4959..4961 "in"
- WHITESPACE@4961..4962 " "
- EXPR@4962..4984
- EXPR_VAR@4962..4965
- NAME@4962..4965
- IDENT@4962..4965 "std"
- SUFFIX_INDEX@4965..4978
- DOT@4965..4966 "."
- NAME@4966..4978
- IDENT@4966..4978 "objectFields"
- SUFFIX_APPLY@4978..4984
- ARGS_DESC@4978..4984
- L_PAREN@4978..4979 "("
- ARG@4979..4983
- EXPR@4979..4983
- EXPR_VAR@4979..4983
- NAME@4979..4983
- IDENT@4979..4983 "conf"
- R_PAREN@4983..4984 ")"
- R_BRACK@4984..4985 "]"
- SEMI@4985..4986 ";"
- WHITESPACE@4986..4991 "\n "
- EXPR_VAR@4991..4994
- NAME@4991..4994
- IDENT@4991..4994 "std"
- SUFFIX_INDEX@4994..4999
- DOT@4994..4995 "."
- NAME@4995..4999
- IDENT@4995..4999 "join"
- SUFFIX_APPLY@4999..5018
- ARGS_DESC@4999..5018
- L_PAREN@4999..5000 "("
- ARG@5000..5004
- EXPR@5000..5004
- EXPR_STRING@5000..5004
- STRING_SINGLE@5000..5004 "'\\n'"
- COMMA@5004..5005 ","
- WHITESPACE@5005..5006 " "
- ARG@5006..5017
- EXPR@5006..5017
- EXPR_BINARY@5006..5017
- EXPR@5006..5010
- EXPR_VAR@5006..5010
- NAME@5006..5010
- IDENT@5006..5010 "vars"
- WHITESPACE@5010..5011 " "
- PLUS@5011..5012 "+"
- WHITESPACE@5012..5013 " "
- EXPR@5013..5017
- EXPR_ARRAY@5013..5017
- L_BRACK@5013..5014 "["
- EXPR@5014..5016
- EXPR_STRING@5014..5016
- STRING_SINGLE@5014..5016 "''"
- R_BRACK@5016..5017 "]"
- R_PAREN@5017..5018 ")"
- COMMA@5018..5019 ","
- WHITESPACE@5019..5023 "\n\n "
- MEMBER_FIELD_METHOD@5023..5690
- FIELD_NAME_FIXED@5023..5040
- NAME@5023..5040
- IDENT@5023..5040 "manifestXmlJsonml"
- PARAMS_DESC@5040..5047
- L_PAREN@5040..5041 "("
- PARAM@5041..5046
- DESTRUCT_FULL@5041..5046
- NAME@5041..5046
- IDENT@5041..5046 "value"
- R_PAREN@5046..5047 ")"
- COLONCOLON@5047..5049 "::"
- WHITESPACE@5049..5054 "\n "
- EXPR@5054..5690
- EXPR_IF_THEN_ELSE@5054..5690
- IF_KW@5054..5056 "if"
- WHITESPACE@5056..5057 " "
- EXPR@5057..5076
- EXPR_UNARY@5057..5076
- NOT@5057..5058 "!"
- EXPR_VAR@5058..5061
- NAME@5058..5061
- IDENT@5058..5061 "std"
- SUFFIX_INDEX@5061..5069
- DOT@5061..5062 "."
- NAME@5062..5069
- IDENT@5062..5069 "isArray"
- SUFFIX_APPLY@5069..5076
- ARGS_DESC@5069..5076
- L_PAREN@5069..5070 "("
- ARG@5070..5075
- EXPR@5070..5075
- EXPR_VAR@5070..5075
- NAME@5070..5075
- IDENT@5070..5075 "value"
- R_PAREN@5075..5076 ")"
- WHITESPACE@5076..5077 " "
- THEN_KW@5077..5081 "then"
- WHITESPACE@5081..5088 "\n "
- TRUE_EXPR@5088..5156
- EXPR@5088..5156
- EXPR_ERROR@5088..5156
- ERROR_KW@5088..5093 "error"
- WHITESPACE@5093..5094 " "
- EXPR@5094..5156
- EXPR_BINARY@5094..5156
- EXPR@5094..5138
- EXPR_STRING@5094..5138
- STRING_SINGLE@5094..5138 "'Expected a JSONML va ..."
- WHITESPACE@5138..5139 " "
- MODULO@5139..5140 "%"
- WHITESPACE@5140..5141 " "
- EXPR@5141..5156
- EXPR_VAR@5141..5144
- NAME@5141..5144
- IDENT@5141..5144 "std"
- SUFFIX_INDEX@5144..5149
- DOT@5144..5145 "."
- NAME@5145..5149
- IDENT@5145..5149 "type"
- SUFFIX_APPLY@5149..5156
- ARGS_DESC@5149..5156
- L_PAREN@5149..5150 "("
- ARG@5150..5155
- EXPR@5150..5155
- EXPR_VAR@5150..5155
- NAME@5150..5155
- IDENT@5150..5155 "value"
- R_PAREN@5155..5156 ")"
- WHITESPACE@5156..5161 "\n "
- ELSE_KW@5161..5165 "else"
- WHITESPACE@5165..5172 "\n "
- FALSE_EXPR@5172..5690
- EXPR@5172..5690
- STMT_LOCAL@5172..5672
- LOCAL_KW@5172..5177 "local"
- WHITESPACE@5177..5178 " "
- BIND_FUNCTION@5178..5671
- NAME@5178..5181
- IDENT@5178..5181 "aux"
- PARAMS_DESC@5181..5184
- L_PAREN@5181..5182 "("
- PARAM@5182..5183
- DESTRUCT_FULL@5182..5183
- NAME@5182..5183
- IDENT@5182..5183 "v"
- R_PAREN@5183..5184 ")"
- WHITESPACE@5184..5185 " "
- ASSIGN@5185..5186 "="
- WHITESPACE@5186..5195 "\n "
- EXPR@5195..5671
- EXPR_IF_THEN_ELSE@5195..5671
- IF_KW@5195..5197 "if"
- WHITESPACE@5197..5198 " "
- EXPR@5198..5213
- EXPR_VAR@5198..5201
- NAME@5198..5201
- IDENT@5198..5201 "std"
- SUFFIX_INDEX@5201..5210
- DOT@5201..5202 "."
- NAME@5202..5210
- IDENT@5202..5210 "isString"
- SUFFIX_APPLY@5210..5213
- ARGS_DESC@5210..5213
- L_PAREN@5210..5211 "("
- ARG@5211..5212
- EXPR@5211..5212
- EXPR_VAR@5211..5212
- NAME@5211..5212
- IDENT@5211..5212 "v"
- R_PAREN@5212..5213 ")"
- WHITESPACE@5213..5214 " "
- THEN_KW@5214..5218 "then"
- WHITESPACE@5218..5229 "\n "
- TRUE_EXPR@5229..5230
- EXPR@5229..5230
- EXPR_VAR@5229..5230
- NAME@5229..5230
- IDENT@5229..5230 "v"
- WHITESPACE@5230..5239 "\n "
- ELSE_KW@5239..5243 "else"
- WHITESPACE@5243..5254 "\n "
- FALSE_EXPR@5254..5671
- EXPR@5254..5671
- STMT_LOCAL@5254..5271
- LOCAL_KW@5254..5259 "local"
- WHITESPACE@5259..5260 " "
- BIND_DESTRUCT@5260..5270
- DESTRUCT_FULL@5260..5263
- NAME@5260..5263
- IDENT@5260..5263 "tag"
- WHITESPACE@5263..5264 " "
- ASSIGN@5264..5265 "="
- WHITESPACE@5265..5266 " "
- EXPR@5266..5270
- EXPR_VAR@5266..5267
- NAME@5266..5267
- IDENT@5266..5267 "v"
- SUFFIX_INDEX_EXPR@5267..5270
- L_BRACK@5267..5268 "["
- EXPR@5268..5269
- EXPR_NUMBER@5268..5269
- FLOAT@5268..5269 "0"
- R_BRACK@5269..5270 "]"
- SEMI@5270..5271 ";"
- WHITESPACE@5271..5282 "\n "
- STMT_LOCAL@5282..5340
- LOCAL_KW@5282..5287 "local"
- WHITESPACE@5287..5288 " "
- BIND_DESTRUCT@5288..5339
- DESTRUCT_FULL@5288..5297
- NAME@5288..5297
- IDENT@5288..5297 "has_attrs"
- WHITESPACE@5297..5298 " "
- ASSIGN@5298..5299 "="
- WHITESPACE@5299..5300 " "
- EXPR@5300..5339
- EXPR_BINARY@5300..5339
- EXPR@5300..5317
- EXPR_BINARY@5300..5317
- EXPR@5300..5303
- EXPR_VAR@5300..5303
- NAME@5300..5303
- IDENT@5300..5303 "std"
- SUFFIX_INDEX@5303..5310
- DOT@5303..5304 "."
- NAME@5304..5310
- IDENT@5304..5310 "length"
- SUFFIX_APPLY@5310..5313
- ARGS_DESC@5310..5313
- L_PAREN@5310..5311 "("
- ARG@5311..5312
- EXPR@5311..5312
- EXPR_VAR@5311..5312
- NAME@5311..5312
- IDENT@5311..5312 "v"
- R_PAREN@5312..5313 ")"
- WHITESPACE@5313..5314 " "
- GT@5314..5315 ">"
- WHITESPACE@5315..5316 " "
- EXPR@5316..5317
- EXPR_NUMBER@5316..5317
- FLOAT@5316..5317 "1"
- WHITESPACE@5317..5318 " "
- AND@5318..5320 "&&"
- WHITESPACE@5320..5321 " "
- EXPR@5321..5339
- EXPR_VAR@5321..5324
- NAME@5321..5324
- IDENT@5321..5324 "std"
- SUFFIX_INDEX@5324..5333
- DOT@5324..5325 "."
- NAME@5325..5333
- IDENT@5325..5333 "isObject"
- SUFFIX_APPLY@5333..5339
- ARGS_DESC@5333..5339
- L_PAREN@5333..5334 "("
- ARG@5334..5338
- EXPR@5334..5338
- EXPR_VAR@5334..5335
- NAME@5334..5335
- IDENT@5334..5335 "v"
- SUFFIX_INDEX_EXPR@5335..5338
- L_BRACK@5335..5336 "["
- EXPR@5336..5337
- EXPR_NUMBER@5336..5337
- FLOAT@5336..5337 "1"
- R_BRACK@5337..5338 "]"
- R_PAREN@5338..5339 ")"
- SEMI@5339..5340 ";"
- WHITESPACE@5340..5351 "\n "
- STMT_LOCAL@5351..5396
- LOCAL_KW@5351..5356 "local"
- WHITESPACE@5356..5357 " "
- BIND_DESTRUCT@5357..5395
- DESTRUCT_FULL@5357..5362
- NAME@5357..5362
- IDENT@5357..5362 "attrs"
- WHITESPACE@5362..5363 " "
- ASSIGN@5363..5364 "="
- WHITESPACE@5364..5365 " "
- EXPR@5365..5395
- EXPR_IF_THEN_ELSE@5365..5395
- IF_KW@5365..5367 "if"
- WHITESPACE@5367..5368 " "
- EXPR@5368..5377
- EXPR_VAR@5368..5377
- NAME@5368..5377
- IDENT@5368..5377 "has_attrs"
- WHITESPACE@5377..5378 " "
- THEN_KW@5378..5382 "then"
- WHITESPACE@5382..5383 " "
- TRUE_EXPR@5383..5387
- EXPR@5383..5387
- EXPR_VAR@5383..5384
- NAME@5383..5384
- IDENT@5383..5384 "v"
- SUFFIX_INDEX_EXPR@5384..5387
- L_BRACK@5384..5385 "["
- EXPR@5385..5386
- EXPR_NUMBER@5385..5386
- FLOAT@5385..5386 "1"
- R_BRACK@5386..5387 "]"
- WHITESPACE@5387..5388 " "
- ELSE_KW@5388..5392 "else"
- WHITESPACE@5392..5393 " "
- FALSE_EXPR@5393..5395
- EXPR@5393..5395
- EXPR_OBJECT@5393..5395
- OBJ_BODY_MEMBER_LIST@5393..5395
- L_BRACE@5393..5394 "{"
- R_BRACE@5394..5395 "}"
- SEMI@5395..5396 ";"
- WHITESPACE@5396..5407 "\n "
- STMT_LOCAL@5407..5459
- LOCAL_KW@5407..5412 "local"
- WHITESPACE@5412..5413 " "
- BIND_DESTRUCT@5413..5458
- DESTRUCT_FULL@5413..5421
- NAME@5413..5421
- IDENT@5413..5421 "children"
- WHITESPACE@5421..5422 " "
- ASSIGN@5422..5423 "="
- WHITESPACE@5423..5424 " "
- EXPR@5424..5458
- EXPR_IF_THEN_ELSE@5424..5458
- IF_KW@5424..5426 "if"
- WHITESPACE@5426..5427 " "
- EXPR@5427..5436
- EXPR_VAR@5427..5436
- NAME@5427..5436
- IDENT@5427..5436 "has_attrs"
- WHITESPACE@5436..5437 " "
- THEN_KW@5437..5441 "then"
- WHITESPACE@5441..5442 " "
- TRUE_EXPR@5442..5447
- EXPR@5442..5447
- EXPR_VAR@5442..5443
- NAME@5442..5443
- IDENT@5442..5443 "v"
- SUFFIX_SLICE@5443..5447
- SLICE_DESC@5443..5447
- L_BRACK@5443..5444 "["
- EXPR@5444..5445
- EXPR_NUMBER@5444..5445
- FLOAT@5444..5445 "2"
- COLON@5445..5446 ":"
- R_BRACK@5446..5447 "]"
- WHITESPACE@5447..5448 " "
- ELSE_KW@5448..5452 "else"
- WHITESPACE@5452..5453 " "
- FALSE_EXPR@5453..5458
- EXPR@5453..5458
- EXPR_VAR@5453..5454
- NAME@5453..5454
- IDENT@5453..5454 "v"
- SUFFIX_SLICE@5454..5458
- SLICE_DESC@5454..5458
- L_BRACK@5454..5455 "["
- EXPR@5455..5456
- EXPR_NUMBER@5455..5456
- FLOAT@5455..5456 "1"
- COLON@5456..5457 ":"
- R_BRACK@5457..5458 "]"
- SEMI@5458..5459 ";"
- WHITESPACE@5459..5470 "\n "
- STMT_LOCAL@5470..5576
- LOCAL_KW@5470..5475 "local"
- WHITESPACE@5475..5476 " "
- BIND_DESTRUCT@5476..5575
- DESTRUCT_FULL@5476..5485
- NAME@5476..5485
- IDENT@5476..5485 "attrs_str"
- WHITESPACE@5485..5486 " "
- ASSIGN@5486..5487 "="
- WHITESPACE@5487..5500 "\n "
- EXPR@5500..5575
- EXPR_VAR@5500..5503
- NAME@5500..5503
- IDENT@5500..5503 "std"
- SUFFIX_INDEX@5503..5508
- DOT@5503..5504 "."
- NAME@5504..5508
- IDENT@5504..5508 "join"
- SUFFIX_APPLY@5508..5575
- ARGS_DESC@5508..5575
- L_PAREN@5508..5509 "("
- ARG@5509..5511
- EXPR@5509..5511
- EXPR_STRING@5509..5511
- STRING_SINGLE@5509..5511 "''"
- COMMA@5511..5512 ","
- WHITESPACE@5512..5513 " "
- ARG@5513..5574
- EXPR@5513..5574
- EXPR_ARRAY_COMP@5513..5574
- L_BRACK@5513..5514 "["
- EXPR@5514..5540
- EXPR_BINARY@5514..5540
- EXPR@5514..5524
- EXPR_STRING@5514..5524
- STRING_SINGLE@5514..5524 "' %s=\"%s\"'"
- WHITESPACE@5524..5525 " "
- MODULO@5525..5526 "%"
- WHITESPACE@5526..5527 " "
- EXPR@5527..5540
- EXPR_ARRAY@5527..5540
- L_BRACK@5527..5528 "["
- EXPR@5528..5529
- EXPR_VAR@5528..5529
- NAME@5528..5529
- IDENT@5528..5529 "k"
- COMMA@5529..5530 ","
- WHITESPACE@5530..5531 " "
- EXPR@5531..5539
- EXPR_VAR@5531..5536
- NAME@5531..5536
- IDENT@5531..5536 "attrs"
- SUFFIX_INDEX_EXPR@5536..5539
- L_BRACK@5536..5537 "["
- EXPR@5537..5538
- EXPR_VAR@5537..5538
- NAME@5537..5538
- IDENT@5537..5538 "k"
- R_BRACK@5538..5539 "]"
- R_BRACK@5539..5540 "]"
- WHITESPACE@5540..5541 " "
- FOR_SPEC@5541..5573
- FOR_KW@5541..5544 "for"
- WHITESPACE@5544..5545 " "
- DESTRUCT_FULL@5545..5546
- NAME@5545..5546
- IDENT@5545..5546 "k"
- WHITESPACE@5546..5547 " "
- IN_KW@5547..5549 "in"
- WHITESPACE@5549..5550 " "
- EXPR@5550..5573
- EXPR_VAR@5550..5553
- NAME@5550..5553
- IDENT@5550..5553 "std"
- SUFFIX_INDEX@5553..5566
- DOT@5553..5554 "."
- NAME@5554..5566
- IDENT@5554..5566 "objectFields"
- SUFFIX_APPLY@5566..5573
- ARGS_DESC@5566..5573
- L_PAREN@5566..5567 "("
- ARG@5567..5572
- EXPR@5567..5572
- EXPR_VAR@5567..5572
- NAME@5567..5572
- IDENT@5567..5572 "attrs"
- R_PAREN@5572..5573 ")"
- R_BRACK@5573..5574 "]"
- R_PAREN@5574..5575 ")"
- SEMI@5575..5576 ";"
- WHITESPACE@5576..5587 "\n "
- EXPR_VAR@5587..5590
- NAME@5587..5590
- IDENT@5587..5590 "std"
- SUFFIX_INDEX@5590..5599
- DOT@5590..5591 "."
- NAME@5591..5599
- IDENT@5591..5599 "deepJoin"
- SUFFIX_APPLY@5599..5671
- ARGS_DESC@5599..5671
- L_PAREN@5599..5600 "("
- ARG@5600..5670
- EXPR@5600..5670
- EXPR_ARRAY@5600..5670
- L_BRACK@5600..5601 "["
- EXPR@5601..5604
- EXPR_STRING@5601..5604
- STRING_SINGLE@5601..5604 "'<'"
- COMMA@5604..5605 ","
- WHITESPACE@5605..5606 " "
- EXPR@5606..5609
- EXPR_VAR@5606..5609
- NAME@5606..5609
- IDENT@5606..5609 "tag"
- COMMA@5609..5610 ","
- WHITESPACE@5610..5611 " "
- EXPR@5611..5620
- EXPR_VAR@5611..5620
- NAME@5611..5620
- IDENT@5611..5620 "attrs_str"
- COMMA@5620..5621 ","
- WHITESPACE@5621..5622 " "
- EXPR@5622..5625
- EXPR_STRING@5622..5625
- STRING_SINGLE@5622..5625 "'>'"
- COMMA@5625..5626 ","
- WHITESPACE@5626..5627 " "
- EXPR@5627..5653
- EXPR_ARRAY_COMP@5627..5653
- L_BRACK@5627..5628 "["
- EXPR@5628..5634
- EXPR_VAR@5628..5631
- NAME@5628..5631
- IDENT@5628..5631 "aux"
- SUFFIX_APPLY@5631..5634
- ARGS_DESC@5631..5634
- L_PAREN@5631..5632 "("
- ARG@5632..5633
- EXPR@5632..5633
- EXPR_VAR@5632..5633
- NAME@5632..5633
- IDENT@5632..5633 "x"
- R_PAREN@5633..5634 ")"
- WHITESPACE@5634..5635 " "
- FOR_SPEC@5635..5652
- FOR_KW@5635..5638 "for"
- WHITESPACE@5638..5639 " "
- DESTRUCT_FULL@5639..5640
- NAME@5639..5640
- IDENT@5639..5640 "x"
- WHITESPACE@5640..5641 " "
- IN_KW@5641..5643 "in"
- WHITESPACE@5643..5644 " "
- EXPR@5644..5652
- EXPR_VAR@5644..5652
- NAME@5644..5652
- IDENT@5644..5652 "children"
- R_BRACK@5652..5653 "]"
- COMMA@5653..5654 ","
- WHITESPACE@5654..5655 " "
- EXPR@5655..5659
- EXPR_STRING@5655..5659
- STRING_SINGLE@5655..5659 "'</'"
- COMMA@5659..5660 ","
- WHITESPACE@5660..5661 " "
- EXPR@5661..5664
- EXPR_VAR@5661..5664
- NAME@5661..5664
- IDENT@5661..5664 "tag"
- COMMA@5664..5665 ","
- WHITESPACE@5665..5666 " "
- EXPR@5666..5669
- EXPR_STRING@5666..5669
- STRING_SINGLE@5666..5669 "'>'"
- R_BRACK@5669..5670 "]"
- R_PAREN@5670..5671 ")"
- SEMI@5671..5672 ";"
- WHITESPACE@5672..5680 "\n\n "
- EXPR_VAR@5680..5683
- NAME@5680..5683
- IDENT@5680..5683 "aux"
- SUFFIX_APPLY@5683..5690
- ARGS_DESC@5683..5690
- L_PAREN@5683..5684 "("
- ARG@5684..5689
- EXPR@5684..5689
- EXPR_VAR@5684..5689
- NAME@5684..5689
- IDENT@5684..5689 "value"
- R_PAREN@5689..5690 ")"
- COMMA@5690..5691 ","
- WHITESPACE@5691..5695 "\n\n "
- MEMBER_FIELD_METHOD@5695..6483
- FIELD_NAME_FIXED@5695..5705
- NAME@5695..5705
- IDENT@5695..5705 "mergePatch"
- PARAMS_DESC@5705..5720
- L_PAREN@5705..5706 "("
- PARAM@5706..5712
- DESTRUCT_FULL@5706..5712
- NAME@5706..5712
- IDENT@5706..5712 "target"
- COMMA@5712..5713 ","
- WHITESPACE@5713..5714 " "
- PARAM@5714..5719
- DESTRUCT_FULL@5714..5719
- NAME@5714..5719
- IDENT@5714..5719 "patch"
- R_PAREN@5719..5720 ")"
- COLONCOLON@5720..5722 "::"
- WHITESPACE@5722..5727 "\n "
- EXPR@5727..6483
- EXPR_IF_THEN_ELSE@5727..6483
- IF_KW@5727..5729 "if"
- WHITESPACE@5729..5730 " "
- EXPR@5730..5749
- EXPR_VAR@5730..5733
- NAME@5730..5733
- IDENT@5730..5733 "std"
- SUFFIX_INDEX@5733..5742
- DOT@5733..5734 "."
- NAME@5734..5742
- IDENT@5734..5742 "isObject"
- SUFFIX_APPLY@5742..5749
- ARGS_DESC@5742..5749
- L_PAREN@5742..5743 "("
- ARG@5743..5748
- EXPR@5743..5748
- EXPR_VAR@5743..5748
- NAME@5743..5748
- IDENT@5743..5748 "patch"
- R_PAREN@5748..5749 ")"
- WHITESPACE@5749..5750 " "
- THEN_KW@5750..5754 "then"
- WHITESPACE@5754..5761 "\n "
- TRUE_EXPR@5761..6462
- EXPR@5761..6462
- STMT_LOCAL@5761..5835
- LOCAL_KW@5761..5766 "local"
- WHITESPACE@5766..5767 " "
- BIND_DESTRUCT@5767..5834
- DESTRUCT_FULL@5767..5780
- NAME@5767..5780
- IDENT@5767..5780 "target_object"
- WHITESPACE@5780..5781 " "
- ASSIGN@5781..5782 "="
- WHITESPACE@5782..5791 "\n "
- EXPR@5791..5834
- EXPR_IF_THEN_ELSE@5791..5834
- IF_KW@5791..5793 "if"
- WHITESPACE@5793..5794 " "
- EXPR@5794..5814
- EXPR_VAR@5794..5797
- NAME@5794..5797
- IDENT@5794..5797 "std"
- SUFFIX_INDEX@5797..5806
- DOT@5797..5798 "."
- NAME@5798..5806
- IDENT@5798..5806 "isObject"
- SUFFIX_APPLY@5806..5814
- ARGS_DESC@5806..5814
- L_PAREN@5806..5807 "("
- ARG@5807..5813
- EXPR@5807..5813
- EXPR_VAR@5807..5813
- NAME@5807..5813
- IDENT@5807..5813 "target"
- R_PAREN@5813..5814 ")"
- WHITESPACE@5814..5815 " "
- THEN_KW@5815..5819 "then"
- WHITESPACE@5819..5820 " "
- TRUE_EXPR@5820..5826
- EXPR@5820..5826
- EXPR_VAR@5820..5826
- NAME@5820..5826
- IDENT@5820..5826 "target"
- WHITESPACE@5826..5827 " "
- ELSE_KW@5827..5831 "else"
- WHITESPACE@5831..5832 " "
- FALSE_EXPR@5832..5834
- EXPR@5832..5834
- EXPR_OBJECT@5832..5834
- OBJ_BODY_MEMBER_LIST@5832..5834
- L_BRACE@5832..5833 "{"
- R_BRACE@5833..5834 "}"
- SEMI@5834..5835 ";"
- WHITESPACE@5835..5843 "\n\n "
- STMT_LOCAL@5843..5949
- LOCAL_KW@5843..5848 "local"
- WHITESPACE@5848..5849 " "
- BIND_DESTRUCT@5849..5948
- DESTRUCT_FULL@5849..5862
- NAME@5849..5862
- IDENT@5849..5862 "target_fields"
- WHITESPACE@5862..5863 " "
- ASSIGN@5863..5864 "="
- WHITESPACE@5864..5873 "\n "
- EXPR@5873..5948
- EXPR_IF_THEN_ELSE@5873..5948
- IF_KW@5873..5875 "if"
- WHITESPACE@5875..5876 " "
- EXPR@5876..5903
- EXPR_VAR@5876..5879
- NAME@5876..5879
- IDENT@5876..5879 "std"
- SUFFIX_INDEX@5879..5888
- DOT@5879..5880 "."
- NAME@5880..5888
- IDENT@5880..5888 "isObject"
- SUFFIX_APPLY@5888..5903
- ARGS_DESC@5888..5903
- L_PAREN@5888..5889 "("
- ARG@5889..5902
- EXPR@5889..5902
- EXPR_VAR@5889..5902
- NAME@5889..5902
- IDENT@5889..5902 "target_object"
- R_PAREN@5902..5903 ")"
- WHITESPACE@5903..5904 " "
- THEN_KW@5904..5908 "then"
- WHITESPACE@5908..5909 " "
- TRUE_EXPR@5909..5940
- EXPR@5909..5940
- EXPR_VAR@5909..5912
- NAME@5909..5912
- IDENT@5909..5912 "std"
- SUFFIX_INDEX@5912..5925
- DOT@5912..5913 "."
- NAME@5913..5925
- IDENT@5913..5925 "objectFields"
- SUFFIX_APPLY@5925..5940
- ARGS_DESC@5925..5940
- L_PAREN@5925..5926 "("
- ARG@5926..5939
- EXPR@5926..5939
- EXPR_VAR@5926..5939
- NAME@5926..5939
- IDENT@5926..5939 "target_object"
- R_PAREN@5939..5940 ")"
- WHITESPACE@5940..5941 " "
- ELSE_KW@5941..5945 "else"
- WHITESPACE@5945..5946 " "
- FALSE_EXPR@5946..5948
- EXPR@5946..5948
- EXPR_ARRAY@5946..5948
- L_BRACK@5946..5947 "["
- R_BRACK@5947..5948 "]"
- SEMI@5948..5949 ";"
- WHITESPACE@5949..5957 "\n\n "
- STMT_LOCAL@5957..6034
- LOCAL_KW@5957..5962 "local"
- WHITESPACE@5962..5963 " "
- BIND_DESTRUCT@5963..6033
- DESTRUCT_FULL@5963..5974
- NAME@5963..5974
- IDENT@5963..5974 "null_fields"
- WHITESPACE@5974..5975 " "
- ASSIGN@5975..5976 "="
- WHITESPACE@5976..5977 " "
- EXPR@5977..6033
- EXPR_ARRAY_COMP@5977..6033
- L_BRACK@5977..5978 "["
- EXPR@5978..5979
- EXPR_VAR@5978..5979
- NAME@5978..5979
- IDENT@5978..5979 "k"
- WHITESPACE@5979..5980 " "
- FOR_SPEC@5980..6012
- FOR_KW@5980..5983 "for"
- WHITESPACE@5983..5984 " "
- DESTRUCT_FULL@5984..5985
- NAME@5984..5985
- IDENT@5984..5985 "k"
- WHITESPACE@5985..5986 " "
- IN_KW@5986..5988 "in"
- WHITESPACE@5988..5989 " "
- EXPR@5989..6012
- EXPR_VAR@5989..5992
- NAME@5989..5992
- IDENT@5989..5992 "std"
- SUFFIX_INDEX@5992..6005
- DOT@5992..5993 "."
- NAME@5993..6005
- IDENT@5993..6005 "objectFields"
- SUFFIX_APPLY@6005..6012
- ARGS_DESC@6005..6012
- L_PAREN@6005..6006 "("
- ARG@6006..6011
- EXPR@6006..6011
- EXPR_VAR@6006..6011
- NAME@6006..6011
- IDENT@6006..6011 "patch"
- R_PAREN@6011..6012 ")"
- WHITESPACE@6012..6013 " "
- IF_SPEC@6013..6032
- IF_KW@6013..6015 "if"
- WHITESPACE@6015..6016 " "
- EXPR@6016..6032
- EXPR_BINARY@6016..6032
- EXPR@6016..6021
- EXPR_VAR@6016..6021
- NAME@6016..6021
- IDENT@6016..6021 "patch"
- SUFFIX_INDEX_EXPR@6021..6024
- L_BRACK@6021..6022 "["
- EXPR@6022..6023
- EXPR_VAR@6022..6023
- NAME@6022..6023
- IDENT@6022..6023 "k"
- R_BRACK@6023..6024 "]"
- WHITESPACE@6024..6025 " "
- EQ@6025..6027 "=="
- WHITESPACE@6027..6028 " "
- EXPR@6028..6032
- EXPR_LITERAL@6028..6032
- NULL_KW@6028..6032 "null"
- R_BRACK@6032..6033 "]"
- SEMI@6033..6034 ";"
- WHITESPACE@6034..6041 "\n "
- STMT_LOCAL@6041..6114
- LOCAL_KW@6041..6046 "local"
- WHITESPACE@6046..6047 " "
- BIND_DESTRUCT@6047..6113
- DESTRUCT_FULL@6047..6058
- NAME@6047..6058
- IDENT@6047..6058 "both_fields"
- WHITESPACE@6058..6059 " "
- ASSIGN@6059..6060 "="
- WHITESPACE@6060..6061 " "
- EXPR@6061..6113
- EXPR_VAR@6061..6064
- NAME@6061..6064
- IDENT@6061..6064 "std"
- SUFFIX_INDEX@6064..6073
- DOT@6064..6065 "."
- NAME@6065..6073
- IDENT@6065..6073 "setUnion"
- SUFFIX_APPLY@6073..6113
- ARGS_DESC@6073..6113
- L_PAREN@6073..6074 "("
- ARG@6074..6087
- EXPR@6074..6087
- EXPR_VAR@6074..6087
- NAME@6074..6087
- IDENT@6074..6087 "target_fields"
- COMMA@6087..6088 ","
- WHITESPACE@6088..6089 " "
- ARG@6089..6112
- EXPR@6089..6112
- EXPR_VAR@6089..6092
- NAME@6089..6092
- IDENT@6089..6092 "std"
- SUFFIX_INDEX@6092..6105
- DOT@6092..6093 "."
- NAME@6093..6105
- IDENT@6093..6105 "objectFields"
- SUFFIX_APPLY@6105..6112
- ARGS_DESC@6105..6112
- L_PAREN@6105..6106 "("
- ARG@6106..6111
- EXPR@6106..6111
- EXPR_VAR@6106..6111
- NAME@6106..6111
- IDENT@6106..6111 "patch"
- R_PAREN@6111..6112 ")"
- R_PAREN@6112..6113 ")"
- SEMI@6113..6114 ";"
- WHITESPACE@6114..6122 "\n\n "
- EXPR_OBJECT@6122..6462
- OBJ_BODY_COMP@6122..6462
- L_BRACE@6122..6123 "{"
- WHITESPACE@6123..6132 "\n "
- MEMBER_FIELD_NORMAL@6132..6399
- FIELD_NAME_DYNAMIC@6132..6135
- L_BRACK@6132..6133 "["
- EXPR@6133..6134
- EXPR_VAR@6133..6134
- NAME@6133..6134
- IDENT@6133..6134 "k"
- R_BRACK@6134..6135 "]"
- COLON@6135..6136 ":"
- WHITESPACE@6136..6147 "\n "
- EXPR@6147..6399
- EXPR_IF_THEN_ELSE@6147..6399
- IF_KW@6147..6149 "if"
- WHITESPACE@6149..6150 " "
- EXPR@6150..6174
- EXPR_UNARY@6150..6174
- NOT@6150..6151 "!"
- EXPR_VAR@6151..6154
- NAME@6151..6154
- IDENT@6151..6154 "std"
- SUFFIX_INDEX@6154..6164
- DOT@6154..6155 "."
- NAME@6155..6164
- IDENT@6155..6164 "objectHas"
- SUFFIX_APPLY@6164..6174
- ARGS_DESC@6164..6174
- L_PAREN@6164..6165 "("
- ARG@6165..6170
- EXPR@6165..6170
- EXPR_VAR@6165..6170
- NAME@6165..6170
- IDENT@6165..6170 "patch"
- COMMA@6170..6171 ","
- WHITESPACE@6171..6172 " "
- ARG@6172..6173
- EXPR@6172..6173
- EXPR_VAR@6172..6173
- NAME@6172..6173
- IDENT@6172..6173 "k"
- R_PAREN@6173..6174 ")"
- WHITESPACE@6174..6175 " "
- THEN_KW@6175..6179 "then"
- WHITESPACE@6179..6192 "\n "
- TRUE_EXPR@6192..6208
- EXPR@6192..6208
- EXPR_VAR@6192..6205
- NAME@6192..6205
- IDENT@6192..6205 "target_object"
- SUFFIX_INDEX_EXPR@6205..6208
- L_BRACK@6205..6206 "["
- EXPR@6206..6207
- EXPR_VAR@6206..6207
- NAME@6206..6207
- IDENT@6206..6207 "k"
- R_BRACK@6207..6208 "]"
- WHITESPACE@6208..6219 "\n "
- ELSE_KW@6219..6223 "else"
- WHITESPACE@6223..6224 " "
- FALSE_EXPR@6224..6399
- EXPR@6224..6399
- EXPR_IF_THEN_ELSE@6224..6399
- IF_KW@6224..6226 "if"
- WHITESPACE@6226..6227 " "
- EXPR@6227..6259
- EXPR_UNARY@6227..6259
- NOT@6227..6228 "!"
- EXPR_VAR@6228..6231
- NAME@6228..6231
- IDENT@6228..6231 "std"
- SUFFIX_INDEX@6231..6241
- DOT@6231..6232 "."
- NAME@6232..6241
- IDENT@6232..6241 "objectHas"
- SUFFIX_APPLY@6241..6259
- ARGS_DESC@6241..6259
- L_PAREN@6241..6242 "("
- ARG@6242..6255
- EXPR@6242..6255
- EXPR_VAR@6242..6255
- NAME@6242..6255
- IDENT@6242..6255 "target_object"
- COMMA@6255..6256 ","
- WHITESPACE@6256..6257 " "
- ARG@6257..6258
- EXPR@6257..6258
- EXPR_VAR@6257..6258
- NAME@6257..6258
- IDENT@6257..6258 "k"
- R_PAREN@6258..6259 ")"
- WHITESPACE@6259..6260 " "
- THEN_KW@6260..6264 "then"
- WHITESPACE@6264..6277 "\n "
- TRUE_EXPR@6277..6318
- EXPR@6277..6318
- EXPR_VAR@6277..6280
- NAME@6277..6280
- IDENT@6277..6280 "std"
- SUFFIX_INDEX@6280..6291
- DOT@6280..6281 "."
- NAME@6281..6291
- IDENT@6281..6291 "mergePatch"
- SUFFIX_APPLY@6291..6318
- ARGS_DESC@6291..6318
- L_PAREN@6291..6292 "("
- ARG@6292..6296
- EXPR@6292..6296
- EXPR_LITERAL@6292..6296
- NULL_KW@6292..6296 "null"
- COMMA@6296..6297 ","
- WHITESPACE@6297..6298 " "
- ARG@6298..6306
- EXPR@6298..6306
- EXPR_VAR@6298..6303
- NAME@6298..6303
- IDENT@6298..6303 "patch"
- SUFFIX_INDEX_EXPR@6303..6306
- L_BRACK@6303..6304 "["
- EXPR@6304..6305
- EXPR_VAR@6304..6305
- NAME@6304..6305
- IDENT@6304..6305 "k"
- R_BRACK@6305..6306 "]"
- R_PAREN@6306..6307 ")"
- WHITESPACE@6307..6308 " "
- TAILSTRICT_KW@6308..6318 "tailstrict"
- WHITESPACE@6318..6329 "\n "
- ELSE_KW@6329..6333 "else"
- WHITESPACE@6333..6346 "\n "
- FALSE_EXPR@6346..6399
- EXPR@6346..6399
- EXPR_VAR@6346..6349
- NAME@6346..6349
- IDENT@6346..6349 "std"
- SUFFIX_INDEX@6349..6360
- DOT@6349..6350 "."
- NAME@6350..6360
- IDENT@6350..6360 "mergePatch"
- SUFFIX_APPLY@6360..6399
- ARGS_DESC@6360..6399
- L_PAREN@6360..6361 "("
- ARG@6361..6377
- EXPR@6361..6377
- EXPR_VAR@6361..6374
- NAME@6361..6374
- IDENT@6361..6374 "target_object"
- SUFFIX_INDEX_EXPR@6374..6377
- L_BRACK@6374..6375 "["
- EXPR@6375..6376
- EXPR_VAR@6375..6376
- NAME@6375..6376
- IDENT@6375..6376 "k"
- R_BRACK@6376..6377 "]"
- COMMA@6377..6378 ","
- WHITESPACE@6378..6379 " "
- ARG@6379..6387
- EXPR@6379..6387
- EXPR_VAR@6379..6384
- NAME@6379..6384
- IDENT@6379..6384 "patch"
- SUFFIX_INDEX_EXPR@6384..6387
- L_BRACK@6384..6385 "["
- EXPR@6385..6386
- EXPR_VAR@6385..6386
- NAME@6385..6386
- IDENT@6385..6386 "k"
- R_BRACK@6386..6387 "]"
- R_PAREN@6387..6388 ")"
- WHITESPACE@6388..6389 " "
- TAILSTRICT_KW@6389..6399 "tailstrict"
- WHITESPACE@6399..6408 "\n "
- FOR_SPEC@6408..6454
- FOR_KW@6408..6411 "for"
- WHITESPACE@6411..6412 " "
- DESTRUCT_FULL@6412..6413
- NAME@6412..6413
- IDENT@6412..6413 "k"
- WHITESPACE@6413..6414 " "
- IN_KW@6414..6416 "in"
- WHITESPACE@6416..6417 " "
- EXPR@6417..6454
- EXPR_VAR@6417..6420
- NAME@6417..6420
- IDENT@6417..6420 "std"
- SUFFIX_INDEX@6420..6428
- DOT@6420..6421 "."
- NAME@6421..6428
- IDENT@6421..6428 "setDiff"
- SUFFIX_APPLY@6428..6454
- ARGS_DESC@6428..6454
- L_PAREN@6428..6429 "("
- ARG@6429..6440
- EXPR@6429..6440
- EXPR_VAR@6429..6440
- NAME@6429..6440
- IDENT@6429..6440 "both_fields"
- COMMA@6440..6441 ","
- WHITESPACE@6441..6442 " "
- ARG@6442..6453
- EXPR@6442..6453
- EXPR_VAR@6442..6453
- NAME@6442..6453
- IDENT@6442..6453 "null_fields"
- R_PAREN@6453..6454 ")"
- WHITESPACE@6454..6461 "\n "
- R_BRACE@6461..6462 "}"
- WHITESPACE@6462..6467 "\n "
- ELSE_KW@6467..6471 "else"
- WHITESPACE@6471..6478 "\n "
- FALSE_EXPR@6478..6483
- EXPR@6478..6483
- EXPR_VAR@6478..6483
- NAME@6478..6483
- IDENT@6478..6483 "patch"
- COMMA@6483..6484 ","
- WHITESPACE@6484..6488 "\n\n "
- MEMBER_FIELD_METHOD@6488..6594
- FIELD_NAME_FIXED@6488..6491
- NAME@6488..6491
- IDENT@6488..6491 "get"
- PARAMS_DESC@6491..6528
- L_PAREN@6491..6492 "("
- PARAM@6492..6493
- DESTRUCT_FULL@6492..6493
- NAME@6492..6493
- IDENT@6492..6493 "o"
- COMMA@6493..6494 ","
- WHITESPACE@6494..6495 " "
- PARAM@6495..6496
- DESTRUCT_FULL@6495..6496
- NAME@6495..6496
- IDENT@6495..6496 "f"
- COMMA@6496..6497 ","
- WHITESPACE@6497..6498 " "
- PARAM@6498..6510
- DESTRUCT_FULL@6498..6505
- NAME@6498..6505
- IDENT@6498..6505 "default"
- ASSIGN@6505..6506 "="
- EXPR@6506..6510
- EXPR_LITERAL@6506..6510
- NULL_KW@6506..6510 "null"
- COMMA@6510..6511 ","
- WHITESPACE@6511..6512 " "
- PARAM@6512..6527
- DESTRUCT_FULL@6512..6522
- NAME@6512..6522
- IDENT@6512..6522 "inc_hidden"
- ASSIGN@6522..6523 "="
- EXPR@6523..6527
- EXPR_LITERAL@6523..6527
- TRUE_KW@6523..6527 "true"
- R_PAREN@6527..6528 ")"
- COLONCOLON@6528..6530 "::"
- WHITESPACE@6530..6535 "\n "
- EXPR@6535..6594
- EXPR_IF_THEN_ELSE@6535..6594
- IF_KW@6535..6537 "if"
- WHITESPACE@6537..6538 " "
- EXPR@6538..6571
- EXPR_VAR@6538..6541
- NAME@6538..6541
- IDENT@6538..6541 "std"
- SUFFIX_INDEX@6541..6553
- DOT@6541..6542 "."
- NAME@6542..6553
- IDENT@6542..6553 "objectHasEx"
- SUFFIX_APPLY@6553..6571
- ARGS_DESC@6553..6571
- L_PAREN@6553..6554 "("
- ARG@6554..6555
- EXPR@6554..6555
- EXPR_VAR@6554..6555
- NAME@6554..6555
- IDENT@6554..6555 "o"
- COMMA@6555..6556 ","
- WHITESPACE@6556..6557 " "
- ARG@6557..6558
- EXPR@6557..6558
- EXPR_VAR@6557..6558
- NAME@6557..6558
- IDENT@6557..6558 "f"
- COMMA@6558..6559 ","
- WHITESPACE@6559..6560 " "
- ARG@6560..6570
- EXPR@6560..6570
- EXPR_VAR@6560..6570
- NAME@6560..6570
- IDENT@6560..6570 "inc_hidden"
- R_PAREN@6570..6571 ")"
- WHITESPACE@6571..6572 " "
- THEN_KW@6572..6576 "then"
- WHITESPACE@6576..6577 " "
- TRUE_EXPR@6577..6581
- EXPR@6577..6581
- EXPR_VAR@6577..6578
- NAME@6577..6578
- IDENT@6577..6578 "o"
- SUFFIX_INDEX_EXPR@6578..6581
- L_BRACK@6578..6579 "["
- EXPR@6579..6580
- EXPR_VAR@6579..6580
- NAME@6579..6580
- IDENT@6579..6580 "f"
- R_BRACK@6580..6581 "]"
- WHITESPACE@6581..6582 " "
- ELSE_KW@6582..6586 "else"
- WHITESPACE@6586..6587 " "
- FALSE_EXPR@6587..6594
- EXPR@6587..6594
- EXPR_VAR@6587..6594
- NAME@6587..6594
- IDENT@6587..6594 "default"
- COMMA@6594..6595 ","
- WHITESPACE@6595..6599 "\n\n "
- MEMBER_FIELD_METHOD@6599..6733
- FIELD_NAME_FIXED@6599..6610
- NAME@6599..6610
- IDENT@6599..6610 "resolvePath"
- PARAMS_DESC@6610..6616
- L_PAREN@6610..6611 "("
- PARAM@6611..6612
- DESTRUCT_FULL@6611..6612
- NAME@6611..6612
- IDENT@6611..6612 "f"
- COMMA@6612..6613 ","
- WHITESPACE@6613..6614 " "
- PARAM@6614..6615
- DESTRUCT_FULL@6614..6615
- NAME@6614..6615
- IDENT@6614..6615 "r"
- R_PAREN@6615..6616 ")"
- COLONCOLON@6616..6618 "::"
- WHITESPACE@6618..6623 "\n "
- EXPR@6623..6733
- STMT_LOCAL@6623..6653
- LOCAL_KW@6623..6628 "local"
- WHITESPACE@6628..6629 " "
- BIND_DESTRUCT@6629..6652
- DESTRUCT_FULL@6629..6632
- NAME@6629..6632
- IDENT@6629..6632 "arr"
- WHITESPACE@6632..6633 " "
- ASSIGN@6633..6634 "="
- WHITESPACE@6634..6635 " "
- EXPR@6635..6652
- EXPR_VAR@6635..6638
- NAME@6635..6638
- IDENT@6635..6638 "std"
- SUFFIX_INDEX@6638..6644
- DOT@6638..6639 "."
- NAME@6639..6644
- IDENT@6639..6644 "split"
- SUFFIX_APPLY@6644..6652
- ARGS_DESC@6644..6652
- L_PAREN@6644..6645 "("
- ARG@6645..6646
- EXPR@6645..6646
- EXPR_VAR@6645..6646
- NAME@6645..6646
- IDENT@6645..6646 "f"
- COMMA@6646..6647 ","
- WHITESPACE@6647..6648 " "
- ARG@6648..6651
- EXPR@6648..6651
- EXPR_STRING@6648..6651
- STRING_SINGLE@6648..6651 "'/'"
- R_PAREN@6651..6652 ")"
- SEMI@6652..6653 ";"
- WHITESPACE@6653..6658 "\n "
- EXPR_VAR@6658..6661
- NAME@6658..6661
- IDENT@6658..6661 "std"
- SUFFIX_INDEX@6661..6666
- DOT@6661..6662 "."
- NAME@6662..6666
- IDENT@6662..6666 "join"
- SUFFIX_APPLY@6666..6733
- ARGS_DESC@6666..6733
- L_PAREN@6666..6667 "("
- ARG@6667..6670
- EXPR@6667..6670
- EXPR_STRING@6667..6670
- STRING_SINGLE@6667..6670 "'/'"
- COMMA@6670..6671 ","
- WHITESPACE@6671..6672 " "
- ARG@6672..6732
- EXPR@6672..6732
- EXPR_BINARY@6672..6732
- EXPR@6672..6675
- EXPR_VAR@6672..6675
- NAME@6672..6675
- IDENT@6672..6675 "std"
- SUFFIX_INDEX@6675..6685
- DOT@6675..6676 "."
- NAME@6676..6685
- IDENT@6676..6685 "makeArray"
- SUFFIX_APPLY@6685..6726
- ARGS_DESC@6685..6726
- L_PAREN@6685..6686 "("
- ARG@6686..6705
- EXPR@6686..6705
- EXPR_BINARY@6686..6705
- EXPR@6686..6689
- EXPR_VAR@6686..6689
- NAME@6686..6689
- IDENT@6686..6689 "std"
- SUFFIX_INDEX@6689..6696
- DOT@6689..6690 "."
- NAME@6690..6696
- IDENT@6690..6696 "length"
- SUFFIX_APPLY@6696..6701
- ARGS_DESC@6696..6701
- L_PAREN@6696..6697 "("
- ARG@6697..6700
- EXPR@6697..6700
- EXPR_VAR@6697..6700
- NAME@6697..6700
- IDENT@6697..6700 "arr"
- R_PAREN@6700..6701 ")"
- WHITESPACE@6701..6702 " "
- MINUS@6702..6703 "-"
- WHITESPACE@6703..6704 " "
- EXPR@6704..6705
- EXPR_NUMBER@6704..6705
- FLOAT@6704..6705 "1"
- COMMA@6705..6706 ","
- WHITESPACE@6706..6707 " "
- ARG@6707..6725
- EXPR@6707..6725
- EXPR_FUNCTION@6707..6725
- FUNCTION_KW@6707..6715 "function"
- PARAMS_DESC@6715..6718
- L_PAREN@6715..6716 "("
- PARAM@6716..6717
- DESTRUCT_FULL@6716..6717
- NAME@6716..6717
- IDENT@6716..6717 "i"
- R_PAREN@6717..6718 ")"
- WHITESPACE@6718..6719 " "
- EXPR@6719..6725
- EXPR_VAR@6719..6722
- NAME@6719..6722
- IDENT@6719..6722 "arr"
- SUFFIX_INDEX_EXPR@6722..6725
- L_BRACK@6722..6723 "["
- EXPR@6723..6724
- EXPR_VAR@6723..6724
- NAME@6723..6724
- IDENT@6723..6724 "i"
- R_BRACK@6724..6725 "]"
- R_PAREN@6725..6726 ")"
- WHITESPACE@6726..6727 " "
- PLUS@6727..6728 "+"
- WHITESPACE@6728..6729 " "
- EXPR@6729..6732
- EXPR_ARRAY@6729..6732
- L_BRACK@6729..6730 "["
- EXPR@6730..6731
- EXPR_VAR@6730..6731
- NAME@6730..6731
- IDENT@6730..6731 "r"
- R_BRACK@6731..6732 "]"
- R_PAREN@6732..6733 ")"
- COMMA@6733..6734 ","
- WHITESPACE@6734..6738 "\n\n "
- MEMBER_FIELD_METHOD@6738..7191
- FIELD_NAME_FIXED@6738..6743
- NAME@6738..6743
- IDENT@6738..6743 "prune"
- PARAMS_DESC@6743..6746
- L_PAREN@6743..6744 "("
- PARAM@6744..6745
- DESTRUCT_FULL@6744..6745
- NAME@6744..6745
- IDENT@6744..6745 "a"
- R_PAREN@6745..6746 ")"
- COLONCOLON@6746..6748 "::"
- WHITESPACE@6748..6753 "\n "
- EXPR@6753..7191
- STMT_LOCAL@6753..6957
- LOCAL_KW@6753..6758 "local"
- WHITESPACE@6758..6759 " "
- BIND_FUNCTION@6759..6956
- NAME@6759..6768
- IDENT@6759..6768 "isContent"
- PARAMS_DESC@6768..6771
- L_PAREN@6768..6769 "("
- PARAM@6769..6770
- DESTRUCT_FULL@6769..6770
- NAME@6769..6770
- IDENT@6769..6770 "b"
- R_PAREN@6770..6771 ")"
- WHITESPACE@6771..6772 " "
- ASSIGN@6772..6773 "="
- WHITESPACE@6773..6780 "\n "
- EXPR@6780..6956
- EXPR_IF_THEN_ELSE@6780..6956
- IF_KW@6780..6782 "if"
- WHITESPACE@6782..6783 " "
- EXPR@6783..6792
- EXPR_BINARY@6783..6792
- EXPR@6783..6784
- EXPR_VAR@6783..6784
- NAME@6783..6784
- IDENT@6783..6784 "b"
- WHITESPACE@6784..6785 " "
- EQ@6785..6787 "=="
- WHITESPACE@6787..6788 " "
- EXPR@6788..6792
- EXPR_LITERAL@6788..6792
- NULL_KW@6788..6792 "null"
- WHITESPACE@6792..6793 " "
- THEN_KW@6793..6797 "then"
- WHITESPACE@6797..6806 "\n "
- TRUE_EXPR@6806..6811
- EXPR@6806..6811
- EXPR_LITERAL@6806..6811
- FALSE_KW@6806..6811 "false"
- WHITESPACE@6811..6818 "\n "
- ELSE_KW@6818..6822 "else"
- WHITESPACE@6822..6823 " "
- FALSE_EXPR@6823..6956
- EXPR@6823..6956
- EXPR_IF_THEN_ELSE@6823..6956
- IF_KW@6823..6825 "if"
- WHITESPACE@6825..6826 " "
- EXPR@6826..6840
- EXPR_VAR@6826..6829
- NAME@6826..6829
- IDENT@6826..6829 "std"
- SUFFIX_INDEX@6829..6837
- DOT@6829..6830 "."
- NAME@6830..6837
- IDENT@6830..6837 "isArray"
- SUFFIX_APPLY@6837..6840
- ARGS_DESC@6837..6840
- L_PAREN@6837..6838 "("
- ARG@6838..6839
- EXPR@6838..6839
- EXPR_VAR@6838..6839
- NAME@6838..6839
- IDENT@6838..6839 "b"
- R_PAREN@6839..6840 ")"
- WHITESPACE@6840..6841 " "
- THEN_KW@6841..6845 "then"
- WHITESPACE@6845..6854 "\n "
- TRUE_EXPR@6854..6871
- EXPR@6854..6871
- EXPR_BINARY@6854..6871
- EXPR@6854..6857
- EXPR_VAR@6854..6857
- NAME@6854..6857
- IDENT@6854..6857 "std"
- SUFFIX_INDEX@6857..6864
- DOT@6857..6858 "."
- NAME@6858..6864
- IDENT@6858..6864 "length"
- SUFFIX_APPLY@6864..6867
- ARGS_DESC@6864..6867
- L_PAREN@6864..6865 "("
- ARG@6865..6866
- EXPR@6865..6866
- EXPR_VAR@6865..6866
- NAME@6865..6866
- IDENT@6865..6866 "b"
- R_PAREN@6866..6867 ")"
- WHITESPACE@6867..6868 " "
- GT@6868..6869 ">"
- WHITESPACE@6869..6870 " "
- EXPR@6870..6871
- EXPR_NUMBER@6870..6871
- FLOAT@6870..6871 "0"
- WHITESPACE@6871..6878 "\n "
- ELSE_KW@6878..6882 "else"
- WHITESPACE@6882..6883 " "
- FALSE_EXPR@6883..6956
- EXPR@6883..6956
- EXPR_IF_THEN_ELSE@6883..6956
- IF_KW@6883..6885 "if"
- WHITESPACE@6885..6886 " "
- EXPR@6886..6901
- EXPR_VAR@6886..6889
- NAME@6886..6889
- IDENT@6886..6889 "std"
- SUFFIX_INDEX@6889..6898
- DOT@6889..6890 "."
- NAME@6890..6898
- IDENT@6890..6898 "isObject"
- SUFFIX_APPLY@6898..6901
- ARGS_DESC@6898..6901
- L_PAREN@6898..6899 "("
- ARG@6899..6900
- EXPR@6899..6900
- EXPR_VAR@6899..6900
- NAME@6899..6900
- IDENT@6899..6900 "b"
- R_PAREN@6900..6901 ")"
- WHITESPACE@6901..6902 " "
- THEN_KW@6902..6906 "then"
- WHITESPACE@6906..6915 "\n "
- TRUE_EXPR@6915..6932
- EXPR@6915..6932
- EXPR_BINARY@6915..6932
- EXPR@6915..6918
- EXPR_VAR@6915..6918
- NAME@6915..6918
- IDENT@6915..6918 "std"
- SUFFIX_INDEX@6918..6925
- DOT@6918..6919 "."
- NAME@6919..6925
- IDENT@6919..6925 "length"
- SUFFIX_APPLY@6925..6928
- ARGS_DESC@6925..6928
- L_PAREN@6925..6926 "("
- ARG@6926..6927
- EXPR@6926..6927
- EXPR_VAR@6926..6927
- NAME@6926..6927
- IDENT@6926..6927 "b"
- R_PAREN@6927..6928 ")"
- WHITESPACE@6928..6929 " "
- GT@6929..6930 ">"
- WHITESPACE@6930..6931 " "
- EXPR@6931..6932
- EXPR_NUMBER@6931..6932
- FLOAT@6931..6932 "0"
- WHITESPACE@6932..6939 "\n "
- ELSE_KW@6939..6943 "else"
- WHITESPACE@6943..6952 "\n "
- FALSE_EXPR@6952..6956
- EXPR@6952..6956
- EXPR_LITERAL@6952..6956
- TRUE_KW@6952..6956 "true"
- SEMI@6956..6957 ";"
- WHITESPACE@6957..6962 "\n "
- EXPR_IF_THEN_ELSE@6962..7191
- IF_KW@6962..6964 "if"
- WHITESPACE@6964..6965 " "
- EXPR@6965..6979
- EXPR_VAR@6965..6968
- NAME@6965..6968
- IDENT@6965..6968 "std"
- SUFFIX_INDEX@6968..6976
- DOT@6968..6969 "."
- NAME@6969..6976
- IDENT@6969..6976 "isArray"
- SUFFIX_APPLY@6976..6979
- ARGS_DESC@6976..6979
- L_PAREN@6976..6977 "("
- ARG@6977..6978
- EXPR@6977..6978
- EXPR_VAR@6977..6978
- NAME@6977..6978
- IDENT@6977..6978 "a"
- R_PAREN@6978..6979 ")"
- WHITESPACE@6979..6980 " "
- THEN_KW@6980..6984 "then"
- WHITESPACE@6984..6991 "\n "
- TRUE_EXPR@6991..7041
- EXPR@6991..7041
- EXPR_ARRAY_COMP@6991..7041
- L_BRACK@6991..6992 "["
- EXPR@6992..7004
- EXPR_VAR@6992..6995
- NAME@6992..6995
- IDENT@6992..6995 "std"
- SUFFIX_INDEX@6995..7001
- DOT@6995..6996 "."
- NAME@6996..7001
- IDENT@6996..7001 "prune"
- SUFFIX_APPLY@7001..7004
- ARGS_DESC@7001..7004
- L_PAREN@7001..7002 "("
- ARG@7002..7003
- EXPR@7002..7003
- EXPR_VAR@7002..7003
- NAME@7002..7003
- IDENT@7002..7003 "x"
- R_PAREN@7003..7004 ")"
- WHITESPACE@7004..7005 " "
- FOR_SPEC@7005..7015
- FOR_KW@7005..7008 "for"
- WHITESPACE@7008..7009 " "
- DESTRUCT_FULL@7009..7010
- NAME@7009..7010
- IDENT@7009..7010 "x"
- WHITESPACE@7010..7011 " "
- IN_KW@7011..7013 "in"
- WHITESPACE@7013..7014 " "
- EXPR@7014..7015
- EXPR_VAR@7014..7015
- NAME@7014..7015
- IDENT@7014..7015 "a"
- WHITESPACE@7015..7016 " "
- IF_SPEC@7016..7040
- IF_KW@7016..7018 "if"
- WHITESPACE@7018..7019 " "
- EXPR@7019..7040
- EXPR_VAR@7019..7028
- NAME@7019..7028
- IDENT@7019..7028 "isContent"
- SUFFIX_APPLY@7028..7040
- ARGS_DESC@7028..7040
- L_PAREN@7028..7029 "("
- ARG@7029..7039
- EXPR@7029..7039
- EXPR_LITERAL@7029..7030
- DOLLAR@7029..7030 "$"
- SUFFIX_INDEX@7030..7036
- DOT@7030..7031 "."
- NAME@7031..7036
- IDENT@7031..7036 "prune"
- SUFFIX_APPLY@7036..7039
- ARGS_DESC@7036..7039
- L_PAREN@7036..7037 "("
- ARG@7037..7038
- EXPR@7037..7038
- EXPR_VAR@7037..7038
- NAME@7037..7038
- IDENT@7037..7038 "x"
- R_PAREN@7038..7039 ")"
- R_PAREN@7039..7040 ")"
- R_BRACK@7040..7041 "]"
- WHITESPACE@7041..7046 "\n "
- ELSE_KW@7046..7050 "else"
- WHITESPACE@7050..7051 " "
- FALSE_EXPR@7051..7191
- EXPR@7051..7191
- EXPR_IF_THEN_ELSE@7051..7191
- IF_KW@7051..7053 "if"
- WHITESPACE@7053..7054 " "
- EXPR@7054..7069
- EXPR_VAR@7054..7057
- NAME@7054..7057
- IDENT@7054..7057 "std"
- SUFFIX_INDEX@7057..7066
- DOT@7057..7058 "."
- NAME@7058..7066
- IDENT@7058..7066 "isObject"
- SUFFIX_APPLY@7066..7069
- ARGS_DESC@7066..7069
- L_PAREN@7066..7067 "("
- ARG@7067..7068
- EXPR@7067..7068
- EXPR_VAR@7067..7068
- NAME@7067..7068
- IDENT@7067..7068 "a"
- R_PAREN@7068..7069 ")"
- WHITESPACE@7069..7070 " "
- THEN_KW@7070..7074 "then"
- WHITESPACE@7074..7075 " "
- TRUE_EXPR@7075..7178
- EXPR@7075..7178
- EXPR_OBJECT@7075..7178
- OBJ_BODY_COMP@7075..7178
- L_BRACE@7075..7076 "{"
- WHITESPACE@7076..7083 "\n "
- MEMBER_FIELD_NORMAL@7083..7101
- FIELD_NAME_DYNAMIC@7083..7086
- L_BRACK@7083..7084 "["
- EXPR@7084..7085
- EXPR_VAR@7084..7085
- NAME@7084..7085
- IDENT@7084..7085 "x"
- R_BRACK@7085..7086 "]"
- COLON@7086..7087 ":"
- WHITESPACE@7087..7088 " "
- EXPR@7088..7101
- EXPR_LITERAL@7088..7089
- DOLLAR@7088..7089 "$"
- SUFFIX_INDEX@7089..7095
- DOT@7089..7090 "."
- NAME@7090..7095
- IDENT@7090..7095 "prune"
- SUFFIX_APPLY@7095..7101
- ARGS_DESC@7095..7101
- L_PAREN@7095..7096 "("
- ARG@7096..7100
- EXPR@7096..7100
- EXPR_VAR@7096..7097
- NAME@7096..7097
- IDENT@7096..7097 "a"
- SUFFIX_INDEX_EXPR@7097..7100
- L_BRACK@7097..7098 "["
- EXPR@7098..7099
- EXPR_VAR@7098..7099
- NAME@7098..7099
- IDENT@7098..7099 "x"
- R_BRACK@7099..7100 "]"
- R_PAREN@7100..7101 ")"
- WHITESPACE@7101..7108 "\n "
- FOR_SPEC@7108..7136
- FOR_KW@7108..7111 "for"
- WHITESPACE@7111..7112 " "
- DESTRUCT_FULL@7112..7113
- NAME@7112..7113
- IDENT@7112..7113 "x"
- WHITESPACE@7113..7114 " "
- IN_KW@7114..7116 "in"
- WHITESPACE@7116..7117 " "
- EXPR@7117..7136
- EXPR_VAR@7117..7120
- NAME@7117..7120
- IDENT@7117..7120 "std"
- SUFFIX_INDEX@7120..7133
- DOT@7120..7121 "."
- NAME@7121..7133
- IDENT@7121..7133 "objectFields"
- SUFFIX_APPLY@7133..7136
- ARGS_DESC@7133..7136
- L_PAREN@7133..7134 "("
- ARG@7134..7135
- EXPR@7134..7135
- EXPR_VAR@7134..7135
- NAME@7134..7135
- IDENT@7134..7135 "a"
- R_PAREN@7135..7136 ")"
- WHITESPACE@7136..7143 "\n "
- IF_SPEC@7143..7172
- IF_KW@7143..7145 "if"
- WHITESPACE@7145..7146 " "
- EXPR@7146..7172
- EXPR_VAR@7146..7155
- NAME@7146..7155
- IDENT@7146..7155 "isContent"
- SUFFIX_APPLY@7155..7172
- ARGS_DESC@7155..7172
- L_PAREN@7155..7156 "("
- ARG@7156..7171
- EXPR@7156..7171
- EXPR_VAR@7156..7159
- NAME@7156..7159
- IDENT@7156..7159 "std"
- SUFFIX_INDEX@7159..7165
- DOT@7159..7160 "."
- NAME@7160..7165
- IDENT@7160..7165 "prune"
- SUFFIX_APPLY@7165..7171
- ARGS_DESC@7165..7171
- L_PAREN@7165..7166 "("
- ARG@7166..7170
- EXPR@7166..7170
- EXPR_VAR@7166..7167
- NAME@7166..7167
- IDENT@7166..7167 "a"
- SUFFIX_INDEX_EXPR@7167..7170
- L_BRACK@7167..7168 "["
- EXPR@7168..7169
- EXPR_VAR@7168..7169
- NAME@7168..7169
- IDENT@7168..7169 "x"
- R_BRACK@7169..7170 "]"
- R_PAREN@7170..7171 ")"
- R_PAREN@7171..7172 ")"
- WHITESPACE@7172..7177 "\n "
- R_BRACE@7177..7178 "}"
- WHITESPACE@7178..7179 " "
- ELSE_KW@7179..7183 "else"
- WHITESPACE@7183..7190 "\n "
- FALSE_EXPR@7190..7191
- EXPR@7190..7191
- EXPR_VAR@7190..7191
- NAME@7190..7191
- IDENT@7190..7191 "a"
- COMMA@7191..7192 ","
- WHITESPACE@7192..7196 "\n\n "
- MEMBER_FIELD_METHOD@7196..7411
- FIELD_NAME_FIXED@7196..7200
- NAME@7196..7200
- IDENT@7196..7200 "find"
- PARAMS_DESC@7200..7212
- L_PAREN@7200..7201 "("
- PARAM@7201..7206
- DESTRUCT_FULL@7201..7206
- NAME@7201..7206
- IDENT@7201..7206 "value"
- COMMA@7206..7207 ","
- WHITESPACE@7207..7208 " "
- PARAM@7208..7211
- DESTRUCT_FULL@7208..7211
- NAME@7208..7211
- IDENT@7208..7211 "arr"
- R_PAREN@7211..7212 ")"
- COLONCOLON@7212..7214 "::"
- WHITESPACE@7214..7219 "\n "
- EXPR@7219..7411
- EXPR_IF_THEN_ELSE@7219..7411
- IF_KW@7219..7221 "if"
- WHITESPACE@7221..7222 " "
- EXPR@7222..7239
- EXPR_UNARY@7222..7239
- NOT@7222..7223 "!"
- EXPR_VAR@7223..7226
- NAME@7223..7226
- IDENT@7223..7226 "std"
- SUFFIX_INDEX@7226..7234
- DOT@7226..7227 "."
- NAME@7227..7234
- IDENT@7227..7234 "isArray"
- SUFFIX_APPLY@7234..7239
- ARGS_DESC@7234..7239
- L_PAREN@7234..7235 "("
- ARG@7235..7238
- EXPR@7235..7238
- EXPR_VAR@7235..7238
- NAME@7235..7238
- IDENT@7235..7238 "arr"
- R_PAREN@7238..7239 ")"
- WHITESPACE@7239..7240 " "
- THEN_KW@7240..7244 "then"
- WHITESPACE@7244..7251 "\n "
- TRUE_EXPR@7251..7321
- EXPR@7251..7321
- EXPR_ERROR@7251..7321
- ERROR_KW@7251..7256 "error"
- WHITESPACE@7256..7257 " "
- EXPR@7257..7321
- EXPR_BINARY@7257..7321
- EXPR@7257..7305
- EXPR_STRING@7257..7305
- STRING_SINGLE@7257..7305 "'find second paramete ..."
- WHITESPACE@7305..7306 " "
- PLUS@7306..7307 "+"
- WHITESPACE@7307..7308 " "
- EXPR@7308..7321
- EXPR_VAR@7308..7311
- NAME@7308..7311
- IDENT@7308..7311 "std"
- SUFFIX_INDEX@7311..7316
- DOT@7311..7312 "."
- NAME@7312..7316
- IDENT@7312..7316 "type"
- SUFFIX_APPLY@7316..7321
- ARGS_DESC@7316..7321
- L_PAREN@7316..7317 "("
- ARG@7317..7320
- EXPR@7317..7320
- EXPR_VAR@7317..7320
- NAME@7317..7320
- IDENT@7317..7320 "arr"
- R_PAREN@7320..7321 ")"
- WHITESPACE@7321..7326 "\n "
- ELSE_KW@7326..7330 "else"
- WHITESPACE@7330..7337 "\n "
- FALSE_EXPR@7337..7411
- EXPR@7337..7411
- EXPR_VAR@7337..7340
- NAME@7337..7340
- IDENT@7337..7340 "std"
- SUFFIX_INDEX@7340..7347
- DOT@7340..7341 "."
- NAME@7341..7347
- IDENT@7341..7347 "filter"
- SUFFIX_APPLY@7347..7411
- ARGS_DESC@7347..7411
- L_PAREN@7347..7348 "("
- ARG@7348..7375
- EXPR@7348..7375
- EXPR_FUNCTION@7348..7375
- FUNCTION_KW@7348..7356 "function"
- PARAMS_DESC@7356..7359
- L_PAREN@7356..7357 "("
- PARAM@7357..7358
- DESTRUCT_FULL@7357..7358
- NAME@7357..7358
- IDENT@7357..7358 "i"
- R_PAREN@7358..7359 ")"
- WHITESPACE@7359..7360 " "
- EXPR@7360..7375
- EXPR_BINARY@7360..7375
- EXPR@7360..7363
- EXPR_VAR@7360..7363
- NAME@7360..7363
- IDENT@7360..7363 "arr"
- SUFFIX_INDEX_EXPR@7363..7366
- L_BRACK@7363..7364 "["
- EXPR@7364..7365
- EXPR_VAR@7364..7365
- NAME@7364..7365
- IDENT@7364..7365 "i"
- R_BRACK@7365..7366 "]"
- WHITESPACE@7366..7367 " "
- EQ@7367..7369 "=="
- WHITESPACE@7369..7370 " "
- EXPR@7370..7375
- EXPR_VAR@7370..7375
- NAME@7370..7375
- IDENT@7370..7375 "value"
- COMMA@7375..7376 ","
- WHITESPACE@7376..7377 " "
- ARG@7377..7410
- EXPR@7377..7410
- EXPR_VAR@7377..7380
- NAME@7377..7380
- IDENT@7377..7380 "std"
- SUFFIX_INDEX@7380..7386
- DOT@7380..7381 "."
- NAME@7381..7386
- IDENT@7381..7386 "range"
- SUFFIX_APPLY@7386..7410
- ARGS_DESC@7386..7410
- L_PAREN@7386..7387 "("
- ARG@7387..7388
- EXPR@7387..7388
- EXPR_NUMBER@7387..7388
- FLOAT@7387..7388 "0"
- COMMA@7388..7389 ","
- WHITESPACE@7389..7390 " "
- ARG@7390..7409
- EXPR@7390..7409
- EXPR_BINARY@7390..7409
- EXPR@7390..7393
- EXPR_VAR@7390..7393
- NAME@7390..7393
- IDENT@7390..7393 "std"
- SUFFIX_INDEX@7393..7400
- DOT@7393..7394 "."
- NAME@7394..7400
- IDENT@7394..7400 "length"
- SUFFIX_APPLY@7400..7405
- ARGS_DESC@7400..7405
- L_PAREN@7400..7401 "("
- ARG@7401..7404
- EXPR@7401..7404
- EXPR_VAR@7401..7404
- NAME@7401..7404
- IDENT@7401..7404 "arr"
- R_PAREN@7404..7405 ")"
- WHITESPACE@7405..7406 " "
- MINUS@7406..7407 "-"
- WHITESPACE@7407..7408 " "
- EXPR@7408..7409
- EXPR_NUMBER@7408..7409
- FLOAT@7408..7409 "1"
- R_PAREN@7409..7410 ")"
- R_PAREN@7410..7411 ")"
- COMMA@7411..7412 ","
- WHITESPACE@7412..7416 "\n\n "
- SINGLE_LINE_SLASH_COMMENT@7416..7426 "// Compat\n"
- WHITESPACE@7426..7428 " "
- MEMBER_FIELD_METHOD@7428..7538
- FIELD_NAME_FIXED@7428..7443
- NAME@7428..7443
- IDENT@7428..7443 "__compare_array"
- PARAMS_DESC@7443..7455
- L_PAREN@7443..7444 "("
- PARAM@7444..7448
- DESTRUCT_FULL@7444..7448
- NAME@7444..7448
- IDENT@7444..7448 "arr1"
- COMMA@7448..7449 ","
- WHITESPACE@7449..7450 " "
- PARAM@7450..7454
- DESTRUCT_FULL@7450..7454
- NAME@7450..7454
- IDENT@7450..7454 "arr2"
- R_PAREN@7454..7455 ")"
- COLONCOLON@7455..7457 "::"
- WHITESPACE@7457..7462 "\n "
- EXPR@7462..7538
- STMT_ASSERT@7462..7508
- ASSERTION@7462..7507
- ASSERT_KW@7462..7468 "assert"
- WHITESPACE@7468..7469 " "
- EXPR@7469..7507
- EXPR_BINARY@7469..7507
- EXPR@7469..7472
- EXPR_VAR@7469..7472
- NAME@7469..7472
- IDENT@7469..7472 "std"
- SUFFIX_INDEX@7472..7480
- DOT@7472..7473 "."
- NAME@7473..7480
- IDENT@7473..7480 "isArray"
- SUFFIX_APPLY@7480..7486
- ARGS_DESC@7480..7486
- L_PAREN@7480..7481 "("
- ARG@7481..7485
- EXPR@7481..7485
- EXPR_VAR@7481..7485
- NAME@7481..7485
- IDENT@7481..7485 "arr1"
- R_PAREN@7485..7486 ")"
- WHITESPACE@7486..7487 " "
- AND@7487..7489 "&&"
- WHITESPACE@7489..7490 " "
- EXPR@7490..7507
- EXPR_VAR@7490..7493
- NAME@7490..7493
- IDENT@7490..7493 "std"
- SUFFIX_INDEX@7493..7501
- DOT@7493..7494 "."
- NAME@7494..7501
- IDENT@7494..7501 "isArray"
- SUFFIX_APPLY@7501..7507
- ARGS_DESC@7501..7507
- L_PAREN@7501..7502 "("
- ARG@7502..7506
- EXPR@7502..7506
- EXPR_VAR@7502..7506
- NAME@7502..7506
- IDENT@7502..7506 "arr2"
- R_PAREN@7506..7507 ")"
- SEMI@7507..7508 ";"
- WHITESPACE@7508..7513 "\n "
- EXPR_VAR@7513..7516
- NAME@7513..7516
- IDENT@7513..7516 "std"
- SUFFIX_INDEX@7516..7526
- DOT@7516..7517 "."
- NAME@7517..7526
- IDENT@7517..7526 "__compare"
- SUFFIX_APPLY@7526..7538
- ARGS_DESC@7526..7538
- L_PAREN@7526..7527 "("
- ARG@7527..7531
- EXPR@7527..7531
- EXPR_VAR@7527..7531
- NAME@7527..7531
- IDENT@7527..7531 "arr1"
- COMMA@7531..7532 ","
- WHITESPACE@7532..7533 " "
- ARG@7533..7537
- EXPR@7533..7537
- EXPR_VAR@7533..7537
- NAME@7533..7537
- IDENT@7533..7537 "arr2"
- R_PAREN@7537..7538 ")"
- COMMA@7538..7539 ","
- WHITESPACE@7539..7542 "\n "
- MEMBER_FIELD_METHOD@7542..7606
- FIELD_NAME_FIXED@7542..7554
- NAME@7542..7554
- IDENT@7542..7554 "__array_less"
- PARAMS_DESC@7554..7566
- L_PAREN@7554..7555 "("
- PARAM@7555..7559
- DESTRUCT_FULL@7555..7559
- NAME@7555..7559
- IDENT@7555..7559 "arr1"
- COMMA@7559..7560 ","
- WHITESPACE@7560..7561 " "
- PARAM@7561..7565
- DESTRUCT_FULL@7561..7565
- NAME@7561..7565
- IDENT@7561..7565 "arr2"
- R_PAREN@7565..7566 ")"
- COLONCOLON@7566..7568 "::"
- WHITESPACE@7568..7569 " "
- EXPR@7569..7606
- EXPR_BINARY@7569..7606
- EXPR@7569..7572
- EXPR_VAR@7569..7572
- NAME@7569..7572
- IDENT@7569..7572 "std"
- SUFFIX_INDEX@7572..7588
- DOT@7572..7573 "."
- NAME@7573..7588
- IDENT@7573..7588 "__compare_array"
- SUFFIX_APPLY@7588..7600
- ARGS_DESC@7588..7600
- L_PAREN@7588..7589 "("
- ARG@7589..7593
- EXPR@7589..7593
- EXPR_VAR@7589..7593
- NAME@7589..7593
- IDENT@7589..7593 "arr1"
- COMMA@7593..7594 ","
- WHITESPACE@7594..7595 " "
- ARG@7595..7599
- EXPR@7595..7599
- EXPR_VAR@7595..7599
- NAME@7595..7599
- IDENT@7595..7599 "arr2"
- R_PAREN@7599..7600 ")"
- WHITESPACE@7600..7601 " "
- EQ@7601..7603 "=="
- WHITESPACE@7603..7604 " "
- EXPR@7604..7606
- EXPR_UNARY@7604..7606
- MINUS@7604..7605 "-"
- EXPR_NUMBER@7605..7606
- FLOAT@7605..7606 "1"
- COMMA@7606..7607 ","
- WHITESPACE@7607..7610 "\n "
- MEMBER_FIELD_METHOD@7610..7676
- FIELD_NAME_FIXED@7610..7625
- NAME@7610..7625
- IDENT@7610..7625 "__array_greater"
- PARAMS_DESC@7625..7637
- L_PAREN@7625..7626 "("
- PARAM@7626..7630
- DESTRUCT_FULL@7626..7630
- NAME@7626..7630
- IDENT@7626..7630 "arr1"
- COMMA@7630..7631 ","
- WHITESPACE@7631..7632 " "
- PARAM@7632..7636
- DESTRUCT_FULL@7632..7636
- NAME@7632..7636
- IDENT@7632..7636 "arr2"
- R_PAREN@7636..7637 ")"
- COLONCOLON@7637..7639 "::"
- WHITESPACE@7639..7640 " "
- EXPR@7640..7676
- EXPR_BINARY@7640..7676
- EXPR@7640..7643
- EXPR_VAR@7640..7643
- NAME@7640..7643
- IDENT@7640..7643 "std"
- SUFFIX_INDEX@7643..7659
- DOT@7643..7644 "."
- NAME@7644..7659
- IDENT@7644..7659 "__compare_array"
- SUFFIX_APPLY@7659..7671
- ARGS_DESC@7659..7671
- L_PAREN@7659..7660 "("
- ARG@7660..7664
- EXPR@7660..7664
- EXPR_VAR@7660..7664
- NAME@7660..7664
- IDENT@7660..7664 "arr1"
- COMMA@7664..7665 ","
- WHITESPACE@7665..7666 " "
- ARG@7666..7670
- EXPR@7666..7670
- EXPR_VAR@7666..7670
- NAME@7666..7670
- IDENT@7666..7670 "arr2"
- R_PAREN@7670..7671 ")"
- WHITESPACE@7671..7672 " "
- EQ@7672..7674 "=="
- WHITESPACE@7674..7675 " "
- EXPR@7675..7676
- EXPR_NUMBER@7675..7676
- FLOAT@7675..7676 "1"
- COMMA@7676..7677 ","
- WHITESPACE@7677..7680 "\n "
- MEMBER_FIELD_METHOD@7680..7752
- FIELD_NAME_FIXED@7680..7701
- NAME@7680..7701
- IDENT@7680..7701 "__array_less_or_equal"
- PARAMS_DESC@7701..7713
- L_PAREN@7701..7702 "("
- PARAM@7702..7706
- DESTRUCT_FULL@7702..7706
- NAME@7702..7706
- IDENT@7702..7706 "arr1"
- COMMA@7706..7707 ","
- WHITESPACE@7707..7708 " "
- PARAM@7708..7712
- DESTRUCT_FULL@7708..7712
- NAME@7708..7712
- IDENT@7708..7712 "arr2"
- R_PAREN@7712..7713 ")"
- COLONCOLON@7713..7715 "::"
- WHITESPACE@7715..7716 " "
- EXPR@7716..7752
- EXPR_BINARY@7716..7752
- EXPR@7716..7719
- EXPR_VAR@7716..7719
- NAME@7716..7719
- IDENT@7716..7719 "std"
- SUFFIX_INDEX@7719..7735
- DOT@7719..7720 "."
- NAME@7720..7735
- IDENT@7720..7735 "__compare_array"
- SUFFIX_APPLY@7735..7747
- ARGS_DESC@7735..7747
- L_PAREN@7735..7736 "("
- ARG@7736..7740
- EXPR@7736..7740
- EXPR_VAR@7736..7740
- NAME@7736..7740
- IDENT@7736..7740 "arr1"
- COMMA@7740..7741 ","
- WHITESPACE@7741..7742 " "
- ARG@7742..7746
- EXPR@7742..7746
- EXPR_VAR@7742..7746
- NAME@7742..7746
- IDENT@7742..7746 "arr2"
- R_PAREN@7746..7747 ")"
- WHITESPACE@7747..7748 " "
- LE@7748..7750 "<="
- WHITESPACE@7750..7751 " "
- EXPR@7751..7752
- EXPR_NUMBER@7751..7752
- FLOAT@7751..7752 "0"
- COMMA@7752..7753 ","
- WHITESPACE@7753..7756 "\n "
- MEMBER_FIELD_METHOD@7756..7831
- FIELD_NAME_FIXED@7756..7780
- NAME@7756..7780
- IDENT@7756..7780 "__array_greater_or_equal"
- PARAMS_DESC@7780..7792
- L_PAREN@7780..7781 "("
- PARAM@7781..7785
- DESTRUCT_FULL@7781..7785
- NAME@7781..7785
- IDENT@7781..7785 "arr1"
- COMMA@7785..7786 ","
- WHITESPACE@7786..7787 " "
- PARAM@7787..7791
- DESTRUCT_FULL@7787..7791
- NAME@7787..7791
- IDENT@7787..7791 "arr2"
- R_PAREN@7791..7792 ")"
- COLONCOLON@7792..7794 "::"
- WHITESPACE@7794..7795 " "
- EXPR@7795..7831
- EXPR_BINARY@7795..7831
- EXPR@7795..7798
- EXPR_VAR@7795..7798
- NAME@7795..7798
- IDENT@7795..7798 "std"
- SUFFIX_INDEX@7798..7814
- DOT@7798..7799 "."
- NAME@7799..7814
- IDENT@7799..7814 "__compare_array"
- SUFFIX_APPLY@7814..7826
- ARGS_DESC@7814..7826
- L_PAREN@7814..7815 "("
- ARG@7815..7819
- EXPR@7815..7819
- EXPR_VAR@7815..7819
- NAME@7815..7819
- IDENT@7815..7819 "arr1"
- COMMA@7819..7820 ","
- WHITESPACE@7820..7821 " "
- ARG@7821..7825
- EXPR@7821..7825
- EXPR_VAR@7821..7825
- NAME@7821..7825
- IDENT@7821..7825 "arr2"
- R_PAREN@7825..7826 ")"
- WHITESPACE@7826..7827 " "
- GE@7827..7829 ">="
- WHITESPACE@7829..7830 " "
- EXPR@7830..7831
- EXPR_NUMBER@7830..7831
- FLOAT@7830..7831 "0"
- COMMA@7831..7832 ","
- WHITESPACE@7832..7833 "\n"
- R_BRACE@7833..7834 "}"
- WHITESPACE@7834..7835 "\n"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__super_nesting.snapdiffbeforeafterboth--- /dev/null
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__super_nesting.snap
@@ -0,0 +1,25 @@
+---
+source: crates/jrsonnet-rowan-parser/src/tests.rs
+expression: "super.a + super.b\n"
+---
+SOURCE_FILE@0..18
+ EXPR@0..17
+ EXPR_BINARY@0..17
+ EXPR@0..7
+ EXPR_LITERAL@0..5
+ SUPER_KW@0..5 "super"
+ SUFFIX_INDEX@5..7
+ DOT@5..6 "."
+ NAME@6..7
+ IDENT@6..7 "a"
+ WHITESPACE@7..8 " "
+ PLUS@8..9 "+"
+ WHITESPACE@9..10 " "
+ EXPR@10..17
+ EXPR_LITERAL@10..15
+ SUPER_KW@10..15 "super"
+ SUFFIX_INDEX@15..17
+ DOT@15..16 "."
+ NAME@16..17
+ IDENT@16..17 "b"
+ WHITESPACE@17..18 "\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
@@ -25,10 +25,6 @@
===
LocatedSyntaxError { error: Unexpected { expected: Named("destruction specifier"), found: MUL }, range: 6..7 }
===
- x syntax error
- ,-[1:7]
- 1 | local * = 1;
- : |
- : `-- expected destruction specifier, found MUL
- 2 | a
- `----
+ · ╭─── unexpected MUL, expecting destruction specifier
+1 │ local * = 1;
+2 │ a
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__wrong_field_end.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__wrong_field_end.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__wrong_field_end.snap
@@ -38,14 +38,9 @@
LocatedSyntaxError { error: Unexpected { expected: Named("comma"), found: SEMI }, range: 7..8 }
LocatedSyntaxError { error: Unexpected { expected: Named("comma"), found: SEMI }, range: 14..15 }
===
- x syntax error
- ,-[2:6]
- 1 | {
- 2 | a: 1;
- : |
- : `-- expected comma, found SEMI
- 3 | b: 2;
- : |
- : `-- expected comma, found SEMI
- 4 | }
- `----
+1 │ {
+ · ╭─── unexpected SEMI, expecting comma
+2 │ a: 1;
+ · ╭─── unexpected SEMI, expecting comma
+3 │ b: 2;
+4 │ }
crates/jrsonnet-rowan-parser/src/tests.rsdiffbeforeafterboth1// `never`2#![cfg(any())]34use miette::{5 Diagnostic, GraphicalReportHandler, GraphicalTheme, LabeledSpan, ThemeCharacters, ThemeStyles,6};7use thiserror::Error;89use crate::{parse, AstNode};1011#[derive(Debug, Error)]12#[error("syntax error")]13struct MyDiagnostic {14 code: String,15 spans: Vec<LabeledSpan>,16}17impl Diagnostic for MyDiagnostic {18 fn code<'a>(&'a self) -> Option<Box<dyn std::fmt::Display + 'a>> {19 None20 }2122 fn severity(&self) -> Option<miette::Severity> {23 None24 }2526 fn help<'a>(&'a self) -> Option<Box<dyn std::fmt::Display + 'a>> {27 None28 }2930 fn url<'a>(&'a self) -> Option<Box<dyn std::fmt::Display + 'a>> {31 None32 }3334 fn source_code(&self) -> Option<&dyn miette::SourceCode> {35 Some(&self.code)36 }3738 fn labels(&self) -> Option<Box<dyn Iterator<Item = miette::LabeledSpan> + '_>> {39 Some(Box::new(self.spans.clone().into_iter()))40 }4142 fn related<'a>(&'a self) -> Option<Box<dyn Iterator<Item = &'a dyn Diagnostic> + 'a>> {43 None44 }45}4647fn process(text: &str) -> String {48 use std::fmt::Write;49 let mut out = String::new();50 let (node, errors) = parse(text);51 write!(out, "{:#?}", node.syntax()).unwrap();52 if !errors.is_empty() && !text.is_empty() {53 writeln!(out, "===").unwrap();54 for err in &errors {55 writeln!(out, "{:?}", err).unwrap();56 }57 let mut code = text.to_string();5859 // Prettier errors at EOF position60 if code.ends_with('\n') {61 code.truncate(code.len() - 1);62 code += " ";63 }64 code += " ";6566 let diag = MyDiagnostic {67 code,68 spans: errors.into_iter().map(|e| e.into()).collect(),69 };7071 let handler = GraphicalReportHandler::new_themed(GraphicalTheme {72 characters: ThemeCharacters::ascii(),73 styles: ThemeStyles::none(),74 });7576 writeln!(out, "===").unwrap();77 handler78 .render_report(&mut out, &diag)79 .expect("fmt error?..");80 }81 out.split('\n')82 .map(|s| s.trim_end().to_string())83 .collect::<Vec<String>>()84 .join("\n")85 .trim_end()86 .to_string()87}88macro_rules! mk_test {89 ($($name:ident => $test:expr)+) => {$(90 #[test]91 fn $name() {92 let src = indoc::indoc!($test);93 let result = process(&src);94 insta::assert_snapshot!(stringify!($name), result, src);9596 }97 )+};98 }99mk_test!(100 empty => r#" "#101 function => r#"102 function(a, b = 1) a + b103 "#104 function_error_no_value => r#"105 function(a, b = ) a + b106 "#107 function_error_rparen => r#"108 function(a, b109 "#110 function_error_body => r#"111 function(a, b)112 "#113 local_novalue => r#"114 local a =115 "#116 local_no_value_recovery => r#"117 local a =118 local b = 3;119 1120 "#121122123 no_rhs => r#"124 a +125 "#126 no_lhs => r#"127 + 2128 "#129 no_operator => "130 2 2131 "132133 named_before_positional => "134 a(1, 2, b=4, 3, 5, k = 12, 6)135 "136137 wrong_field_end => "138 {139 a: 1;140 b: 2;141 }142 "143144145 plain_call => "146 std.substr(a, 0, std.length(b)) == b147 "148149 destruct => "150 local [a, b, c] = arr;151 local [a, ...] = arr_rest;152 local [..., a] = rest_arr;153 local [...] = rest_in_arr;154 local [a, ...n] = arr_rest_n;155 local [...n, a] = rest_arr_n;156 local [...n] = rest_in_arr_n;157158 local {a, b, c} = obj;159 local {a, b, c, ...} = obj_rest;160 local {a, b, c, ...n} = obj_rest_n;161162 null163 "164165 str_block_missing_indent => "166 |||167 "168 str_block_missing_termination => "169 |||170 hello171 "172 str_block_missing_newline => "173 |||hello174 "175 str_block_missing_indent_text => "176 |||177 hello178 "179180 unexpected_destruct => "181 local * = 1;182 a183 "184 arr_compspec => r#"185 [a for a in [1, 2, 3]]186 "#187 arr_compspec_comma => "188 [a, for a in [1, 2, 3]]189 "190 arr_compspec_no_elems => "191 [for a in [1, 2, 3]]192 "193 arr_compspec_incompatible_with_multiple_elems => r#"194 [a for a in [1, 2, 3], b]195 "#196 arr_compspec_incompatible_with_multiple_elems_w => r#"197 [a, b, for a in [1, 2, 3], c]198 "#199200 obj_compspec => r#"201 {a:1 for a in [1, 2, 3]}202 "#203 obj_compspec_comma => "204 {a:1, for a in [1, 2, 3]}205 "206 obj_compspec_no_elems => "207 {for a in [1, 2, 3]}208 "209 obj_compspec_incompatible_with_multiple_elems => r#"210 {a:1 for a in [1, 2, 3], b:1}211 "#212 obj_compspec_incompatible_with_multiple_elems_w => r#"213 {a:1, b:1, for a in [1, 2, 3], c:1}214 "#215216 obj_compspec_incompatible_with_asserts => r#"217 {assert 1, a: 1 for a in [1,2,3]}218 "#219220 local_method => r#"221 local222 a(x) = x,223 a = function(x) x,224 ; c225 "#226 obj_method => r#"227 {228 a(x): x,229 a: function(x) x,230 }231 "#232233 continue_after_total_failure => r#"234 local intr = $intrinsic(test);235236 local a = 1, b = 2, c = a + b;237238 [c]239 "#240);241242#[test]243fn stdlib() {244 let src = include_str!("../../jrsonnet-stdlib/src/std.jsonnet");245 let result = process(src);246 insta::assert_snapshot!("stdlib", result, src);247}248#[test]249fn eval_simple() {250 let src = "local a = 1, b = 2; a + local c = 1; c";251 let (node, _errors) = parse(src);252253 dbg!(node);254}