difftreelog
refactor support new jrsonnet features in rowan parser
in: master
43 files changed
crates/jrsonnet-rowan-parser/jsonnet.ungramdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/jsonnet.ungram
+++ b/crates/jrsonnet-rowan-parser/jsonnet.ungram
@@ -5,32 +5,47 @@
SourceFile = Expr
-ExprBinary =
- lhs:LhsExpr
- BinaryOperator
- rhs:Expr
-ExprUnary =
- UnaryOperator
- rhs:Expr
-ExprSlice =
- Expr
- SliceDesc
-ExprIndex =
- Expr
+SuffixIndex =
+ '?'?
'.'
index:Name
-ExprIndexExpr =
- base:LhsExpr
+SuffixIndexExpr =
+ ('?' '.')?
'['
index:Expr
']'
-ExprApply =
- Expr
+SuffixSlice =
+ SliceDesc
+SuffixApply =
ArgsDesc
'tailstrict'?
+Suffix =
+ SuffixIndex
+| SuffixIndexExpr
+| SuffixSlice
+| SuffixApply
+
+StmtLocal =
+ 'local'
+ (Bind (',' Bind)* ','?)
+ ';'
+StmtAssert =
+ Assertion
+ ';'
+Stmt =
+ StmtLocal
+| StmtAssert
+
+ExprBinary =
+ lhs:Expr
+ BinaryOperator
+ rhs:Expr
+ExprUnary =
+ UnaryOperator
+ rhs:Expr
ExprObjExtend =
- LhsExpr
Expr
+ Expr
ExprParened =
'('
Expr
@@ -79,29 +94,18 @@
ParamsDesc
')'
Expr
-ExprAssert =
- Assertion
- ';'
- Expr
ExprError =
'error'
Expr
-StmtLocal =
- 'local'
- (Bind (',' Bind)* ','?)
- ';'
-
Expr =
- StmtLocal*
+ Stmt*
ExprBase
+ Suffix*
+
ExprBase =
ExprBinary
| ExprUnary
-| ExprSlice
-| ExprIndex
-| ExprIndexExpr
-| ExprApply
| ExprObjExtend
| ExprParened
| ExprString
@@ -114,11 +118,10 @@
| ExprVar
| ExprIfThenElse
| ExprFunction
-| ExprAssert
| ExprError
BinaryOperator =
- '||' | '&&'
+ '||' | '??' | '&&'
| '|' | '^' | '&'
| '==' | '!=' | '<' | '>' | '<=' | '>=' | 'in'
| '<<' | '>>'
@@ -242,7 +245,7 @@
ForSpec =
'for'
- bind:Name
+ bind:Destruct
'in'
Expr
IfSpec =
@@ -278,7 +281,7 @@
Assertion =
'assert'
- condition:LhsExpr
+ condition:Expr
(
':'
message:Expr
@@ -336,7 +339,6 @@
// Aliases used to resolve node type conflicts
TrueExpr=Expr
FalseExpr=Expr
-LhsExpr=Expr
// Trivia - tokens which will be implicitly skipped for parser
Trivia =
crates/jrsonnet-rowan-parser/src/generated/nodes.rsdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/generated/nodes.rs
+++ b/crates/jrsonnet-rowan-parser/src/generated/nodes.rs
@@ -23,61 +23,70 @@
pub(crate) syntax: SyntaxNode,
}
impl Expr {
- pub fn stmt_locals(&self) -> AstChildren<StmtLocal> {
+ pub fn stmts(&self) -> AstChildren<Stmt> {
support::children(&self.syntax)
}
pub fn expr_base(&self) -> Option<ExprBase> {
support::child(&self.syntax)
}
+ pub fn suffixs(&self) -> AstChildren<Suffix> {
+ support::children(&self.syntax)
+ }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct ExprBinary {
+pub struct SuffixIndex {
pub(crate) syntax: SyntaxNode,
}
-impl ExprBinary {
- pub fn lhs(&self) -> Option<LhsExpr> {
- support::child(&self.syntax)
+impl SuffixIndex {
+ pub fn question_mark_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T![?])
}
- pub fn binary_operator(&self) -> Option<BinaryOperator> {
- support::token_child(&self.syntax)
+ pub fn dot_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T![.])
}
- pub fn rhs(&self) -> Option<Expr> {
+ pub fn index(&self) -> Option<Name> {
support::child(&self.syntax)
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct LhsExpr {
+pub struct Name {
pub(crate) syntax: SyntaxNode,
}
-impl LhsExpr {
- pub fn expr(&self) -> Option<Expr> {
- support::child(&self.syntax)
+impl Name {
+ pub fn ident_lit(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, IDENT)
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct ExprUnary {
+pub struct SuffixIndexExpr {
pub(crate) syntax: SyntaxNode,
}
-impl ExprUnary {
- pub fn unary_operator(&self) -> Option<UnaryOperator> {
- support::token_child(&self.syntax)
+impl SuffixIndexExpr {
+ pub fn question_mark_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T![?])
}
- pub fn rhs(&self) -> Option<Expr> {
+ pub fn dot_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T![.])
+ }
+ pub fn l_brack_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T!['['])
+ }
+ pub fn index(&self) -> Option<Expr> {
support::child(&self.syntax)
}
+ pub fn r_brack_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T![']'])
+ }
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct ExprSlice {
+pub struct SuffixSlice {
pub(crate) syntax: SyntaxNode,
}
-impl ExprSlice {
- pub fn expr(&self) -> Option<Expr> {
- support::child(&self.syntax)
- }
+impl SuffixSlice {
pub fn slice_desc(&self) -> Option<SliceDesc> {
support::child(&self.syntax)
}
@@ -109,79 +118,108 @@
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct ExprIndex {
+pub struct SuffixApply {
pub(crate) syntax: SyntaxNode,
}
-impl ExprIndex {
- pub fn expr(&self) -> Option<Expr> {
+impl SuffixApply {
+ pub fn args_desc(&self) -> Option<ArgsDesc> {
support::child(&self.syntax)
}
- pub fn dot_token(&self) -> Option<SyntaxToken> {
- support::token(&self.syntax, T![.])
+ pub fn tailstrict_kw_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T![tailstrict])
+ }
+}
+
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
+pub struct ArgsDesc {
+ pub(crate) syntax: SyntaxNode,
+}
+impl ArgsDesc {
+ pub fn l_paren_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T!['('])
+ }
+ pub fn args(&self) -> AstChildren<Arg> {
+ support::children(&self.syntax)
}
- pub fn index(&self) -> Option<Name> {
- support::child(&self.syntax)
+ pub fn r_paren_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T![')'])
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct Name {
+pub struct StmtLocal {
pub(crate) syntax: SyntaxNode,
}
-impl Name {
- pub fn ident_lit(&self) -> Option<SyntaxToken> {
- support::token(&self.syntax, IDENT)
+impl StmtLocal {
+ pub fn local_kw_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T![local])
+ }
+ pub fn binds(&self) -> AstChildren<Bind> {
+ support::children(&self.syntax)
+ }
+ pub fn semi_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T![;])
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct ExprIndexExpr {
+pub struct StmtAssert {
pub(crate) syntax: SyntaxNode,
}
-impl ExprIndexExpr {
- pub fn base(&self) -> Option<LhsExpr> {
+impl StmtAssert {
+ pub fn assertion(&self) -> Option<Assertion> {
support::child(&self.syntax)
}
- pub fn l_brack_token(&self) -> Option<SyntaxToken> {
- support::token(&self.syntax, T!['['])
+ pub fn semi_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T![;])
}
- pub fn index(&self) -> Option<Expr> {
+}
+
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
+pub struct Assertion {
+ pub(crate) syntax: SyntaxNode,
+}
+impl Assertion {
+ pub fn assert_kw_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T![assert])
+ }
+ pub fn condition(&self) -> Option<Expr> {
support::child(&self.syntax)
}
- pub fn r_brack_token(&self) -> Option<SyntaxToken> {
- support::token(&self.syntax, T![']'])
+ pub fn colon_token(&self) -> Option<SyntaxToken> {
+ support::token(&self.syntax, T![:])
+ }
+ pub fn message(&self) -> Option<Expr> {
+ support::child(&self.syntax)
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct ExprApply {
+pub struct ExprBinary {
pub(crate) syntax: SyntaxNode,
}
-impl ExprApply {
- pub fn expr(&self) -> Option<Expr> {
+impl ExprBinary {
+ pub fn lhs(&self) -> Option<Expr> {
support::child(&self.syntax)
}
- pub fn args_desc(&self) -> Option<ArgsDesc> {
- support::child(&self.syntax)
+ pub fn binary_operator(&self) -> Option<BinaryOperator> {
+ support::token_child(&self.syntax)
}
- pub fn tailstrict_kw_token(&self) -> Option<SyntaxToken> {
- support::token(&self.syntax, T![tailstrict])
+ pub fn rhs(&self) -> Option<Expr> {
+ support::child(&self.syntax)
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct ArgsDesc {
+pub struct ExprUnary {
pub(crate) syntax: SyntaxNode,
}
-impl ArgsDesc {
- pub fn l_paren_token(&self) -> Option<SyntaxToken> {
- support::token(&self.syntax, T!['('])
- }
- pub fn args(&self) -> AstChildren<Arg> {
- support::children(&self.syntax)
+impl ExprUnary {
+ pub fn unary_operator(&self) -> Option<UnaryOperator> {
+ support::token_child(&self.syntax)
}
- pub fn r_paren_token(&self) -> Option<SyntaxToken> {
- support::token(&self.syntax, T![')'])
+ pub fn rhs(&self) -> Option<Expr> {
+ support::child(&self.syntax)
}
}
@@ -190,9 +228,6 @@
pub(crate) syntax: SyntaxNode,
}
impl ExprObjExtend {
- pub fn lhs_expr(&self) -> Option<LhsExpr> {
- support::child(&self.syntax)
- }
pub fn expr(&self) -> Option<Expr> {
support::child(&self.syntax)
}
@@ -395,45 +430,10 @@
}
pub fn r_paren_token(&self) -> Option<SyntaxToken> {
support::token(&self.syntax, T![')'])
- }
-}
-
-#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct ExprAssert {
- pub(crate) syntax: SyntaxNode,
-}
-impl ExprAssert {
- pub fn assertion(&self) -> Option<Assertion> {
- support::child(&self.syntax)
- }
- pub fn semi_token(&self) -> Option<SyntaxToken> {
- support::token(&self.syntax, T![;])
- }
- pub fn expr(&self) -> Option<Expr> {
- support::child(&self.syntax)
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct Assertion {
- pub(crate) syntax: SyntaxNode,
-}
-impl Assertion {
- pub fn assert_kw_token(&self) -> Option<SyntaxToken> {
- support::token(&self.syntax, T![assert])
- }
- pub fn condition(&self) -> Option<LhsExpr> {
- support::child(&self.syntax)
- }
- pub fn colon_token(&self) -> Option<SyntaxToken> {
- support::token(&self.syntax, T![:])
- }
- pub fn message(&self) -> Option<Expr> {
- support::child(&self.syntax)
- }
-}
-
-#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct ExprError {
pub(crate) syntax: SyntaxNode,
}
@@ -447,22 +447,6 @@
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct StmtLocal {
- pub(crate) syntax: SyntaxNode,
-}
-impl StmtLocal {
- pub fn local_kw_token(&self) -> Option<SyntaxToken> {
- support::token(&self.syntax, T![local])
- }
- pub fn binds(&self) -> AstChildren<Bind> {
- support::children(&self.syntax)
- }
- pub fn semi_token(&self) -> Option<SyntaxToken> {
- support::token(&self.syntax, T![;])
- }
-}
-
-#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct SliceDescEnd {
pub(crate) syntax: SyntaxNode,
}
@@ -641,7 +625,7 @@
pub fn for_kw_token(&self) -> Option<SyntaxToken> {
support::token(&self.syntax, T![for])
}
- pub fn bind(&self) -> Option<Name> {
+ pub fn bind(&self) -> Option<Destruct> {
support::child(&self.syntax)
}
pub fn in_kw_token(&self) -> Option<SyntaxToken> {
@@ -820,6 +804,26 @@
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
+pub enum Suffix {
+ SuffixIndex(SuffixIndex),
+ SuffixIndexExpr(SuffixIndexExpr),
+ SuffixSlice(SuffixSlice),
+ SuffixApply(SuffixApply),
+}
+
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
+pub enum Bind {
+ BindDestruct(BindDestruct),
+ BindFunction(BindFunction),
+}
+
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
+pub enum Stmt {
+ StmtLocal(StmtLocal),
+ StmtAssert(StmtAssert),
+}
+
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum ObjBody {
ObjBodyComp(ObjBodyComp),
ObjBodyMemberList(ObjBodyMemberList),
@@ -829,22 +833,12 @@
pub enum CompSpec {
ForSpec(ForSpec),
IfSpec(IfSpec),
-}
-
-#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub enum Bind {
- BindDestruct(BindDestruct),
- BindFunction(BindFunction),
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum ExprBase {
ExprBinary(ExprBinary),
ExprUnary(ExprUnary),
- ExprSlice(ExprSlice),
- ExprIndex(ExprIndex),
- ExprIndexExpr(ExprIndexExpr),
- ExprApply(ExprApply),
ExprObjExtend(ExprObjExtend),
ExprParened(ExprParened),
ExprString(ExprString),
@@ -857,7 +851,6 @@
ExprVar(ExprVar),
ExprIfThenElse(ExprIfThenElse),
ExprFunction(ExprFunction),
- ExprAssert(ExprAssert),
ExprError(ExprError),
}
@@ -905,6 +898,7 @@
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum BinaryOperatorKind {
Or,
+ NullCoaelse,
And,
BitOr,
BitXor,
@@ -1078,9 +1072,9 @@
&self.syntax
}
}
-impl AstNode for ExprBinary {
+impl AstNode for SuffixIndex {
fn can_cast(kind: SyntaxKind) -> bool {
- kind == EXPR_BINARY
+ kind == SUFFIX_INDEX
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
@@ -1093,9 +1087,9 @@
&self.syntax
}
}
-impl AstNode for LhsExpr {
+impl AstNode for Name {
fn can_cast(kind: SyntaxKind) -> bool {
- kind == LHS_EXPR
+ kind == NAME
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
@@ -1108,9 +1102,9 @@
&self.syntax
}
}
-impl AstNode for ExprUnary {
+impl AstNode for SuffixIndexExpr {
fn can_cast(kind: SyntaxKind) -> bool {
- kind == EXPR_UNARY
+ kind == SUFFIX_INDEX_EXPR
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
@@ -1123,9 +1117,9 @@
&self.syntax
}
}
-impl AstNode for ExprSlice {
+impl AstNode for SuffixSlice {
fn can_cast(kind: SyntaxKind) -> bool {
- kind == EXPR_SLICE
+ kind == SUFFIX_SLICE
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
@@ -1153,9 +1147,9 @@
&self.syntax
}
}
-impl AstNode for ExprIndex {
+impl AstNode for SuffixApply {
fn can_cast(kind: SyntaxKind) -> bool {
- kind == EXPR_INDEX
+ kind == SUFFIX_APPLY
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
@@ -1168,9 +1162,9 @@
&self.syntax
}
}
-impl AstNode for Name {
+impl AstNode for ArgsDesc {
fn can_cast(kind: SyntaxKind) -> bool {
- kind == NAME
+ kind == ARGS_DESC
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
@@ -1183,9 +1177,9 @@
&self.syntax
}
}
-impl AstNode for ExprIndexExpr {
+impl AstNode for StmtLocal {
fn can_cast(kind: SyntaxKind) -> bool {
- kind == EXPR_INDEX_EXPR
+ kind == STMT_LOCAL
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
@@ -1198,9 +1192,39 @@
&self.syntax
}
}
-impl AstNode for ExprApply {
+impl AstNode for StmtAssert {
+ fn can_cast(kind: SyntaxKind) -> bool {
+ kind == STMT_ASSERT
+ }
+ fn cast(syntax: SyntaxNode) -> Option<Self> {
+ if Self::can_cast(syntax.kind()) {
+ Some(Self { syntax })
+ } else {
+ None
+ }
+ }
+ fn syntax(&self) -> &SyntaxNode {
+ &self.syntax
+ }
+}
+impl AstNode for Assertion {
+ fn can_cast(kind: SyntaxKind) -> bool {
+ kind == ASSERTION
+ }
+ fn cast(syntax: SyntaxNode) -> Option<Self> {
+ if Self::can_cast(syntax.kind()) {
+ Some(Self { syntax })
+ } else {
+ None
+ }
+ }
+ fn syntax(&self) -> &SyntaxNode {
+ &self.syntax
+ }
+}
+impl AstNode for ExprBinary {
fn can_cast(kind: SyntaxKind) -> bool {
- kind == EXPR_APPLY
+ kind == EXPR_BINARY
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
@@ -1213,9 +1237,9 @@
&self.syntax
}
}
-impl AstNode for ArgsDesc {
+impl AstNode for ExprUnary {
fn can_cast(kind: SyntaxKind) -> bool {
- kind == ARGS_DESC
+ kind == EXPR_UNARY
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
@@ -1441,21 +1465,6 @@
impl AstNode for ParamsDesc {
fn can_cast(kind: SyntaxKind) -> bool {
kind == PARAMS_DESC
- }
- fn cast(syntax: SyntaxNode) -> Option<Self> {
- if Self::can_cast(syntax.kind()) {
- Some(Self { syntax })
- } else {
- None
- }
- }
- fn syntax(&self) -> &SyntaxNode {
- &self.syntax
- }
-}
-impl AstNode for ExprAssert {
- fn can_cast(kind: SyntaxKind) -> bool {
- kind == EXPR_ASSERT
}
fn cast(syntax: SyntaxNode) -> Option<Self> {
if Self::can_cast(syntax.kind()) {
@@ -1468,21 +1477,6 @@
&self.syntax
}
}
-impl AstNode for Assertion {
- fn can_cast(kind: SyntaxKind) -> bool {
- kind == ASSERTION
- }
- fn cast(syntax: SyntaxNode) -> Option<Self> {
- if Self::can_cast(syntax.kind()) {
- Some(Self { syntax })
- } else {
- None
- }
- }
- fn syntax(&self) -> &SyntaxNode {
- &self.syntax
- }
-}
impl AstNode for ExprError {
fn can_cast(kind: SyntaxKind) -> bool {
kind == EXPR_ERROR
@@ -1498,21 +1492,6 @@
&self.syntax
}
}
-impl AstNode for StmtLocal {
- fn can_cast(kind: SyntaxKind) -> bool {
- kind == STMT_LOCAL
- }
- fn cast(syntax: SyntaxNode) -> Option<Self> {
- if Self::can_cast(syntax.kind()) {
- Some(Self { syntax })
- } else {
- None
- }
- }
- fn syntax(&self) -> &SyntaxNode {
- &self.syntax
- }
-}
impl AstNode for SliceDescEnd {
fn can_cast(kind: SyntaxKind) -> bool {
kind == SLICE_DESC_END
@@ -1873,6 +1852,116 @@
&self.syntax
}
}
+impl From<SuffixIndex> for Suffix {
+ fn from(node: SuffixIndex) -> Suffix {
+ Suffix::SuffixIndex(node)
+ }
+}
+impl From<SuffixIndexExpr> for Suffix {
+ fn from(node: SuffixIndexExpr) -> Suffix {
+ Suffix::SuffixIndexExpr(node)
+ }
+}
+impl From<SuffixSlice> for Suffix {
+ fn from(node: SuffixSlice) -> Suffix {
+ Suffix::SuffixSlice(node)
+ }
+}
+impl From<SuffixApply> for Suffix {
+ fn from(node: SuffixApply) -> Suffix {
+ Suffix::SuffixApply(node)
+ }
+}
+impl AstNode for Suffix {
+ fn can_cast(kind: SyntaxKind) -> bool {
+ match kind {
+ SUFFIX_INDEX | SUFFIX_INDEX_EXPR | SUFFIX_SLICE | SUFFIX_APPLY => true,
+ _ => false,
+ }
+ }
+ fn cast(syntax: SyntaxNode) -> Option<Self> {
+ let res = match syntax.kind() {
+ SUFFIX_INDEX => Suffix::SuffixIndex(SuffixIndex { syntax }),
+ SUFFIX_INDEX_EXPR => Suffix::SuffixIndexExpr(SuffixIndexExpr { syntax }),
+ SUFFIX_SLICE => Suffix::SuffixSlice(SuffixSlice { syntax }),
+ SUFFIX_APPLY => Suffix::SuffixApply(SuffixApply { syntax }),
+ _ => return None,
+ };
+ Some(res)
+ }
+ fn syntax(&self) -> &SyntaxNode {
+ match self {
+ Suffix::SuffixIndex(it) => &it.syntax,
+ Suffix::SuffixIndexExpr(it) => &it.syntax,
+ Suffix::SuffixSlice(it) => &it.syntax,
+ Suffix::SuffixApply(it) => &it.syntax,
+ }
+ }
+}
+impl From<BindDestruct> for Bind {
+ fn from(node: BindDestruct) -> Bind {
+ Bind::BindDestruct(node)
+ }
+}
+impl From<BindFunction> for Bind {
+ fn from(node: BindFunction) -> Bind {
+ Bind::BindFunction(node)
+ }
+}
+impl AstNode for Bind {
+ fn can_cast(kind: SyntaxKind) -> bool {
+ match kind {
+ BIND_DESTRUCT | BIND_FUNCTION => true,
+ _ => false,
+ }
+ }
+ fn cast(syntax: SyntaxNode) -> Option<Self> {
+ let res = match syntax.kind() {
+ BIND_DESTRUCT => Bind::BindDestruct(BindDestruct { syntax }),
+ BIND_FUNCTION => Bind::BindFunction(BindFunction { syntax }),
+ _ => return None,
+ };
+ Some(res)
+ }
+ fn syntax(&self) -> &SyntaxNode {
+ match self {
+ Bind::BindDestruct(it) => &it.syntax,
+ Bind::BindFunction(it) => &it.syntax,
+ }
+ }
+}
+impl From<StmtLocal> for Stmt {
+ fn from(node: StmtLocal) -> Stmt {
+ Stmt::StmtLocal(node)
+ }
+}
+impl From<StmtAssert> for Stmt {
+ fn from(node: StmtAssert) -> Stmt {
+ Stmt::StmtAssert(node)
+ }
+}
+impl AstNode for Stmt {
+ fn can_cast(kind: SyntaxKind) -> bool {
+ match kind {
+ STMT_LOCAL | STMT_ASSERT => true,
+ _ => false,
+ }
+ }
+ fn cast(syntax: SyntaxNode) -> Option<Self> {
+ let res = match syntax.kind() {
+ STMT_LOCAL => Stmt::StmtLocal(StmtLocal { syntax }),
+ STMT_ASSERT => Stmt::StmtAssert(StmtAssert { syntax }),
+ _ => return None,
+ };
+ Some(res)
+ }
+ fn syntax(&self) -> &SyntaxNode {
+ match self {
+ Stmt::StmtLocal(it) => &it.syntax,
+ Stmt::StmtAssert(it) => &it.syntax,
+ }
+ }
+}
impl From<ObjBodyComp> for ObjBody {
fn from(node: ObjBodyComp) -> ObjBody {
ObjBody::ObjBodyComp(node)
@@ -1935,40 +2024,8 @@
CompSpec::ForSpec(it) => &it.syntax,
CompSpec::IfSpec(it) => &it.syntax,
}
- }
-}
-impl From<BindDestruct> for Bind {
- fn from(node: BindDestruct) -> Bind {
- Bind::BindDestruct(node)
- }
-}
-impl From<BindFunction> for Bind {
- fn from(node: BindFunction) -> Bind {
- Bind::BindFunction(node)
}
}
-impl AstNode for Bind {
- fn can_cast(kind: SyntaxKind) -> bool {
- match kind {
- BIND_DESTRUCT | BIND_FUNCTION => true,
- _ => false,
- }
- }
- fn cast(syntax: SyntaxNode) -> Option<Self> {
- let res = match syntax.kind() {
- BIND_DESTRUCT => Bind::BindDestruct(BindDestruct { syntax }),
- BIND_FUNCTION => Bind::BindFunction(BindFunction { syntax }),
- _ => return None,
- };
- Some(res)
- }
- fn syntax(&self) -> &SyntaxNode {
- match self {
- Bind::BindDestruct(it) => &it.syntax,
- Bind::BindFunction(it) => &it.syntax,
- }
- }
-}
impl From<ExprBinary> for ExprBase {
fn from(node: ExprBinary) -> ExprBase {
ExprBase::ExprBinary(node)
@@ -1977,28 +2034,8 @@
impl From<ExprUnary> for ExprBase {
fn from(node: ExprUnary) -> ExprBase {
ExprBase::ExprUnary(node)
- }
-}
-impl From<ExprSlice> for ExprBase {
- fn from(node: ExprSlice) -> ExprBase {
- ExprBase::ExprSlice(node)
}
}
-impl From<ExprIndex> for ExprBase {
- fn from(node: ExprIndex) -> ExprBase {
- ExprBase::ExprIndex(node)
- }
-}
-impl From<ExprIndexExpr> for ExprBase {
- fn from(node: ExprIndexExpr) -> ExprBase {
- ExprBase::ExprIndexExpr(node)
- }
-}
-impl From<ExprApply> for ExprBase {
- fn from(node: ExprApply) -> ExprBase {
- ExprBase::ExprApply(node)
- }
-}
impl From<ExprObjExtend> for ExprBase {
fn from(node: ExprObjExtend) -> ExprBase {
ExprBase::ExprObjExtend(node)
@@ -2057,11 +2094,6 @@
impl From<ExprFunction> for ExprBase {
fn from(node: ExprFunction) -> ExprBase {
ExprBase::ExprFunction(node)
- }
-}
-impl From<ExprAssert> for ExprBase {
- fn from(node: ExprAssert) -> ExprBase {
- ExprBase::ExprAssert(node)
}
}
impl From<ExprError> for ExprBase {
@@ -2072,10 +2104,9 @@
impl AstNode for ExprBase {
fn can_cast(kind: SyntaxKind) -> bool {
match kind {
- EXPR_BINARY | EXPR_UNARY | EXPR_SLICE | EXPR_INDEX | EXPR_INDEX_EXPR | EXPR_APPLY
- | EXPR_OBJ_EXTEND | EXPR_PARENED | EXPR_STRING | EXPR_NUMBER | EXPR_LITERAL
- | EXPR_ARRAY | EXPR_OBJECT | EXPR_ARRAY_COMP | EXPR_IMPORT | EXPR_VAR
- | EXPR_IF_THEN_ELSE | EXPR_FUNCTION | EXPR_ASSERT | EXPR_ERROR => true,
+ EXPR_BINARY | EXPR_UNARY | EXPR_OBJ_EXTEND | EXPR_PARENED | EXPR_STRING
+ | EXPR_NUMBER | EXPR_LITERAL | EXPR_ARRAY | EXPR_OBJECT | EXPR_ARRAY_COMP
+ | EXPR_IMPORT | EXPR_VAR | EXPR_IF_THEN_ELSE | EXPR_FUNCTION | EXPR_ERROR => true,
_ => false,
}
}
@@ -2083,10 +2114,6 @@
let res = match syntax.kind() {
EXPR_BINARY => ExprBase::ExprBinary(ExprBinary { syntax }),
EXPR_UNARY => ExprBase::ExprUnary(ExprUnary { syntax }),
- EXPR_SLICE => ExprBase::ExprSlice(ExprSlice { syntax }),
- EXPR_INDEX => ExprBase::ExprIndex(ExprIndex { syntax }),
- EXPR_INDEX_EXPR => ExprBase::ExprIndexExpr(ExprIndexExpr { syntax }),
- EXPR_APPLY => ExprBase::ExprApply(ExprApply { syntax }),
EXPR_OBJ_EXTEND => ExprBase::ExprObjExtend(ExprObjExtend { syntax }),
EXPR_PARENED => ExprBase::ExprParened(ExprParened { syntax }),
EXPR_STRING => ExprBase::ExprString(ExprString { syntax }),
@@ -2099,7 +2126,6 @@
EXPR_VAR => ExprBase::ExprVar(ExprVar { syntax }),
EXPR_IF_THEN_ELSE => ExprBase::ExprIfThenElse(ExprIfThenElse { syntax }),
EXPR_FUNCTION => ExprBase::ExprFunction(ExprFunction { syntax }),
- EXPR_ASSERT => ExprBase::ExprAssert(ExprAssert { syntax }),
EXPR_ERROR => ExprBase::ExprError(ExprError { syntax }),
_ => return None,
};
@@ -2109,10 +2135,6 @@
match self {
ExprBase::ExprBinary(it) => &it.syntax,
ExprBase::ExprUnary(it) => &it.syntax,
- ExprBase::ExprSlice(it) => &it.syntax,
- ExprBase::ExprIndex(it) => &it.syntax,
- ExprBase::ExprIndexExpr(it) => &it.syntax,
- ExprBase::ExprApply(it) => &it.syntax,
ExprBase::ExprObjExtend(it) => &it.syntax,
ExprBase::ExprParened(it) => &it.syntax,
ExprBase::ExprString(it) => &it.syntax,
@@ -2125,7 +2147,6 @@
ExprBase::ExprVar(it) => &it.syntax,
ExprBase::ExprIfThenElse(it) => &it.syntax,
ExprBase::ExprFunction(it) => &it.syntax,
- ExprBase::ExprAssert(it) => &it.syntax,
ExprBase::ExprError(it) => &it.syntax,
}
}
@@ -2344,14 +2365,16 @@
impl BinaryOperatorKind {
fn can_cast(kind: SyntaxKind) -> bool {
match kind {
- OR | AND | BIT_OR | BIT_XOR | BIT_AND | EQ | NE | LT | GT | LE | GE | IN_KW | LHS
- | RHS | PLUS | MINUS | MUL | DIV | MODULO | META_OBJECT_APPLY | ERROR_NO_OPERATOR => true,
+ OR | NULL_COAELSE | AND | BIT_OR | BIT_XOR | BIT_AND | EQ | NE | LT | GT | LE | GE
+ | IN_KW | LHS | RHS | PLUS | MINUS | MUL | DIV | MODULO | META_OBJECT_APPLY
+ | ERROR_NO_OPERATOR => true,
_ => false,
}
}
pub fn cast(kind: SyntaxKind) -> Option<Self> {
let res = match kind {
OR => Self::Or,
+ NULL_COAELSE => Self::NullCoaelse,
AND => Self::And,
BIT_OR => Self::BitOr,
BIT_XOR => Self::BitXor,
@@ -2742,21 +2765,31 @@
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for ObjBody {
+impl std::fmt::Display for Suffix {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ std::fmt::Display::fmt(self.syntax(), f)
+ }
+}
+impl std::fmt::Display for Bind {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for CompSpec {
+impl std::fmt::Display for Stmt {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for Bind {
+impl std::fmt::Display for ObjBody {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
+impl std::fmt::Display for CompSpec {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ std::fmt::Display::fmt(self.syntax(), f)
+ }
+}
impl std::fmt::Display for ExprBase {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
@@ -2797,22 +2830,22 @@
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for ExprBinary {
+impl std::fmt::Display for SuffixIndex {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for LhsExpr {
+impl std::fmt::Display for Name {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for ExprUnary {
+impl std::fmt::Display for SuffixIndexExpr {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for ExprSlice {
+impl std::fmt::Display for SuffixSlice {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
@@ -2822,31 +2855,41 @@
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for ExprIndex {
+impl std::fmt::Display for SuffixApply {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for Name {
+impl std::fmt::Display for ArgsDesc {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for ExprIndexExpr {
+impl std::fmt::Display for StmtLocal {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for ExprApply {
+impl std::fmt::Display for StmtAssert {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
-impl std::fmt::Display for ArgsDesc {
+impl std::fmt::Display for Assertion {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
+impl std::fmt::Display for ExprBinary {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ std::fmt::Display::fmt(self.syntax(), f)
+ }
+}
+impl std::fmt::Display for ExprUnary {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ std::fmt::Display::fmt(self.syntax(), f)
+ }
+}
impl std::fmt::Display for ExprObjExtend {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
@@ -2918,26 +2961,11 @@
}
}
impl std::fmt::Display for ParamsDesc {
- fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
- std::fmt::Display::fmt(self.syntax(), f)
- }
-}
-impl std::fmt::Display for ExprAssert {
- fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
- std::fmt::Display::fmt(self.syntax(), f)
- }
-}
-impl std::fmt::Display for Assertion {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
}
impl std::fmt::Display for ExprError {
- fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
- std::fmt::Display::fmt(self.syntax(), f)
- }
-}
-impl std::fmt::Display for StmtLocal {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
std::fmt::Display::fmt(self.syntax(), f)
}
crates/jrsonnet-rowan-parser/src/generated/syntax_kinds.rsdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/generated/syntax_kinds.rs
+++ b/crates/jrsonnet-rowan-parser/src/generated/syntax_kinds.rs
@@ -19,6 +19,8 @@
EOF,
#[token("||")]
OR,
+ #[token("??")]
+ NULL_COAELSE,
#[token("&&")]
AND,
#[token("|")]
@@ -137,6 +139,8 @@
ERROR_COMMENT_UNTERMINATED,
#[token("tailstrict")]
TAILSTRICT_KW,
+ #[token("local")]
+ LOCAL_KW,
#[token("importstr")]
IMPORTSTR_KW,
#[token("importbin")]
@@ -153,8 +157,6 @@
FUNCTION_KW,
#[token("error")]
ERROR_KW,
- #[token("local")]
- LOCAL_KW,
#[token("in")]
IN_KW,
META_OBJECT_APPLY,
@@ -181,16 +183,18 @@
LEXING_ERROR,
SOURCE_FILE,
EXPR,
- EXPR_BINARY,
- LHS_EXPR,
- EXPR_UNARY,
- EXPR_SLICE,
- SLICE_DESC,
- EXPR_INDEX,
+ SUFFIX_INDEX,
NAME,
- EXPR_INDEX_EXPR,
- EXPR_APPLY,
+ SUFFIX_INDEX_EXPR,
+ SUFFIX_SLICE,
+ SLICE_DESC,
+ SUFFIX_APPLY,
ARGS_DESC,
+ STMT_LOCAL,
+ STMT_ASSERT,
+ ASSERTION,
+ EXPR_BINARY,
+ EXPR_UNARY,
EXPR_OBJ_EXTEND,
EXPR_PARENED,
EXPR_LITERAL,
@@ -206,10 +210,7 @@
FALSE_EXPR,
EXPR_FUNCTION,
PARAMS_DESC,
- EXPR_ASSERT,
- ASSERTION,
EXPR_ERROR,
- STMT_LOCAL,
SLICE_DESC_END,
SLICE_DESC_STEP,
ARG,
@@ -234,9 +235,11 @@
DESTRUCT_OBJECT_FIELD,
DESTRUCT_REST,
DESTRUCT_ARRAY_ELEMENT,
+ SUFFIX,
+ BIND,
+ STMT,
OBJ_BODY,
COMP_SPEC,
- BIND,
EXPR_BASE,
MEMBER_COMP,
MEMBER,
@@ -259,21 +262,21 @@
impl SyntaxKind {
pub fn is_keyword(self) -> bool {
match self {
- OR | AND | BIT_OR | BIT_XOR | BIT_AND | EQ | NE | LT | GT | LE | GE | LHS | RHS
- | PLUS | MINUS | MUL | DIV | MODULO | NOT | BIT_NOT | L_BRACK | R_BRACK | L_PAREN
- | R_PAREN | L_BRACE | R_BRACE | COLON | COLONCOLON | COLONCOLONCOLON | SEMI | DOT
- | DOTDOTDOT | COMMA | DOLLAR | ASSIGN | QUESTION_MARK | TAILSTRICT_KW
- | IMPORTSTR_KW | IMPORTBIN_KW | IMPORT_KW | IF_KW | THEN_KW | ELSE_KW | FUNCTION_KW
- | ERROR_KW | LOCAL_KW | IN_KW | NULL_KW | TRUE_KW | FALSE_KW | SELF_KW | SUPER_KW
- | FOR_KW | ASSERT_KW => true,
+ OR | NULL_COAELSE | AND | BIT_OR | BIT_XOR | BIT_AND | EQ | NE | LT | GT | LE | GE
+ | LHS | RHS | PLUS | MINUS | MUL | DIV | MODULO | NOT | BIT_NOT | L_BRACK | R_BRACK
+ | L_PAREN | R_PAREN | L_BRACE | R_BRACE | COLON | COLONCOLON | COLONCOLONCOLON
+ | SEMI | DOT | DOTDOTDOT | COMMA | DOLLAR | ASSIGN | QUESTION_MARK | TAILSTRICT_KW
+ | LOCAL_KW | IMPORTSTR_KW | IMPORTBIN_KW | IMPORT_KW | IF_KW | THEN_KW | ELSE_KW
+ | FUNCTION_KW | ERROR_KW | IN_KW | NULL_KW | TRUE_KW | FALSE_KW | SELF_KW
+ | SUPER_KW | FOR_KW | ASSERT_KW => true,
_ => false,
}
}
pub fn is_enum(self) -> bool {
match self {
- OBJ_BODY | COMP_SPEC | BIND | EXPR_BASE | MEMBER_COMP | MEMBER | FIELD_NAME
- | DESTRUCT | DESTRUCT_ARRAY_PART | BINARY_OPERATOR | UNARY_OPERATOR | LITERAL
- | TEXT | NUMBER | IMPORT_KIND | VISIBILITY | TRIVIA | CUSTOM_ERROR => true,
+ SUFFIX | BIND | STMT | OBJ_BODY | COMP_SPEC | EXPR_BASE | MEMBER_COMP | MEMBER
+ | FIELD_NAME | DESTRUCT | DESTRUCT_ARRAY_PART | BINARY_OPERATOR | UNARY_OPERATOR
+ | LITERAL | TEXT | NUMBER | IMPORT_KIND | VISIBILITY | TRIVIA | CUSTOM_ERROR => true,
_ => false,
}
}
@@ -286,5 +289,5 @@
}
}
#[macro_export]
-macro_rules ! T { [||] => { $ crate :: SyntaxKind :: OR } ; [&&] => { $ crate :: SyntaxKind :: AND } ; [|] => { $ crate :: SyntaxKind :: BIT_OR } ; [^] => { $ crate :: SyntaxKind :: BIT_XOR } ; [&] => { $ crate :: SyntaxKind :: BIT_AND } ; [==] => { $ crate :: SyntaxKind :: EQ } ; [!=] => { $ crate :: SyntaxKind :: NE } ; [<] => { $ crate :: SyntaxKind :: LT } ; [>] => { $ crate :: SyntaxKind :: GT } ; [<=] => { $ crate :: SyntaxKind :: LE } ; [>=] => { $ crate :: SyntaxKind :: GE } ; [<<] => { $ crate :: SyntaxKind :: LHS } ; [>>] => { $ crate :: SyntaxKind :: RHS } ; [+] => { $ crate :: SyntaxKind :: PLUS } ; [-] => { $ crate :: SyntaxKind :: MINUS } ; [*] => { $ crate :: SyntaxKind :: MUL } ; [/] => { $ crate :: SyntaxKind :: DIV } ; [%] => { $ crate :: SyntaxKind :: MODULO } ; [!] => { $ crate :: SyntaxKind :: NOT } ; [~] => { $ crate :: SyntaxKind :: BIT_NOT } ; ['['] => { $ crate :: SyntaxKind :: L_BRACK } ; [']'] => { $ crate :: SyntaxKind :: R_BRACK } ; ['('] => { $ crate :: SyntaxKind :: L_PAREN } ; [')'] => { $ crate :: SyntaxKind :: R_PAREN } ; ['{'] => { $ crate :: SyntaxKind :: L_BRACE } ; ['}'] => { $ crate :: SyntaxKind :: R_BRACE } ; [:] => { $ crate :: SyntaxKind :: COLON } ; [::] => { $ crate :: SyntaxKind :: COLONCOLON } ; [:::] => { $ crate :: SyntaxKind :: COLONCOLONCOLON } ; [;] => { $ crate :: SyntaxKind :: SEMI } ; [.] => { $ crate :: SyntaxKind :: DOT } ; [...] => { $ crate :: SyntaxKind :: DOTDOTDOT } ; [,] => { $ crate :: SyntaxKind :: COMMA } ; ['$'] => { $ crate :: SyntaxKind :: DOLLAR } ; [=] => { $ crate :: SyntaxKind :: ASSIGN } ; [?] => { $ crate :: SyntaxKind :: QUESTION_MARK } ; [tailstrict] => { $ crate :: SyntaxKind :: TAILSTRICT_KW } ; [importstr] => { $ crate :: SyntaxKind :: IMPORTSTR_KW } ; [importbin] => { $ crate :: SyntaxKind :: IMPORTBIN_KW } ; [import] => { $ crate :: SyntaxKind :: IMPORT_KW } ; [if] => { $ crate :: SyntaxKind :: IF_KW } ; [then] => { $ crate :: SyntaxKind :: THEN_KW } ; [else] => { $ crate :: SyntaxKind :: ELSE_KW } ; [function] => { $ crate :: SyntaxKind :: FUNCTION_KW } ; [error] => { $ crate :: SyntaxKind :: ERROR_KW } ; [local] => { $ crate :: SyntaxKind :: LOCAL_KW } ; [in] => { $ crate :: SyntaxKind :: IN_KW } ; [null] => { $ crate :: SyntaxKind :: NULL_KW } ; [true] => { $ crate :: SyntaxKind :: TRUE_KW } ; [false] => { $ crate :: SyntaxKind :: FALSE_KW } ; [self] => { $ crate :: SyntaxKind :: SELF_KW } ; [super] => { $ crate :: SyntaxKind :: SUPER_KW } ; [for] => { $ crate :: SyntaxKind :: FOR_KW } ; [assert] => { $ crate :: SyntaxKind :: ASSERT_KW } }
+macro_rules ! T { [||] => { $ crate :: SyntaxKind :: OR } ; [??] => { $ crate :: SyntaxKind :: NULL_COAELSE } ; [&&] => { $ crate :: SyntaxKind :: AND } ; [|] => { $ crate :: SyntaxKind :: BIT_OR } ; [^] => { $ crate :: SyntaxKind :: BIT_XOR } ; [&] => { $ crate :: SyntaxKind :: BIT_AND } ; [==] => { $ crate :: SyntaxKind :: EQ } ; [!=] => { $ crate :: SyntaxKind :: NE } ; [<] => { $ crate :: SyntaxKind :: LT } ; [>] => { $ crate :: SyntaxKind :: GT } ; [<=] => { $ crate :: SyntaxKind :: LE } ; [>=] => { $ crate :: SyntaxKind :: GE } ; [<<] => { $ crate :: SyntaxKind :: LHS } ; [>>] => { $ crate :: SyntaxKind :: RHS } ; [+] => { $ crate :: SyntaxKind :: PLUS } ; [-] => { $ crate :: SyntaxKind :: MINUS } ; [*] => { $ crate :: SyntaxKind :: MUL } ; [/] => { $ crate :: SyntaxKind :: DIV } ; [%] => { $ crate :: SyntaxKind :: MODULO } ; [!] => { $ crate :: SyntaxKind :: NOT } ; [~] => { $ crate :: SyntaxKind :: BIT_NOT } ; ['['] => { $ crate :: SyntaxKind :: L_BRACK } ; [']'] => { $ crate :: SyntaxKind :: R_BRACK } ; ['('] => { $ crate :: SyntaxKind :: L_PAREN } ; [')'] => { $ crate :: SyntaxKind :: R_PAREN } ; ['{'] => { $ crate :: SyntaxKind :: L_BRACE } ; ['}'] => { $ crate :: SyntaxKind :: R_BRACE } ; [:] => { $ crate :: SyntaxKind :: COLON } ; [::] => { $ crate :: SyntaxKind :: COLONCOLON } ; [:::] => { $ crate :: SyntaxKind :: COLONCOLONCOLON } ; [;] => { $ crate :: SyntaxKind :: SEMI } ; [.] => { $ crate :: SyntaxKind :: DOT } ; [...] => { $ crate :: SyntaxKind :: DOTDOTDOT } ; [,] => { $ crate :: SyntaxKind :: COMMA } ; ['$'] => { $ crate :: SyntaxKind :: DOLLAR } ; [=] => { $ crate :: SyntaxKind :: ASSIGN } ; [?] => { $ crate :: SyntaxKind :: QUESTION_MARK } ; [tailstrict] => { $ crate :: SyntaxKind :: TAILSTRICT_KW } ; [local] => { $ crate :: SyntaxKind :: LOCAL_KW } ; [importstr] => { $ crate :: SyntaxKind :: IMPORTSTR_KW } ; [importbin] => { $ crate :: SyntaxKind :: IMPORTBIN_KW } ; [import] => { $ crate :: SyntaxKind :: IMPORT_KW } ; [if] => { $ crate :: SyntaxKind :: IF_KW } ; [then] => { $ crate :: SyntaxKind :: THEN_KW } ; [else] => { $ crate :: SyntaxKind :: ELSE_KW } ; [function] => { $ crate :: SyntaxKind :: FUNCTION_KW } ; [error] => { $ crate :: SyntaxKind :: ERROR_KW } ; [in] => { $ crate :: SyntaxKind :: IN_KW } ; [null] => { $ crate :: SyntaxKind :: NULL_KW } ; [true] => { $ crate :: SyntaxKind :: TRUE_KW } ; [false] => { $ crate :: SyntaxKind :: FALSE_KW } ; [self] => { $ crate :: SyntaxKind :: SELF_KW } ; [super] => { $ crate :: SyntaxKind :: SUPER_KW } ; [for] => { $ crate :: SyntaxKind :: FOR_KW } ; [assert] => { $ crate :: SyntaxKind :: ASSERT_KW } }
pub use T;
crates/jrsonnet-rowan-parser/src/lib.rsdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/lib.rs
+++ b/crates/jrsonnet-rowan-parser/src/lib.rs
@@ -23,6 +23,11 @@
pub use language::*;
pub use token_set::SyntaxKindSet;
+use self::{
+ ast::support,
+ generated::nodes::{Expr, ExprBinary, ExprObjExtend},
+};
+
pub fn parse(input: &str) -> (SourceFile, Vec<LocatedSyntaxError>) {
let lexemes = lex(input);
let kinds = lexemes
@@ -42,3 +47,25 @@
parse.errors,
)
}
+impl ExprBinary {
+ pub fn lhs_work(&self) -> Option<Expr> {
+ support::child(self.syntax())
+ }
+ pub fn rhs_work(&self) -> Option<Expr> {
+ let mut children = support::children(self.syntax());
+ // skip lhs
+ children.next()?;
+ children.next()
+ }
+}
+impl ExprObjExtend {
+ pub fn lhs_work(&self) -> Option<Expr> {
+ support::child(self.syntax())
+ }
+ pub fn rhs_work(&self) -> Option<Expr> {
+ let mut children = support::children(self.syntax());
+ // skip lhs
+ children.next()?;
+ children.next()
+ }
+}
crates/jrsonnet-rowan-parser/src/parser.rsdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/parser.rs
+++ b/crates/jrsonnet-rowan-parser/src/parser.rs
@@ -293,30 +293,38 @@
}
fn expr(p: &mut Parser) -> CompletedMarker {
- while p.at(T![local]) {
+ let m = p.start();
+ while p.at(T![local]) || p.at(T![assert]) {
let m = p.start();
- p.bump();
- loop {
- if p.at(T![;]) {
- p.bump();
+ if p.at(T![local]) {
+ p.bump();
+ loop {
+ if p.at(T![;]) {
+ p.bump();
+ break;
+ }
+ bind(p);
+
+ if p.at(T![,]) {
+ p.bump();
+ continue;
+ }
+ p.expect(T![;]);
break;
}
- bind(p);
-
- if p.at(T![,]) {
- p.bump();
- continue;
- }
+ m.complete(p, STMT_LOCAL);
+ } else {
+ assertion(p);
p.expect(T![;]);
- break;
+ m.complete(p, STMT_ASSERT);
}
- m.complete(p, STMT_LOCAL);
}
match expr_binding_power(p, 0) {
Ok(m) => m,
Err(m) => m,
- }
+ };
+ m.complete(p, EXPR)
}
fn expr_binding_power(
p: &mut Parser,
@@ -337,8 +345,10 @@
p.bump();
}
- let m = lhs.wrap(p, LHS_EXPR).precede(p);
- let parsed_rhs = expr_binding_power(p, right_binding_power).is_ok();
+ let m = lhs.wrap(p, EXPR).precede(p);
+ let parsed_rhs = expr_binding_power(p, right_binding_power)
+ .map(|v| v.precede(p).complete(p, EXPR))
+ .is_ok();
lhs = m.complete(
p,
if op == BinaryOperatorKind::MetaObjectApply {
@@ -361,7 +371,7 @@
if p.at(T![for]) {
let m = p.start();
p.bump();
- name(p);
+ destruct(p);
p.expect(T![in]);
expr(p);
m.complete(p, FOR_SPEC)
@@ -420,7 +430,7 @@
fn assertion(p: &mut Parser) {
let m = p.start();
p.bump_assert(T![assert]);
- expr(p).wrap(p, LHS_EXPR);
+ expr(p);
if p.at(T![:]) {
p.bump();
expr(p);
@@ -504,7 +514,7 @@
for errored in compspecs {
errored.wrap_error(
p,
- "compspec may only be used if there is only one array element",
+ "compspec may only be used if there is only one object element",
);
}
m.complete(p, OBJ_BODY_MEMBER_LIST);
@@ -612,8 +622,8 @@
p.expect(T![']']);
break;
}
- elems += 1;
expr(p);
+ elems += 1;
while p.at_ts(COMPSPEC) {
compspecs.push(compspec(p));
}
@@ -679,32 +689,47 @@
true
}
-fn lhs(p: &mut Parser) -> Result<CompletedMarker, CompletedMarker> {
- let mut lhs = lhs_basic(p)?;
-
+fn suffix(p: &mut Parser) {
loop {
- if p.at(T![.]) {
- let m = lhs.precede(p);
+ let start = p.start();
+ let _marker: CompletedMarker = if p.at(T![?]) {
p.bump();
+ p.expect(T![.]);
+ if p.at(IDENT) {
+ name(p);
+ start.complete(p, SUFFIX_INDEX)
+ } else if p.at(T!['[']) {
+ p.bump();
+ expr(p);
+ p.expect(T![']']);
+ start.complete(p, SUFFIX_INDEX_EXPR)
+ } else {
+ start.complete_missing(p, ExpectedSyntax::Named("index"))
+ }
+ } else if p.at(T![.]) {
+ p.bump();
name(p);
- lhs = m.complete(p, EXPR_INDEX);
+ start.complete(p, SUFFIX_INDEX)
} else if p.at(T!['[']) {
if slice_desc_or_index(p) {
- lhs = lhs.precede(p).complete(p, EXPR_SLICE);
+ start.complete(p, SUFFIX_SLICE)
} else {
- lhs = lhs
- .wrap(p, LHS_EXPR)
- .precede(p)
- .complete(p, EXPR_INDEX_EXPR);
+ start.complete(p, SUFFIX_INDEX_EXPR)
}
} else if p.at(T!['(']) {
- let m = lhs.precede(p);
args_desc(p);
- lhs = m.complete(p, EXPR_APPLY);
+ start.complete(p, SUFFIX_APPLY)
} else {
+ start.forget(p);
break;
- }
+ };
}
+}
+
+fn lhs(p: &mut Parser) -> Result<CompletedMarker, CompletedMarker> {
+ let lhs = lhs_basic(p)?;
+
+ suffix(p);
Ok(lhs)
}
@@ -885,12 +910,6 @@
p.bump();
expr(p);
m.complete(p, EXPR_ERROR)
- } else if p.at(T![assert]) {
- let m = p.start();
- assertion(p);
- p.expect(T![;]);
- expr(p);
- m.complete(p, EXPR_ASSERT)
} else if p.at(T![import]) || p.at(T![importstr]) || p.at(T![importbin]) {
let m = p.start();
p.bump();
crates/jrsonnet-rowan-parser/src/precedence.rsdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/precedence.rs
+++ b/crates/jrsonnet-rowan-parser/src/precedence.rs
@@ -13,6 +13,7 @@
Self::BitXor => (8, 9),
Self::BitOr => (6, 7),
Self::And => (4, 5),
+ Self::NullCoaelse => (2, 3),
Self::Or => (2, 3),
Self::ErrorNoOperator => (0, 1),
}
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec.snap
@@ -3,32 +3,39 @@
expression: "[a for a in [1, 2, 3]]\n"
---
SOURCE_FILE@0..23
- EXPR_ARRAY_COMP@0..22
- L_BRACK@0..1 "["
- EXPR_VAR@1..2
- NAME@1..2
- IDENT@1..2 "a"
- WHITESPACE@2..3 " "
- FOR_SPEC@3..21
- FOR_KW@3..6 "for"
- WHITESPACE@6..7 " "
- NAME@7..8
- IDENT@7..8 "a"
- WHITESPACE@8..9 " "
- IN_KW@9..11 "in"
- WHITESPACE@11..12 " "
- EXPR_ARRAY@12..21
- L_BRACK@12..13 "["
- EXPR_NUMBER@13..14
- FLOAT@13..14 "1"
- COMMA@14..15 ","
- WHITESPACE@15..16 " "
- EXPR_NUMBER@16..17
- FLOAT@16..17 "2"
- COMMA@17..18 ","
- WHITESPACE@18..19 " "
- EXPR_NUMBER@19..20
- FLOAT@19..20 "3"
- R_BRACK@20..21 "]"
- R_BRACK@21..22 "]"
+ EXPR@0..22
+ EXPR_ARRAY_COMP@0..22
+ L_BRACK@0..1 "["
+ EXPR@1..2
+ EXPR_VAR@1..2
+ NAME@1..2
+ IDENT@1..2 "a"
+ WHITESPACE@2..3 " "
+ FOR_SPEC@3..21
+ FOR_KW@3..6 "for"
+ WHITESPACE@6..7 " "
+ DESTRUCT_FULL@7..8
+ NAME@7..8
+ IDENT@7..8 "a"
+ WHITESPACE@8..9 " "
+ IN_KW@9..11 "in"
+ WHITESPACE@11..12 " "
+ EXPR@12..21
+ EXPR_ARRAY@12..21
+ L_BRACK@12..13 "["
+ EXPR@13..14
+ EXPR_NUMBER@13..14
+ FLOAT@13..14 "1"
+ COMMA@14..15 ","
+ WHITESPACE@15..16 " "
+ EXPR@16..17
+ EXPR_NUMBER@16..17
+ FLOAT@16..17 "2"
+ COMMA@17..18 ","
+ WHITESPACE@18..19 " "
+ EXPR@19..20
+ EXPR_NUMBER@19..20
+ FLOAT@19..20 "3"
+ R_BRACK@20..21 "]"
+ R_BRACK@21..22 "]"
WHITESPACE@22..23 "\n"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_comma.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_comma.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_comma.snap
@@ -3,33 +3,40 @@
expression: "[a, for a in [1, 2, 3]]\n"
---
SOURCE_FILE@0..24
- EXPR_ARRAY_COMP@0..23
- L_BRACK@0..1 "["
- EXPR_VAR@1..2
- NAME@1..2
- IDENT@1..2 "a"
- COMMA@2..3 ","
- WHITESPACE@3..4 " "
- FOR_SPEC@4..22
- FOR_KW@4..7 "for"
- WHITESPACE@7..8 " "
- NAME@8..9
- IDENT@8..9 "a"
- WHITESPACE@9..10 " "
- IN_KW@10..12 "in"
- WHITESPACE@12..13 " "
- EXPR_ARRAY@13..22
- L_BRACK@13..14 "["
- EXPR_NUMBER@14..15
- FLOAT@14..15 "1"
- COMMA@15..16 ","
- WHITESPACE@16..17 " "
- EXPR_NUMBER@17..18
- FLOAT@17..18 "2"
- COMMA@18..19 ","
- WHITESPACE@19..20 " "
- EXPR_NUMBER@20..21
- FLOAT@20..21 "3"
- R_BRACK@21..22 "]"
- R_BRACK@22..23 "]"
+ EXPR@0..23
+ EXPR_ARRAY_COMP@0..23
+ L_BRACK@0..1 "["
+ EXPR@1..2
+ EXPR_VAR@1..2
+ NAME@1..2
+ IDENT@1..2 "a"
+ COMMA@2..3 ","
+ WHITESPACE@3..4 " "
+ FOR_SPEC@4..22
+ FOR_KW@4..7 "for"
+ WHITESPACE@7..8 " "
+ DESTRUCT_FULL@8..9
+ NAME@8..9
+ IDENT@8..9 "a"
+ WHITESPACE@9..10 " "
+ IN_KW@10..12 "in"
+ WHITESPACE@12..13 " "
+ EXPR@13..22
+ EXPR_ARRAY@13..22
+ L_BRACK@13..14 "["
+ EXPR@14..15
+ EXPR_NUMBER@14..15
+ FLOAT@14..15 "1"
+ COMMA@15..16 ","
+ WHITESPACE@16..17 " "
+ EXPR@17..18
+ EXPR_NUMBER@17..18
+ FLOAT@17..18 "2"
+ COMMA@18..19 ","
+ WHITESPACE@19..20 " "
+ EXPR@20..21
+ EXPR_NUMBER@20..21
+ FLOAT@20..21 "3"
+ R_BRACK@21..22 "]"
+ R_BRACK@22..23 "]"
WHITESPACE@23..24 "\n"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_incompatible_with_multiple_elems.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_incompatible_with_multiple_elems.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_incompatible_with_multiple_elems.snap
@@ -3,40 +3,48 @@
expression: "[a for a in [1, 2, 3], b]\n"
---
SOURCE_FILE@0..26
- EXPR_ARRAY@0..25
- L_BRACK@0..1 "["
- EXPR_VAR@1..2
- NAME@1..2
- IDENT@1..2 "a"
- WHITESPACE@2..3 " "
- ERROR_CUSTOM@3..21
- FOR_SPEC@3..21
- FOR_KW@3..6 "for"
- WHITESPACE@6..7 " "
- NAME@7..8
- IDENT@7..8 "a"
- WHITESPACE@8..9 " "
- IN_KW@9..11 "in"
- WHITESPACE@11..12 " "
- EXPR_ARRAY@12..21
- L_BRACK@12..13 "["
- EXPR_NUMBER@13..14
- FLOAT@13..14 "1"
- COMMA@14..15 ","
- WHITESPACE@15..16 " "
- EXPR_NUMBER@16..17
- FLOAT@16..17 "2"
- COMMA@17..18 ","
- WHITESPACE@18..19 " "
- EXPR_NUMBER@19..20
- FLOAT@19..20 "3"
- R_BRACK@20..21 "]"
- COMMA@21..22 ","
- WHITESPACE@22..23 " "
- EXPR_VAR@23..24
- NAME@23..24
- IDENT@23..24 "b"
- R_BRACK@24..25 "]"
+ EXPR@0..25
+ EXPR_ARRAY@0..25
+ L_BRACK@0..1 "["
+ EXPR@1..2
+ EXPR_VAR@1..2
+ NAME@1..2
+ IDENT@1..2 "a"
+ WHITESPACE@2..3 " "
+ ERROR_CUSTOM@3..21
+ FOR_SPEC@3..21
+ FOR_KW@3..6 "for"
+ WHITESPACE@6..7 " "
+ DESTRUCT_FULL@7..8
+ NAME@7..8
+ IDENT@7..8 "a"
+ WHITESPACE@8..9 " "
+ IN_KW@9..11 "in"
+ WHITESPACE@11..12 " "
+ EXPR@12..21
+ EXPR_ARRAY@12..21
+ L_BRACK@12..13 "["
+ EXPR@13..14
+ EXPR_NUMBER@13..14
+ FLOAT@13..14 "1"
+ COMMA@14..15 ","
+ WHITESPACE@15..16 " "
+ EXPR@16..17
+ EXPR_NUMBER@16..17
+ FLOAT@16..17 "2"
+ COMMA@17..18 ","
+ WHITESPACE@18..19 " "
+ EXPR@19..20
+ EXPR_NUMBER@19..20
+ FLOAT@19..20 "3"
+ R_BRACK@20..21 "]"
+ COMMA@21..22 ","
+ WHITESPACE@22..23 " "
+ EXPR@23..24
+ EXPR_VAR@23..24
+ NAME@23..24
+ IDENT@23..24 "b"
+ R_BRACK@24..25 "]"
WHITESPACE@25..26 "\n"
===
LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one array element" }, range: 3..21 }
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_incompatible_with_multiple_elems_w.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_incompatible_with_multiple_elems_w.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_incompatible_with_multiple_elems_w.snap
@@ -3,46 +3,55 @@
expression: "[a, b, for a in [1, 2, 3], c]\n"
---
SOURCE_FILE@0..30
- EXPR_ARRAY@0..29
- L_BRACK@0..1 "["
- EXPR_VAR@1..2
- NAME@1..2
- IDENT@1..2 "a"
- COMMA@2..3 ","
- WHITESPACE@3..4 " "
- EXPR_VAR@4..5
- NAME@4..5
- IDENT@4..5 "b"
- COMMA@5..6 ","
- WHITESPACE@6..7 " "
- ERROR_CUSTOM@7..25
- FOR_SPEC@7..25
- FOR_KW@7..10 "for"
- WHITESPACE@10..11 " "
- NAME@11..12
- IDENT@11..12 "a"
- WHITESPACE@12..13 " "
- IN_KW@13..15 "in"
- WHITESPACE@15..16 " "
- EXPR_ARRAY@16..25
- L_BRACK@16..17 "["
- EXPR_NUMBER@17..18
- FLOAT@17..18 "1"
- COMMA@18..19 ","
- WHITESPACE@19..20 " "
- EXPR_NUMBER@20..21
- FLOAT@20..21 "2"
- COMMA@21..22 ","
- WHITESPACE@22..23 " "
- EXPR_NUMBER@23..24
- FLOAT@23..24 "3"
- R_BRACK@24..25 "]"
- COMMA@25..26 ","
- WHITESPACE@26..27 " "
- EXPR_VAR@27..28
- NAME@27..28
- IDENT@27..28 "c"
- R_BRACK@28..29 "]"
+ EXPR@0..29
+ EXPR_ARRAY@0..29
+ L_BRACK@0..1 "["
+ EXPR@1..2
+ EXPR_VAR@1..2
+ NAME@1..2
+ IDENT@1..2 "a"
+ COMMA@2..3 ","
+ WHITESPACE@3..4 " "
+ EXPR@4..5
+ EXPR_VAR@4..5
+ NAME@4..5
+ IDENT@4..5 "b"
+ COMMA@5..6 ","
+ WHITESPACE@6..7 " "
+ ERROR_CUSTOM@7..25
+ FOR_SPEC@7..25
+ FOR_KW@7..10 "for"
+ WHITESPACE@10..11 " "
+ DESTRUCT_FULL@11..12
+ NAME@11..12
+ IDENT@11..12 "a"
+ WHITESPACE@12..13 " "
+ IN_KW@13..15 "in"
+ WHITESPACE@15..16 " "
+ EXPR@16..25
+ EXPR_ARRAY@16..25
+ L_BRACK@16..17 "["
+ EXPR@17..18
+ EXPR_NUMBER@17..18
+ FLOAT@17..18 "1"
+ COMMA@18..19 ","
+ WHITESPACE@19..20 " "
+ EXPR@20..21
+ EXPR_NUMBER@20..21
+ FLOAT@20..21 "2"
+ COMMA@21..22 ","
+ WHITESPACE@22..23 " "
+ EXPR@23..24
+ EXPR_NUMBER@23..24
+ FLOAT@23..24 "3"
+ R_BRACK@24..25 "]"
+ COMMA@25..26 ","
+ WHITESPACE@26..27 " "
+ EXPR@27..28
+ EXPR_VAR@27..28
+ NAME@27..28
+ IDENT@27..28 "c"
+ R_BRACK@28..29 "]"
WHITESPACE@29..30 "\n"
===
LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one array element" }, range: 7..25 }
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_no_elems.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_no_elems.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_no_elems.snap
@@ -3,31 +3,38 @@
expression: "[for a in [1, 2, 3]]\n"
---
SOURCE_FILE@0..21
- EXPR_ARRAY_COMP@0..20
- L_BRACK@0..1 "["
- ERROR_MISSING_TOKEN@1..1
- FOR_SPEC@1..19
- FOR_KW@1..4 "for"
- WHITESPACE@4..5 " "
- NAME@5..6
- IDENT@5..6 "a"
- WHITESPACE@6..7 " "
- IN_KW@7..9 "in"
- WHITESPACE@9..10 " "
- EXPR_ARRAY@10..19
- L_BRACK@10..11 "["
- EXPR_NUMBER@11..12
- FLOAT@11..12 "1"
- COMMA@12..13 ","
- WHITESPACE@13..14 " "
- EXPR_NUMBER@14..15
- FLOAT@14..15 "2"
- COMMA@15..16 ","
- WHITESPACE@16..17 " "
- EXPR_NUMBER@17..18
- FLOAT@17..18 "3"
- R_BRACK@18..19 "]"
- R_BRACK@19..20 "]"
+ EXPR@0..20
+ EXPR_ARRAY_COMP@0..20
+ L_BRACK@0..1 "["
+ EXPR@1..1
+ ERROR_MISSING_TOKEN@1..1
+ FOR_SPEC@1..19
+ FOR_KW@1..4 "for"
+ WHITESPACE@4..5 " "
+ DESTRUCT_FULL@5..6
+ NAME@5..6
+ IDENT@5..6 "a"
+ WHITESPACE@6..7 " "
+ IN_KW@7..9 "in"
+ WHITESPACE@9..10 " "
+ EXPR@10..19
+ EXPR_ARRAY@10..19
+ L_BRACK@10..11 "["
+ EXPR@11..12
+ EXPR_NUMBER@11..12
+ FLOAT@11..12 "1"
+ COMMA@12..13 ","
+ WHITESPACE@13..14 " "
+ EXPR@14..15
+ EXPR_NUMBER@14..15
+ FLOAT@14..15 "2"
+ COMMA@15..16 ","
+ WHITESPACE@16..17 " "
+ EXPR@17..18
+ EXPR_NUMBER@17..18
+ FLOAT@17..18 "3"
+ R_BRACK@18..19 "]"
+ R_BRACK@19..20 "]"
WHITESPACE@20..21 "\n"
===
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 1..1 }
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__continue_after_total_failure.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__continue_after_total_failure.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__continue_after_total_failure.snap
@@ -3,26 +3,29 @@
expression: "local intr = $intrinsic(test);\n\nlocal a = 1, b = 2, c = a + b;\n\n[c]\n"
---
SOURCE_FILE@0..68
- STMT_LOCAL@0..23
- LOCAL_KW@0..5 "local"
- WHITESPACE@5..6 " "
- BIND_DESTRUCT@6..14
- DESTRUCT_FULL@6..10
- NAME@6..10
- IDENT@6..10 "intr"
- WHITESPACE@10..11 " "
- ASSIGN@11..12 "="
- WHITESPACE@12..13 " "
- EXPR_LITERAL@13..14
- DOLLAR@13..14 "$"
- ERROR_UNEXPECTED_TOKEN@14..23
- IDENT@14..23 "intrinsic"
- EXPR_PARENED@23..29
- L_PAREN@23..24 "("
- EXPR_VAR@24..28
- NAME@24..28
- IDENT@24..28 "test"
- R_PAREN@28..29 ")"
+ EXPR@0..29
+ STMT_LOCAL@0..23
+ LOCAL_KW@0..5 "local"
+ WHITESPACE@5..6 " "
+ BIND_DESTRUCT@6..14
+ DESTRUCT_FULL@6..10
+ NAME@6..10
+ IDENT@6..10 "intr"
+ WHITESPACE@10..11 " "
+ ASSIGN@11..12 "="
+ WHITESPACE@12..13 " "
+ EXPR@13..14
+ EXPR_LITERAL@13..14
+ DOLLAR@13..14 "$"
+ ERROR_UNEXPECTED_TOKEN@14..23
+ IDENT@14..23 "intrinsic"
+ EXPR_PARENED@23..29
+ L_PAREN@23..24 "("
+ EXPR@24..28
+ EXPR_VAR@24..28
+ NAME@24..28
+ IDENT@24..28 "test"
+ R_PAREN@28..29 ")"
ERROR_CUSTOM@29..67
SEMI@29..30 ";"
WHITESPACE@30..32 "\n\n"
@@ -58,14 +61,14 @@
R_BRACK@66..67 "]"
WHITESPACE@67..68 "\n"
===
-LocatedSyntaxError { error: Unexpected { expected: Unnamed(SyntaxKindSet([L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA])), found: IDENT }, range: 14..23 }
+LocatedSyntaxError { error: Unexpected { expected: Unnamed(SyntaxKindSet([L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA, QUESTION_MARK])), found: IDENT }, range: 14..23 }
LocatedSyntaxError { error: Custom { error: "unexpected tokens after end" }, range: 29..67 }
===
x syntax error
,-[1:1]
1 | ,-> local intr = $intrinsic(test);
: || ^^^^|^^^^
- : || `-- expected L_BRACK, L_PAREN, L_BRACE, SEMI, DOT or COMMA, found IDENT
+ : || `-- expected L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA or QUESTION_MARK, found IDENT
2 | |
3 | | local a = 1, b = 2, c = a + b;
4 | |
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__destruct.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__destruct.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__destruct.snap
@@ -3,252 +3,263 @@
expression: "local [a, b, c] = arr;\nlocal [a, ...] = arr_rest;\nlocal [..., a] = rest_arr;\nlocal [...] = rest_in_arr;\nlocal [a, ...n] = arr_rest_n;\nlocal [...n, a] = rest_arr_n;\nlocal [...n] = rest_in_arr_n;\n\nlocal {a, b, c} = obj;\nlocal {a, b, c, ...} = obj_rest;\nlocal {a, b, c, ...n} = obj_rest_n;\n\nnull\n"
---
SOURCE_FILE@0..293
- STMT_LOCAL@0..22
- LOCAL_KW@0..5 "local"
- WHITESPACE@5..6 " "
- BIND_DESTRUCT@6..21
- DESTRUCT_ARRAY@6..15
- L_BRACK@6..7 "["
- DESTRUCT_FULL@7..8
- NAME@7..8
- IDENT@7..8 "a"
- COMMA@8..9 ","
- WHITESPACE@9..10 " "
- DESTRUCT_FULL@10..11
- NAME@10..11
- IDENT@10..11 "b"
- COMMA@11..12 ","
- WHITESPACE@12..13 " "
- DESTRUCT_FULL@13..14
- NAME@13..14
- IDENT@13..14 "c"
- R_BRACK@14..15 "]"
- WHITESPACE@15..16 " "
- ASSIGN@16..17 "="
- WHITESPACE@17..18 " "
- EXPR_VAR@18..21
- NAME@18..21
- IDENT@18..21 "arr"
- SEMI@21..22 ";"
- WHITESPACE@22..23 "\n"
- STMT_LOCAL@23..49
- LOCAL_KW@23..28 "local"
- WHITESPACE@28..29 " "
- BIND_DESTRUCT@29..48
- DESTRUCT_ARRAY@29..37
- L_BRACK@29..30 "["
- DESTRUCT_FULL@30..31
- NAME@30..31
- IDENT@30..31 "a"
- COMMA@31..32 ","
- WHITESPACE@32..33 " "
- DESTRUCT_REST@33..36
- DOTDOTDOT@33..36 "..."
- R_BRACK@36..37 "]"
- WHITESPACE@37..38 " "
- ASSIGN@38..39 "="
- WHITESPACE@39..40 " "
- EXPR_VAR@40..48
- NAME@40..48
- IDENT@40..48 "arr_rest"
- SEMI@48..49 ";"
- WHITESPACE@49..50 "\n"
- STMT_LOCAL@50..76
- LOCAL_KW@50..55 "local"
- WHITESPACE@55..56 " "
- BIND_DESTRUCT@56..75
- DESTRUCT_ARRAY@56..64
- L_BRACK@56..57 "["
- DESTRUCT_REST@57..60
- DOTDOTDOT@57..60 "..."
- COMMA@60..61 ","
- WHITESPACE@61..62 " "
- DESTRUCT_FULL@62..63
- NAME@62..63
- IDENT@62..63 "a"
- R_BRACK@63..64 "]"
- WHITESPACE@64..65 " "
- ASSIGN@65..66 "="
- WHITESPACE@66..67 " "
- EXPR_VAR@67..75
- NAME@67..75
- IDENT@67..75 "rest_arr"
- SEMI@75..76 ";"
- WHITESPACE@76..77 "\n"
- STMT_LOCAL@77..103
- LOCAL_KW@77..82 "local"
- WHITESPACE@82..83 " "
- BIND_DESTRUCT@83..102
- DESTRUCT_ARRAY@83..88
- L_BRACK@83..84 "["
- DESTRUCT_REST@84..87
- DOTDOTDOT@84..87 "..."
- R_BRACK@87..88 "]"
- WHITESPACE@88..89 " "
- ASSIGN@89..90 "="
- WHITESPACE@90..91 " "
- EXPR_VAR@91..102
- NAME@91..102
- IDENT@91..102 "rest_in_arr"
- SEMI@102..103 ";"
- WHITESPACE@103..104 "\n"
- STMT_LOCAL@104..133
- LOCAL_KW@104..109 "local"
- WHITESPACE@109..110 " "
- BIND_DESTRUCT@110..132
- DESTRUCT_ARRAY@110..119
- L_BRACK@110..111 "["
- DESTRUCT_FULL@111..112
- NAME@111..112
- IDENT@111..112 "a"
- COMMA@112..113 ","
- WHITESPACE@113..114 " "
- DESTRUCT_REST@114..118
- DOTDOTDOT@114..117 "..."
- IDENT@117..118 "n"
- R_BRACK@118..119 "]"
- WHITESPACE@119..120 " "
- ASSIGN@120..121 "="
- WHITESPACE@121..122 " "
- EXPR_VAR@122..132
- NAME@122..132
- IDENT@122..132 "arr_rest_n"
- SEMI@132..133 ";"
- WHITESPACE@133..134 "\n"
- STMT_LOCAL@134..163
- LOCAL_KW@134..139 "local"
- WHITESPACE@139..140 " "
- BIND_DESTRUCT@140..162
- DESTRUCT_ARRAY@140..149
- L_BRACK@140..141 "["
- DESTRUCT_REST@141..145
- DOTDOTDOT@141..144 "..."
- IDENT@144..145 "n"
- COMMA@145..146 ","
- WHITESPACE@146..147 " "
- DESTRUCT_FULL@147..148
- NAME@147..148
- IDENT@147..148 "a"
- R_BRACK@148..149 "]"
- WHITESPACE@149..150 " "
- ASSIGN@150..151 "="
- WHITESPACE@151..152 " "
- EXPR_VAR@152..162
- NAME@152..162
- IDENT@152..162 "rest_arr_n"
- SEMI@162..163 ";"
- WHITESPACE@163..164 "\n"
- STMT_LOCAL@164..193
- LOCAL_KW@164..169 "local"
- WHITESPACE@169..170 " "
- BIND_DESTRUCT@170..192
- DESTRUCT_ARRAY@170..176
- L_BRACK@170..171 "["
- DESTRUCT_REST@171..175
- DOTDOTDOT@171..174 "..."
- IDENT@174..175 "n"
- R_BRACK@175..176 "]"
- WHITESPACE@176..177 " "
- ASSIGN@177..178 "="
- WHITESPACE@178..179 " "
- EXPR_VAR@179..192
- NAME@179..192
- IDENT@179..192 "rest_in_arr_n"
- SEMI@192..193 ";"
- WHITESPACE@193..195 "\n\n"
- STMT_LOCAL@195..217
- LOCAL_KW@195..200 "local"
- WHITESPACE@200..201 " "
- BIND_DESTRUCT@201..216
- DESTRUCT_OBJECT@201..210
- L_BRACE@201..202 "{"
- DESTRUCT_OBJECT_FIELD@202..203
- NAME@202..203
- IDENT@202..203 "a"
- COMMA@203..204 ","
- WHITESPACE@204..205 " "
- DESTRUCT_OBJECT_FIELD@205..206
- NAME@205..206
- IDENT@205..206 "b"
- COMMA@206..207 ","
- WHITESPACE@207..208 " "
- DESTRUCT_OBJECT_FIELD@208..209
- NAME@208..209
- IDENT@208..209 "c"
- R_BRACE@209..210 "}"
- WHITESPACE@210..211 " "
- ASSIGN@211..212 "="
- WHITESPACE@212..213 " "
- EXPR_VAR@213..216
- NAME@213..216
- IDENT@213..216 "obj"
- SEMI@216..217 ";"
- WHITESPACE@217..218 "\n"
- STMT_LOCAL@218..250
- LOCAL_KW@218..223 "local"
- WHITESPACE@223..224 " "
- BIND_DESTRUCT@224..249
- DESTRUCT_OBJECT@224..238
- L_BRACE@224..225 "{"
- DESTRUCT_OBJECT_FIELD@225..226
- NAME@225..226
- IDENT@225..226 "a"
- COMMA@226..227 ","
- WHITESPACE@227..228 " "
- DESTRUCT_OBJECT_FIELD@228..229
- NAME@228..229
- IDENT@228..229 "b"
- COMMA@229..230 ","
- WHITESPACE@230..231 " "
- DESTRUCT_OBJECT_FIELD@231..232
- NAME@231..232
- IDENT@231..232 "c"
- COMMA@232..233 ","
- WHITESPACE@233..234 " "
- DESTRUCT_REST@234..237
- DOTDOTDOT@234..237 "..."
- R_BRACE@237..238 "}"
- WHITESPACE@238..239 " "
- ASSIGN@239..240 "="
- WHITESPACE@240..241 " "
- EXPR_VAR@241..249
- NAME@241..249
- IDENT@241..249 "obj_rest"
- SEMI@249..250 ";"
- WHITESPACE@250..251 "\n"
- STMT_LOCAL@251..286
- LOCAL_KW@251..256 "local"
- WHITESPACE@256..257 " "
- BIND_DESTRUCT@257..285
- DESTRUCT_OBJECT@257..272
- L_BRACE@257..258 "{"
- DESTRUCT_OBJECT_FIELD@258..259
- NAME@258..259
- IDENT@258..259 "a"
- COMMA@259..260 ","
- WHITESPACE@260..261 " "
- DESTRUCT_OBJECT_FIELD@261..262
- NAME@261..262
- IDENT@261..262 "b"
- COMMA@262..263 ","
- WHITESPACE@263..264 " "
- DESTRUCT_OBJECT_FIELD@264..265
- NAME@264..265
- IDENT@264..265 "c"
- COMMA@265..266 ","
- WHITESPACE@266..267 " "
- DESTRUCT_REST@267..271
- DOTDOTDOT@267..270 "..."
- IDENT@270..271 "n"
- R_BRACE@271..272 "}"
- WHITESPACE@272..273 " "
- ASSIGN@273..274 "="
- WHITESPACE@274..275 " "
- EXPR_VAR@275..285
- NAME@275..285
- IDENT@275..285 "obj_rest_n"
- SEMI@285..286 ";"
- WHITESPACE@286..288 "\n\n"
- EXPR_LITERAL@288..292
- NULL_KW@288..292 "null"
+ EXPR@0..292
+ STMT_LOCAL@0..22
+ LOCAL_KW@0..5 "local"
+ WHITESPACE@5..6 " "
+ BIND_DESTRUCT@6..21
+ DESTRUCT_ARRAY@6..15
+ L_BRACK@6..7 "["
+ DESTRUCT_FULL@7..8
+ NAME@7..8
+ IDENT@7..8 "a"
+ COMMA@8..9 ","
+ WHITESPACE@9..10 " "
+ DESTRUCT_FULL@10..11
+ NAME@10..11
+ IDENT@10..11 "b"
+ COMMA@11..12 ","
+ WHITESPACE@12..13 " "
+ DESTRUCT_FULL@13..14
+ NAME@13..14
+ IDENT@13..14 "c"
+ R_BRACK@14..15 "]"
+ WHITESPACE@15..16 " "
+ ASSIGN@16..17 "="
+ WHITESPACE@17..18 " "
+ EXPR@18..21
+ EXPR_VAR@18..21
+ NAME@18..21
+ IDENT@18..21 "arr"
+ SEMI@21..22 ";"
+ WHITESPACE@22..23 "\n"
+ STMT_LOCAL@23..49
+ LOCAL_KW@23..28 "local"
+ WHITESPACE@28..29 " "
+ BIND_DESTRUCT@29..48
+ DESTRUCT_ARRAY@29..37
+ L_BRACK@29..30 "["
+ DESTRUCT_FULL@30..31
+ NAME@30..31
+ IDENT@30..31 "a"
+ COMMA@31..32 ","
+ WHITESPACE@32..33 " "
+ DESTRUCT_REST@33..36
+ DOTDOTDOT@33..36 "..."
+ R_BRACK@36..37 "]"
+ WHITESPACE@37..38 " "
+ ASSIGN@38..39 "="
+ WHITESPACE@39..40 " "
+ EXPR@40..48
+ EXPR_VAR@40..48
+ NAME@40..48
+ IDENT@40..48 "arr_rest"
+ SEMI@48..49 ";"
+ WHITESPACE@49..50 "\n"
+ STMT_LOCAL@50..76
+ LOCAL_KW@50..55 "local"
+ WHITESPACE@55..56 " "
+ BIND_DESTRUCT@56..75
+ DESTRUCT_ARRAY@56..64
+ L_BRACK@56..57 "["
+ DESTRUCT_REST@57..60
+ DOTDOTDOT@57..60 "..."
+ COMMA@60..61 ","
+ WHITESPACE@61..62 " "
+ DESTRUCT_FULL@62..63
+ NAME@62..63
+ IDENT@62..63 "a"
+ R_BRACK@63..64 "]"
+ WHITESPACE@64..65 " "
+ ASSIGN@65..66 "="
+ WHITESPACE@66..67 " "
+ EXPR@67..75
+ EXPR_VAR@67..75
+ NAME@67..75
+ IDENT@67..75 "rest_arr"
+ SEMI@75..76 ";"
+ WHITESPACE@76..77 "\n"
+ STMT_LOCAL@77..103
+ LOCAL_KW@77..82 "local"
+ WHITESPACE@82..83 " "
+ BIND_DESTRUCT@83..102
+ DESTRUCT_ARRAY@83..88
+ L_BRACK@83..84 "["
+ DESTRUCT_REST@84..87
+ DOTDOTDOT@84..87 "..."
+ R_BRACK@87..88 "]"
+ WHITESPACE@88..89 " "
+ ASSIGN@89..90 "="
+ WHITESPACE@90..91 " "
+ EXPR@91..102
+ EXPR_VAR@91..102
+ NAME@91..102
+ IDENT@91..102 "rest_in_arr"
+ SEMI@102..103 ";"
+ WHITESPACE@103..104 "\n"
+ STMT_LOCAL@104..133
+ LOCAL_KW@104..109 "local"
+ WHITESPACE@109..110 " "
+ BIND_DESTRUCT@110..132
+ DESTRUCT_ARRAY@110..119
+ L_BRACK@110..111 "["
+ DESTRUCT_FULL@111..112
+ NAME@111..112
+ IDENT@111..112 "a"
+ COMMA@112..113 ","
+ WHITESPACE@113..114 " "
+ DESTRUCT_REST@114..118
+ DOTDOTDOT@114..117 "..."
+ IDENT@117..118 "n"
+ R_BRACK@118..119 "]"
+ WHITESPACE@119..120 " "
+ ASSIGN@120..121 "="
+ WHITESPACE@121..122 " "
+ EXPR@122..132
+ EXPR_VAR@122..132
+ NAME@122..132
+ IDENT@122..132 "arr_rest_n"
+ SEMI@132..133 ";"
+ WHITESPACE@133..134 "\n"
+ STMT_LOCAL@134..163
+ LOCAL_KW@134..139 "local"
+ WHITESPACE@139..140 " "
+ BIND_DESTRUCT@140..162
+ DESTRUCT_ARRAY@140..149
+ L_BRACK@140..141 "["
+ DESTRUCT_REST@141..145
+ DOTDOTDOT@141..144 "..."
+ IDENT@144..145 "n"
+ COMMA@145..146 ","
+ WHITESPACE@146..147 " "
+ DESTRUCT_FULL@147..148
+ NAME@147..148
+ IDENT@147..148 "a"
+ R_BRACK@148..149 "]"
+ WHITESPACE@149..150 " "
+ ASSIGN@150..151 "="
+ WHITESPACE@151..152 " "
+ EXPR@152..162
+ EXPR_VAR@152..162
+ NAME@152..162
+ IDENT@152..162 "rest_arr_n"
+ SEMI@162..163 ";"
+ WHITESPACE@163..164 "\n"
+ STMT_LOCAL@164..193
+ LOCAL_KW@164..169 "local"
+ WHITESPACE@169..170 " "
+ BIND_DESTRUCT@170..192
+ DESTRUCT_ARRAY@170..176
+ L_BRACK@170..171 "["
+ DESTRUCT_REST@171..175
+ DOTDOTDOT@171..174 "..."
+ IDENT@174..175 "n"
+ R_BRACK@175..176 "]"
+ WHITESPACE@176..177 " "
+ ASSIGN@177..178 "="
+ WHITESPACE@178..179 " "
+ EXPR@179..192
+ EXPR_VAR@179..192
+ NAME@179..192
+ IDENT@179..192 "rest_in_arr_n"
+ SEMI@192..193 ";"
+ WHITESPACE@193..195 "\n\n"
+ STMT_LOCAL@195..217
+ LOCAL_KW@195..200 "local"
+ WHITESPACE@200..201 " "
+ BIND_DESTRUCT@201..216
+ DESTRUCT_OBJECT@201..210
+ L_BRACE@201..202 "{"
+ DESTRUCT_OBJECT_FIELD@202..203
+ NAME@202..203
+ IDENT@202..203 "a"
+ COMMA@203..204 ","
+ WHITESPACE@204..205 " "
+ DESTRUCT_OBJECT_FIELD@205..206
+ NAME@205..206
+ IDENT@205..206 "b"
+ COMMA@206..207 ","
+ WHITESPACE@207..208 " "
+ DESTRUCT_OBJECT_FIELD@208..209
+ NAME@208..209
+ IDENT@208..209 "c"
+ R_BRACE@209..210 "}"
+ WHITESPACE@210..211 " "
+ ASSIGN@211..212 "="
+ WHITESPACE@212..213 " "
+ EXPR@213..216
+ EXPR_VAR@213..216
+ NAME@213..216
+ IDENT@213..216 "obj"
+ SEMI@216..217 ";"
+ WHITESPACE@217..218 "\n"
+ STMT_LOCAL@218..250
+ LOCAL_KW@218..223 "local"
+ WHITESPACE@223..224 " "
+ BIND_DESTRUCT@224..249
+ DESTRUCT_OBJECT@224..238
+ L_BRACE@224..225 "{"
+ DESTRUCT_OBJECT_FIELD@225..226
+ NAME@225..226
+ IDENT@225..226 "a"
+ COMMA@226..227 ","
+ WHITESPACE@227..228 " "
+ DESTRUCT_OBJECT_FIELD@228..229
+ NAME@228..229
+ IDENT@228..229 "b"
+ COMMA@229..230 ","
+ WHITESPACE@230..231 " "
+ DESTRUCT_OBJECT_FIELD@231..232
+ NAME@231..232
+ IDENT@231..232 "c"
+ COMMA@232..233 ","
+ WHITESPACE@233..234 " "
+ DESTRUCT_REST@234..237
+ DOTDOTDOT@234..237 "..."
+ R_BRACE@237..238 "}"
+ WHITESPACE@238..239 " "
+ ASSIGN@239..240 "="
+ WHITESPACE@240..241 " "
+ EXPR@241..249
+ EXPR_VAR@241..249
+ NAME@241..249
+ IDENT@241..249 "obj_rest"
+ SEMI@249..250 ";"
+ WHITESPACE@250..251 "\n"
+ STMT_LOCAL@251..286
+ LOCAL_KW@251..256 "local"
+ WHITESPACE@256..257 " "
+ BIND_DESTRUCT@257..285
+ DESTRUCT_OBJECT@257..272
+ L_BRACE@257..258 "{"
+ DESTRUCT_OBJECT_FIELD@258..259
+ NAME@258..259
+ IDENT@258..259 "a"
+ COMMA@259..260 ","
+ WHITESPACE@260..261 " "
+ DESTRUCT_OBJECT_FIELD@261..262
+ NAME@261..262
+ IDENT@261..262 "b"
+ COMMA@262..263 ","
+ WHITESPACE@263..264 " "
+ DESTRUCT_OBJECT_FIELD@264..265
+ NAME@264..265
+ IDENT@264..265 "c"
+ COMMA@265..266 ","
+ WHITESPACE@266..267 " "
+ DESTRUCT_REST@267..271
+ DOTDOTDOT@267..270 "..."
+ IDENT@270..271 "n"
+ R_BRACE@271..272 "}"
+ WHITESPACE@272..273 " "
+ ASSIGN@273..274 "="
+ WHITESPACE@274..275 " "
+ EXPR@275..285
+ EXPR_VAR@275..285
+ NAME@275..285
+ IDENT@275..285 "obj_rest_n"
+ SEMI@285..286 ";"
+ WHITESPACE@286..288 "\n\n"
+ EXPR_LITERAL@288..292
+ NULL_KW@288..292 "null"
WHITESPACE@292..293 "\n"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__empty.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__empty.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__empty.snap
@@ -4,7 +4,8 @@
---
SOURCE_FILE@0..1
WHITESPACE@0..1 " "
- ERROR_MISSING_TOKEN@1..1
+ EXPR@1..1
+ ERROR_MISSING_TOKEN@1..1
===
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 1..1 }
===
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function.snap
@@ -3,37 +3,40 @@
expression: "function(a, b = 1) a + b\n"
---
SOURCE_FILE@0..25
- EXPR_FUNCTION@0..24
- FUNCTION_KW@0..8 "function"
- PARAMS_DESC@8..18
- L_PAREN@8..9 "("
- PARAM@9..10
- DESTRUCT_FULL@9..10
- NAME@9..10
- IDENT@9..10 "a"
- COMMA@10..11 ","
- WHITESPACE@11..12 " "
- PARAM@12..17
- DESTRUCT_FULL@12..13
- NAME@12..13
- IDENT@12..13 "b"
- WHITESPACE@13..14 " "
- ASSIGN@14..15 "="
- WHITESPACE@15..16 " "
- EXPR_NUMBER@16..17
- FLOAT@16..17 "1"
- R_PAREN@17..18 ")"
- WHITESPACE@18..19 " "
- EXPR_BINARY@19..24
- LHS_EXPR@19..20
- EXPR_VAR@19..20
- NAME@19..20
- IDENT@19..20 "a"
- WHITESPACE@20..21 " "
- PLUS@21..22 "+"
- WHITESPACE@22..23 " "
- EXPR_VAR@23..24
- NAME@23..24
- IDENT@23..24 "b"
+ EXPR@0..24
+ EXPR_FUNCTION@0..24
+ FUNCTION_KW@0..8 "function"
+ PARAMS_DESC@8..18
+ L_PAREN@8..9 "("
+ PARAM@9..10
+ DESTRUCT_FULL@9..10
+ NAME@9..10
+ IDENT@9..10 "a"
+ COMMA@10..11 ","
+ WHITESPACE@11..12 " "
+ PARAM@12..17
+ DESTRUCT_FULL@12..13
+ NAME@12..13
+ IDENT@12..13 "b"
+ WHITESPACE@13..14 " "
+ ASSIGN@14..15 "="
+ WHITESPACE@15..16 " "
+ EXPR@16..17
+ EXPR_NUMBER@16..17
+ FLOAT@16..17 "1"
+ R_PAREN@17..18 ")"
+ WHITESPACE@18..19 " "
+ EXPR@19..24
+ EXPR_BINARY@19..24
+ EXPR@19..20
+ EXPR_VAR@19..20
+ NAME@19..20
+ IDENT@19..20 "a"
+ WHITESPACE@20..21 " "
+ PLUS@21..22 "+"
+ WHITESPACE@22..23 " "
+ EXPR@23..24
+ EXPR_VAR@23..24
+ NAME@23..24
+ IDENT@23..24 "b"
WHITESPACE@24..25 "\n"
-
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_body.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_body.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_body.snap
@@ -3,23 +3,25 @@
expression: "function(a, b)\n"
---
SOURCE_FILE@0..15
- EXPR_FUNCTION@0..15
- FUNCTION_KW@0..8 "function"
- PARAMS_DESC@8..14
- L_PAREN@8..9 "("
- PARAM@9..10
- DESTRUCT_FULL@9..10
- NAME@9..10
- IDENT@9..10 "a"
- COMMA@10..11 ","
- WHITESPACE@11..12 " "
- PARAM@12..13
- DESTRUCT_FULL@12..13
- NAME@12..13
- IDENT@12..13 "b"
- R_PAREN@13..14 ")"
- WHITESPACE@14..15 "\n"
- ERROR_MISSING_TOKEN@15..15
+ EXPR@0..15
+ EXPR_FUNCTION@0..15
+ FUNCTION_KW@0..8 "function"
+ PARAMS_DESC@8..14
+ L_PAREN@8..9 "("
+ PARAM@9..10
+ DESTRUCT_FULL@9..10
+ NAME@9..10
+ IDENT@9..10 "a"
+ COMMA@10..11 ","
+ WHITESPACE@11..12 " "
+ PARAM@12..13
+ DESTRUCT_FULL@12..13
+ NAME@12..13
+ IDENT@12..13 "b"
+ R_PAREN@13..14 ")"
+ WHITESPACE@14..15 "\n"
+ EXPR@15..15
+ ERROR_MISSING_TOKEN@15..15
===
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 15..15 }
===
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_no_value.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_no_value.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_no_value.snap
@@ -3,37 +3,41 @@
expression: "function(a, b = ) a + b\n"
---
SOURCE_FILE@0..24
- EXPR_FUNCTION@0..23
- FUNCTION_KW@0..8 "function"
- PARAMS_DESC@8..17
- L_PAREN@8..9 "("
- PARAM@9..10
- DESTRUCT_FULL@9..10
- NAME@9..10
- IDENT@9..10 "a"
- COMMA@10..11 ","
- WHITESPACE@11..12 " "
- PARAM@12..16
- DESTRUCT_FULL@12..13
- NAME@12..13
- IDENT@12..13 "b"
- WHITESPACE@13..14 " "
- ASSIGN@14..15 "="
- WHITESPACE@15..16 " "
- ERROR_MISSING_TOKEN@16..16
- R_PAREN@16..17 ")"
- WHITESPACE@17..18 " "
- EXPR_BINARY@18..23
- LHS_EXPR@18..19
- EXPR_VAR@18..19
- NAME@18..19
- IDENT@18..19 "a"
- WHITESPACE@19..20 " "
- PLUS@20..21 "+"
- WHITESPACE@21..22 " "
- EXPR_VAR@22..23
- NAME@22..23
- IDENT@22..23 "b"
+ EXPR@0..23
+ EXPR_FUNCTION@0..23
+ FUNCTION_KW@0..8 "function"
+ PARAMS_DESC@8..17
+ L_PAREN@8..9 "("
+ PARAM@9..10
+ DESTRUCT_FULL@9..10
+ NAME@9..10
+ IDENT@9..10 "a"
+ COMMA@10..11 ","
+ WHITESPACE@11..12 " "
+ PARAM@12..16
+ DESTRUCT_FULL@12..13
+ NAME@12..13
+ IDENT@12..13 "b"
+ WHITESPACE@13..14 " "
+ ASSIGN@14..15 "="
+ WHITESPACE@15..16 " "
+ EXPR@16..16
+ ERROR_MISSING_TOKEN@16..16
+ R_PAREN@16..17 ")"
+ WHITESPACE@17..18 " "
+ EXPR@18..23
+ EXPR_BINARY@18..23
+ EXPR@18..19
+ EXPR_VAR@18..19
+ NAME@18..19
+ IDENT@18..19 "a"
+ WHITESPACE@19..20 " "
+ PLUS@20..21 "+"
+ WHITESPACE@21..22 " "
+ EXPR@22..23
+ EXPR_VAR@22..23
+ NAME@22..23
+ IDENT@22..23 "b"
WHITESPACE@23..24 "\n"
===
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 16..16 }
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_rparen.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_rparen.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_rparen.snap
@@ -3,23 +3,25 @@
expression: "function(a, b\n"
---
SOURCE_FILE@0..14
- EXPR_FUNCTION@0..14
- FUNCTION_KW@0..8 "function"
- PARAMS_DESC@8..14
- L_PAREN@8..9 "("
- PARAM@9..10
- DESTRUCT_FULL@9..10
- NAME@9..10
- IDENT@9..10 "a"
- COMMA@10..11 ","
- WHITESPACE@11..12 " "
- PARAM@12..13
- DESTRUCT_FULL@12..13
- NAME@12..13
- IDENT@12..13 "b"
- WHITESPACE@13..14 "\n"
- ERROR_MISSING_TOKEN@14..14
- ERROR_MISSING_TOKEN@14..14
+ EXPR@0..14
+ EXPR_FUNCTION@0..14
+ FUNCTION_KW@0..8 "function"
+ PARAMS_DESC@8..14
+ L_PAREN@8..9 "("
+ PARAM@9..10
+ DESTRUCT_FULL@9..10
+ NAME@9..10
+ IDENT@9..10 "a"
+ COMMA@10..11 ","
+ WHITESPACE@11..12 " "
+ PARAM@12..13
+ DESTRUCT_FULL@12..13
+ NAME@12..13
+ IDENT@12..13 "b"
+ WHITESPACE@13..14 "\n"
+ ERROR_MISSING_TOKEN@14..14
+ EXPR@14..14
+ ERROR_MISSING_TOKEN@14..14
===
LocatedSyntaxError { error: Missing { expected: Unnamed(SyntaxKindSet([R_PAREN, COMMA, ASSIGN])) }, range: 14..14 }
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 14..14 }
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_method.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_method.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_method.snap
@@ -3,50 +3,53 @@
expression: "local\n\ta(x) = x,\n\ta = function(x) x,\n; c\n"
---
SOURCE_FILE@0..41
- STMT_LOCAL@0..38
- LOCAL_KW@0..5 "local"
- WHITESPACE@5..7 "\n\t"
- BIND_FUNCTION@7..15
- NAME@7..8
- IDENT@7..8 "a"
- PARAMS_DESC@8..11
- L_PAREN@8..9 "("
- PARAM@9..10
- DESTRUCT_FULL@9..10
- NAME@9..10
- IDENT@9..10 "x"
- R_PAREN@10..11 ")"
- WHITESPACE@11..12 " "
- ASSIGN@12..13 "="
- WHITESPACE@13..14 " "
- EXPR_VAR@14..15
- NAME@14..15
- IDENT@14..15 "x"
- COMMA@15..16 ","
- WHITESPACE@16..18 "\n\t"
- BIND_FUNCTION@18..35
- NAME@18..19
- IDENT@18..19 "a"
- WHITESPACE@19..20 " "
- ASSIGN@20..21 "="
- WHITESPACE@21..22 " "
- FUNCTION_KW@22..30 "function"
- PARAMS_DESC@30..33
- L_PAREN@30..31 "("
- PARAM@31..32
- DESTRUCT_FULL@31..32
- NAME@31..32
- IDENT@31..32 "x"
- R_PAREN@32..33 ")"
- WHITESPACE@33..34 " "
- EXPR_VAR@34..35
- NAME@34..35
- IDENT@34..35 "x"
- COMMA@35..36 ","
- WHITESPACE@36..37 "\n"
- SEMI@37..38 ";"
- WHITESPACE@38..39 " "
- EXPR_VAR@39..40
- NAME@39..40
- IDENT@39..40 "c"
+ EXPR@0..40
+ STMT_LOCAL@0..38
+ LOCAL_KW@0..5 "local"
+ WHITESPACE@5..7 "\n\t"
+ BIND_FUNCTION@7..15
+ NAME@7..8
+ IDENT@7..8 "a"
+ PARAMS_DESC@8..11
+ L_PAREN@8..9 "("
+ PARAM@9..10
+ DESTRUCT_FULL@9..10
+ NAME@9..10
+ IDENT@9..10 "x"
+ R_PAREN@10..11 ")"
+ WHITESPACE@11..12 " "
+ ASSIGN@12..13 "="
+ WHITESPACE@13..14 " "
+ EXPR@14..15
+ EXPR_VAR@14..15
+ NAME@14..15
+ IDENT@14..15 "x"
+ COMMA@15..16 ","
+ WHITESPACE@16..18 "\n\t"
+ BIND_FUNCTION@18..35
+ NAME@18..19
+ IDENT@18..19 "a"
+ WHITESPACE@19..20 " "
+ ASSIGN@20..21 "="
+ WHITESPACE@21..22 " "
+ FUNCTION_KW@22..30 "function"
+ PARAMS_DESC@30..33
+ L_PAREN@30..31 "("
+ PARAM@31..32
+ DESTRUCT_FULL@31..32
+ NAME@31..32
+ IDENT@31..32 "x"
+ R_PAREN@32..33 ")"
+ WHITESPACE@33..34 " "
+ EXPR@34..35
+ EXPR_VAR@34..35
+ NAME@34..35
+ IDENT@34..35 "x"
+ COMMA@35..36 ","
+ WHITESPACE@36..37 "\n"
+ SEMI@37..38 ";"
+ WHITESPACE@38..39 " "
+ EXPR_VAR@39..40
+ NAME@39..40
+ IDENT@39..40 "c"
WHITESPACE@40..41 "\n"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_no_value_recovery.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_no_value_recovery.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_no_value_recovery.snap
@@ -3,37 +3,40 @@
expression: "local a =\nlocal b = 3;\n1\n"
---
SOURCE_FILE@0..25
- STMT_LOCAL@0..25
- LOCAL_KW@0..5 "local"
- WHITESPACE@5..6 " "
- BIND_DESTRUCT@6..24
- DESTRUCT_FULL@6..7
- NAME@6..7
- IDENT@6..7 "a"
- WHITESPACE@7..8 " "
- ASSIGN@8..9 "="
- WHITESPACE@9..10 "\n"
- STMT_LOCAL@10..22
- LOCAL_KW@10..15 "local"
- WHITESPACE@15..16 " "
- BIND_DESTRUCT@16..21
- DESTRUCT_FULL@16..17
- NAME@16..17
- IDENT@16..17 "b"
- WHITESPACE@17..18 " "
- ASSIGN@18..19 "="
- WHITESPACE@19..20 " "
- EXPR_NUMBER@20..21
- FLOAT@20..21 "3"
- SEMI@21..22 ";"
- WHITESPACE@22..23 "\n"
- EXPR_NUMBER@23..24
- FLOAT@23..24 "1"
- WHITESPACE@24..25 "\n"
+ EXPR@0..25
+ STMT_LOCAL@0..25
+ LOCAL_KW@0..5 "local"
+ WHITESPACE@5..6 " "
+ BIND_DESTRUCT@6..24
+ DESTRUCT_FULL@6..7
+ NAME@6..7
+ IDENT@6..7 "a"
+ WHITESPACE@7..8 " "
+ ASSIGN@8..9 "="
+ WHITESPACE@9..10 "\n"
+ EXPR@10..24
+ STMT_LOCAL@10..22
+ LOCAL_KW@10..15 "local"
+ WHITESPACE@15..16 " "
+ BIND_DESTRUCT@16..21
+ DESTRUCT_FULL@16..17
+ NAME@16..17
+ IDENT@16..17 "b"
+ WHITESPACE@17..18 " "
+ ASSIGN@18..19 "="
+ WHITESPACE@19..20 " "
+ EXPR@20..21
+ EXPR_NUMBER@20..21
+ FLOAT@20..21 "3"
+ SEMI@21..22 ";"
+ WHITESPACE@22..23 "\n"
+ EXPR_NUMBER@23..24
+ FLOAT@23..24 "1"
+ WHITESPACE@24..25 "\n"
+ ERROR_MISSING_TOKEN@25..25
ERROR_MISSING_TOKEN@25..25
- ERROR_MISSING_TOKEN@25..25
===
-LocatedSyntaxError { error: Missing { expected: Unnamed(SyntaxKindSet([L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA])) }, range: 25..25 }
+LocatedSyntaxError { error: Missing { expected: Unnamed(SyntaxKindSet([L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA, QUESTION_MARK])) }, range: 25..25 }
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 25..25 }
===
x syntax error
@@ -42,5 +45,5 @@
3 | 1
: ^^
: |`-- missing expression
- : `-- missing L_BRACK, L_PAREN, L_BRACE, SEMI, DOT or COMMA
+ : `-- missing L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA or QUESTION_MARK
`----
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_novalue.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_novalue.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_novalue.snap
@@ -3,19 +3,21 @@
expression: "local a =\n"
---
SOURCE_FILE@0..10
- STMT_LOCAL@0..10
- LOCAL_KW@0..5 "local"
- WHITESPACE@5..6 " "
- BIND_DESTRUCT@6..10
- DESTRUCT_FULL@6..7
- NAME@6..7
- IDENT@6..7 "a"
- WHITESPACE@7..8 " "
- ASSIGN@8..9 "="
- WHITESPACE@9..10 "\n"
+ EXPR@0..10
+ STMT_LOCAL@0..10
+ LOCAL_KW@0..5 "local"
+ WHITESPACE@5..6 " "
+ BIND_DESTRUCT@6..10
+ DESTRUCT_FULL@6..7
+ NAME@6..7
+ IDENT@6..7 "a"
+ WHITESPACE@7..8 " "
+ ASSIGN@8..9 "="
+ WHITESPACE@9..10 "\n"
+ EXPR@10..10
+ ERROR_MISSING_TOKEN@10..10
ERROR_MISSING_TOKEN@10..10
ERROR_MISSING_TOKEN@10..10
- ERROR_MISSING_TOKEN@10..10
===
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 10..10 }
LocatedSyntaxError { error: Missing { expected: Unnamed(SyntaxKindSet([SEMI, COMMA])) }, range: 10..10 }
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__named_before_positional.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__named_before_positional.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__named_before_positional.snap
@@ -3,57 +3,65 @@
expression: "a(1, 2, b=4, 3, 5, k = 12, 6)\n"
---
SOURCE_FILE@0..30
- EXPR_APPLY@0..29
+ EXPR@0..29
EXPR_VAR@0..1
NAME@0..1
IDENT@0..1 "a"
- ARGS_DESC@1..29
- L_PAREN@1..2 "("
- ARG@2..3
- EXPR_NUMBER@2..3
- FLOAT@2..3 "1"
- COMMA@3..4 ","
- WHITESPACE@4..5 " "
- ARG@5..6
- EXPR_NUMBER@5..6
- FLOAT@5..6 "2"
- COMMA@6..7 ","
- WHITESPACE@7..8 " "
- ARG@8..11
- NAME@8..9
- IDENT@8..9 "b"
- ASSIGN@9..10 "="
- EXPR_NUMBER@10..11
- FLOAT@10..11 "4"
- COMMA@11..12 ","
- WHITESPACE@12..13 " "
- ERROR_CUSTOM@13..14
- ARG@13..14
- EXPR_NUMBER@13..14
- FLOAT@13..14 "3"
- COMMA@14..15 ","
- WHITESPACE@15..16 " "
- ERROR_CUSTOM@16..17
- ARG@16..17
- EXPR_NUMBER@16..17
- FLOAT@16..17 "5"
- COMMA@17..18 ","
- WHITESPACE@18..19 " "
- ARG@19..25
- NAME@19..20
- IDENT@19..20 "k"
- WHITESPACE@20..21 " "
- ASSIGN@21..22 "="
- WHITESPACE@22..23 " "
- EXPR_NUMBER@23..25
- FLOAT@23..25 "12"
- COMMA@25..26 ","
- WHITESPACE@26..27 " "
- ERROR_CUSTOM@27..28
- ARG@27..28
- EXPR_NUMBER@27..28
- FLOAT@27..28 "6"
- R_PAREN@28..29 ")"
+ SUFFIX_APPLY@1..29
+ ARGS_DESC@1..29
+ L_PAREN@1..2 "("
+ ARG@2..3
+ EXPR@2..3
+ EXPR_NUMBER@2..3
+ FLOAT@2..3 "1"
+ COMMA@3..4 ","
+ WHITESPACE@4..5 " "
+ ARG@5..6
+ EXPR@5..6
+ EXPR_NUMBER@5..6
+ FLOAT@5..6 "2"
+ COMMA@6..7 ","
+ WHITESPACE@7..8 " "
+ ARG@8..11
+ NAME@8..9
+ IDENT@8..9 "b"
+ ASSIGN@9..10 "="
+ EXPR@10..11
+ EXPR_NUMBER@10..11
+ FLOAT@10..11 "4"
+ COMMA@11..12 ","
+ WHITESPACE@12..13 " "
+ ERROR_CUSTOM@13..14
+ ARG@13..14
+ EXPR@13..14
+ EXPR_NUMBER@13..14
+ FLOAT@13..14 "3"
+ COMMA@14..15 ","
+ WHITESPACE@15..16 " "
+ ERROR_CUSTOM@16..17
+ ARG@16..17
+ EXPR@16..17
+ EXPR_NUMBER@16..17
+ FLOAT@16..17 "5"
+ COMMA@17..18 ","
+ WHITESPACE@18..19 " "
+ ARG@19..25
+ NAME@19..20
+ IDENT@19..20 "k"
+ WHITESPACE@20..21 " "
+ ASSIGN@21..22 "="
+ WHITESPACE@22..23 " "
+ EXPR@23..25
+ EXPR_NUMBER@23..25
+ FLOAT@23..25 "12"
+ COMMA@25..26 ","
+ WHITESPACE@26..27 " "
+ ERROR_CUSTOM@27..28
+ ARG@27..28
+ EXPR@27..28
+ EXPR_NUMBER@27..28
+ FLOAT@27..28 "6"
+ R_PAREN@28..29 ")"
WHITESPACE@29..30 "\n"
===
LocatedSyntaxError { error: Custom { error: "can't use positional arguments after named" }, range: 13..14 }
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_lhs.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_lhs.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_lhs.snap
@@ -3,7 +3,8 @@
expression: "+ 2\n"
---
SOURCE_FILE@0..4
- ERROR_MISSING_TOKEN@0..0
+ EXPR@0..0
+ ERROR_MISSING_TOKEN@0..0
ERROR_CUSTOM@0..3
PLUS@0..1 "+"
WHITESPACE@1..2 " "
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_operator.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_operator.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_operator.snap
@@ -3,8 +3,9 @@
expression: "2 2\n"
---
SOURCE_FILE@0..4
- EXPR_NUMBER@0..1
- FLOAT@0..1 "2"
+ EXPR@0..1
+ EXPR_NUMBER@0..1
+ FLOAT@0..1 "2"
WHITESPACE@1..2 " "
ERROR_CUSTOM@2..3
FLOAT@2..3 "2"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_rhs.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_rhs.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_rhs.snap
@@ -3,15 +3,16 @@
expression: "a +\n"
---
SOURCE_FILE@0..4
- EXPR_BINARY@0..4
- LHS_EXPR@0..1
- EXPR_VAR@0..1
- NAME@0..1
- IDENT@0..1 "a"
- WHITESPACE@1..2 " "
- PLUS@2..3 "+"
- WHITESPACE@3..4 "\n"
- ERROR_MISSING_TOKEN@4..4
+ EXPR@0..4
+ EXPR_BINARY@0..4
+ EXPR@0..1
+ EXPR_VAR@0..1
+ NAME@0..1
+ IDENT@0..1 "a"
+ WHITESPACE@1..2 " "
+ PLUS@2..3 "+"
+ WHITESPACE@3..4 "\n"
+ ERROR_MISSING_TOKEN@4..4
===
LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 4..4 }
===
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec.snap
@@ -3,37 +3,44 @@
expression: "{a:1 for a in [1, 2, 3]}\n"
---
SOURCE_FILE@0..25
- EXPR_OBJECT@0..24
- OBJ_BODY_COMP@0..24
- L_BRACE@0..1 "{"
- MEMBER_FIELD_NORMAL@1..4
- FIELD_NAME_FIXED@1..2
- NAME@1..2
- IDENT@1..2 "a"
- COLON@2..3 ":"
- EXPR_NUMBER@3..4
- FLOAT@3..4 "1"
- WHITESPACE@4..5 " "
- FOR_SPEC@5..23
- FOR_KW@5..8 "for"
- WHITESPACE@8..9 " "
- NAME@9..10
- IDENT@9..10 "a"
- WHITESPACE@10..11 " "
- IN_KW@11..13 "in"
- WHITESPACE@13..14 " "
- EXPR_ARRAY@14..23
- L_BRACK@14..15 "["
- EXPR_NUMBER@15..16
- FLOAT@15..16 "1"
- COMMA@16..17 ","
- WHITESPACE@17..18 " "
- EXPR_NUMBER@18..19
- FLOAT@18..19 "2"
- COMMA@19..20 ","
- WHITESPACE@20..21 " "
- EXPR_NUMBER@21..22
- FLOAT@21..22 "3"
- R_BRACK@22..23 "]"
- R_BRACE@23..24 "}"
+ EXPR@0..24
+ EXPR_OBJECT@0..24
+ OBJ_BODY_COMP@0..24
+ L_BRACE@0..1 "{"
+ MEMBER_FIELD_NORMAL@1..4
+ FIELD_NAME_FIXED@1..2
+ NAME@1..2
+ IDENT@1..2 "a"
+ COLON@2..3 ":"
+ EXPR@3..4
+ EXPR_NUMBER@3..4
+ FLOAT@3..4 "1"
+ WHITESPACE@4..5 " "
+ FOR_SPEC@5..23
+ FOR_KW@5..8 "for"
+ WHITESPACE@8..9 " "
+ DESTRUCT_FULL@9..10
+ NAME@9..10
+ IDENT@9..10 "a"
+ WHITESPACE@10..11 " "
+ IN_KW@11..13 "in"
+ WHITESPACE@13..14 " "
+ EXPR@14..23
+ EXPR_ARRAY@14..23
+ L_BRACK@14..15 "["
+ EXPR@15..16
+ EXPR_NUMBER@15..16
+ FLOAT@15..16 "1"
+ COMMA@16..17 ","
+ WHITESPACE@17..18 " "
+ EXPR@18..19
+ EXPR_NUMBER@18..19
+ FLOAT@18..19 "2"
+ COMMA@19..20 ","
+ WHITESPACE@20..21 " "
+ EXPR@21..22
+ EXPR_NUMBER@21..22
+ FLOAT@21..22 "3"
+ R_BRACK@22..23 "]"
+ R_BRACE@23..24 "}"
WHITESPACE@24..25 "\n"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_comma.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_comma.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_comma.snap
@@ -3,38 +3,45 @@
expression: "{a:1, for a in [1, 2, 3]}\n"
---
SOURCE_FILE@0..26
- EXPR_OBJECT@0..25
- OBJ_BODY_COMP@0..25
- L_BRACE@0..1 "{"
- MEMBER_FIELD_NORMAL@1..4
- FIELD_NAME_FIXED@1..2
- NAME@1..2
- IDENT@1..2 "a"
- COLON@2..3 ":"
- EXPR_NUMBER@3..4
- FLOAT@3..4 "1"
- COMMA@4..5 ","
- WHITESPACE@5..6 " "
- FOR_SPEC@6..24
- FOR_KW@6..9 "for"
- WHITESPACE@9..10 " "
- NAME@10..11
- IDENT@10..11 "a"
- WHITESPACE@11..12 " "
- IN_KW@12..14 "in"
- WHITESPACE@14..15 " "
- EXPR_ARRAY@15..24
- L_BRACK@15..16 "["
- EXPR_NUMBER@16..17
- FLOAT@16..17 "1"
- COMMA@17..18 ","
- WHITESPACE@18..19 " "
- EXPR_NUMBER@19..20
- FLOAT@19..20 "2"
- COMMA@20..21 ","
- WHITESPACE@21..22 " "
- EXPR_NUMBER@22..23
- FLOAT@22..23 "3"
- R_BRACK@23..24 "]"
- R_BRACE@24..25 "}"
+ EXPR@0..25
+ EXPR_OBJECT@0..25
+ OBJ_BODY_COMP@0..25
+ L_BRACE@0..1 "{"
+ MEMBER_FIELD_NORMAL@1..4
+ FIELD_NAME_FIXED@1..2
+ NAME@1..2
+ IDENT@1..2 "a"
+ COLON@2..3 ":"
+ EXPR@3..4
+ EXPR_NUMBER@3..4
+ FLOAT@3..4 "1"
+ COMMA@4..5 ","
+ WHITESPACE@5..6 " "
+ FOR_SPEC@6..24
+ FOR_KW@6..9 "for"
+ WHITESPACE@9..10 " "
+ DESTRUCT_FULL@10..11
+ NAME@10..11
+ IDENT@10..11 "a"
+ WHITESPACE@11..12 " "
+ IN_KW@12..14 "in"
+ WHITESPACE@14..15 " "
+ EXPR@15..24
+ EXPR_ARRAY@15..24
+ L_BRACK@15..16 "["
+ EXPR@16..17
+ EXPR_NUMBER@16..17
+ FLOAT@16..17 "1"
+ COMMA@17..18 ","
+ WHITESPACE@18..19 " "
+ EXPR@19..20
+ EXPR_NUMBER@19..20
+ FLOAT@19..20 "2"
+ COMMA@20..21 ","
+ WHITESPACE@21..22 " "
+ EXPR@22..23
+ EXPR_NUMBER@22..23
+ FLOAT@22..23 "3"
+ R_BRACK@23..24 "]"
+ R_BRACE@24..25 "}"
WHITESPACE@25..26 "\n"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_asserts.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_asserts.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_asserts.snap
@@ -3,48 +3,55 @@
expression: "{assert 1, a: 1 for a in [1,2,3]}\n"
---
SOURCE_FILE@0..34
- EXPR_OBJECT@0..33
- OBJ_BODY_COMP@0..33
- L_BRACE@0..1 "{"
- ERROR_CUSTOM@1..9
- MEMBER_ASSERT_STMT@1..9
- ASSERTION@1..9
- ASSERT_KW@1..7 "assert"
- WHITESPACE@7..8 " "
- LHS_EXPR@8..9
- EXPR_NUMBER@8..9
- FLOAT@8..9 "1"
- COMMA@9..10 ","
- WHITESPACE@10..11 " "
- MEMBER_FIELD_NORMAL@11..15
- FIELD_NAME_FIXED@11..12
- NAME@11..12
- IDENT@11..12 "a"
- COLON@12..13 ":"
- WHITESPACE@13..14 " "
- EXPR_NUMBER@14..15
- FLOAT@14..15 "1"
- WHITESPACE@15..16 " "
- FOR_SPEC@16..32
- FOR_KW@16..19 "for"
- WHITESPACE@19..20 " "
- NAME@20..21
- IDENT@20..21 "a"
- WHITESPACE@21..22 " "
- IN_KW@22..24 "in"
- WHITESPACE@24..25 " "
- EXPR_ARRAY@25..32
- L_BRACK@25..26 "["
- EXPR_NUMBER@26..27
- FLOAT@26..27 "1"
- COMMA@27..28 ","
- EXPR_NUMBER@28..29
- FLOAT@28..29 "2"
- COMMA@29..30 ","
- EXPR_NUMBER@30..31
- FLOAT@30..31 "3"
- R_BRACK@31..32 "]"
- R_BRACE@32..33 "}"
+ EXPR@0..33
+ EXPR_OBJECT@0..33
+ OBJ_BODY_COMP@0..33
+ L_BRACE@0..1 "{"
+ ERROR_CUSTOM@1..9
+ MEMBER_ASSERT_STMT@1..9
+ ASSERTION@1..9
+ ASSERT_KW@1..7 "assert"
+ WHITESPACE@7..8 " "
+ EXPR@8..9
+ EXPR_NUMBER@8..9
+ FLOAT@8..9 "1"
+ COMMA@9..10 ","
+ WHITESPACE@10..11 " "
+ MEMBER_FIELD_NORMAL@11..15
+ FIELD_NAME_FIXED@11..12
+ NAME@11..12
+ IDENT@11..12 "a"
+ COLON@12..13 ":"
+ WHITESPACE@13..14 " "
+ EXPR@14..15
+ EXPR_NUMBER@14..15
+ FLOAT@14..15 "1"
+ WHITESPACE@15..16 " "
+ FOR_SPEC@16..32
+ FOR_KW@16..19 "for"
+ WHITESPACE@19..20 " "
+ DESTRUCT_FULL@20..21
+ NAME@20..21
+ IDENT@20..21 "a"
+ WHITESPACE@21..22 " "
+ IN_KW@22..24 "in"
+ WHITESPACE@24..25 " "
+ EXPR@25..32
+ EXPR_ARRAY@25..32
+ L_BRACK@25..26 "["
+ EXPR@26..27
+ EXPR_NUMBER@26..27
+ FLOAT@26..27 "1"
+ COMMA@27..28 ","
+ EXPR@28..29
+ EXPR_NUMBER@28..29
+ FLOAT@28..29 "2"
+ COMMA@29..30 ","
+ EXPR@30..31
+ EXPR_NUMBER@30..31
+ FLOAT@30..31 "3"
+ R_BRACK@31..32 "]"
+ R_BRACE@32..33 "}"
WHITESPACE@33..34 "\n"
===
LocatedSyntaxError { error: Custom { error: "asserts can't be used in object comprehensions" }, range: 1..9 }
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_multiple_elems.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_multiple_elems.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_multiple_elems.snap
@@ -3,56 +3,64 @@
expression: "{a:1 for a in [1, 2, 3], b:1}\n"
---
SOURCE_FILE@0..30
- EXPR_OBJECT@0..29
- OBJ_BODY_MEMBER_LIST@0..29
- L_BRACE@0..1 "{"
- MEMBER_FIELD_NORMAL@1..4
- FIELD_NAME_FIXED@1..2
- NAME@1..2
- IDENT@1..2 "a"
- COLON@2..3 ":"
- EXPR_NUMBER@3..4
- FLOAT@3..4 "1"
- WHITESPACE@4..5 " "
- ERROR_CUSTOM@5..23
- FOR_SPEC@5..23
- FOR_KW@5..8 "for"
- WHITESPACE@8..9 " "
- NAME@9..10
- IDENT@9..10 "a"
- WHITESPACE@10..11 " "
- IN_KW@11..13 "in"
- WHITESPACE@13..14 " "
- EXPR_ARRAY@14..23
- L_BRACK@14..15 "["
- EXPR_NUMBER@15..16
- FLOAT@15..16 "1"
- COMMA@16..17 ","
- WHITESPACE@17..18 " "
- EXPR_NUMBER@18..19
- FLOAT@18..19 "2"
- COMMA@19..20 ","
- WHITESPACE@20..21 " "
- EXPR_NUMBER@21..22
- FLOAT@21..22 "3"
- R_BRACK@22..23 "]"
- COMMA@23..24 ","
- WHITESPACE@24..25 " "
- MEMBER_FIELD_NORMAL@25..28
- FIELD_NAME_FIXED@25..26
- NAME@25..26
- IDENT@25..26 "b"
- COLON@26..27 ":"
- EXPR_NUMBER@27..28
- FLOAT@27..28 "1"
- R_BRACE@28..29 "}"
+ EXPR@0..29
+ EXPR_OBJECT@0..29
+ OBJ_BODY_MEMBER_LIST@0..29
+ L_BRACE@0..1 "{"
+ MEMBER_FIELD_NORMAL@1..4
+ FIELD_NAME_FIXED@1..2
+ NAME@1..2
+ IDENT@1..2 "a"
+ COLON@2..3 ":"
+ EXPR@3..4
+ EXPR_NUMBER@3..4
+ FLOAT@3..4 "1"
+ WHITESPACE@4..5 " "
+ ERROR_CUSTOM@5..23
+ FOR_SPEC@5..23
+ FOR_KW@5..8 "for"
+ WHITESPACE@8..9 " "
+ DESTRUCT_FULL@9..10
+ NAME@9..10
+ IDENT@9..10 "a"
+ WHITESPACE@10..11 " "
+ IN_KW@11..13 "in"
+ WHITESPACE@13..14 " "
+ EXPR@14..23
+ EXPR_ARRAY@14..23
+ L_BRACK@14..15 "["
+ EXPR@15..16
+ EXPR_NUMBER@15..16
+ FLOAT@15..16 "1"
+ COMMA@16..17 ","
+ WHITESPACE@17..18 " "
+ EXPR@18..19
+ EXPR_NUMBER@18..19
+ FLOAT@18..19 "2"
+ COMMA@19..20 ","
+ WHITESPACE@20..21 " "
+ EXPR@21..22
+ EXPR_NUMBER@21..22
+ FLOAT@21..22 "3"
+ R_BRACK@22..23 "]"
+ COMMA@23..24 ","
+ WHITESPACE@24..25 " "
+ MEMBER_FIELD_NORMAL@25..28
+ FIELD_NAME_FIXED@25..26
+ NAME@25..26
+ IDENT@25..26 "b"
+ COLON@26..27 ":"
+ EXPR@27..28
+ EXPR_NUMBER@27..28
+ FLOAT@27..28 "1"
+ R_BRACE@28..29 "}"
WHITESPACE@29..30 "\n"
===
-LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one array element" }, range: 5..23 }
+LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one object element" }, range: 5..23 }
===
x syntax error
,----
1 | {a:1 for a in [1, 2, 3], b:1}
: ^^^^^^^^^|^^^^^^^^
- : `-- compspec may only be used if there is only one array element
+ : `-- compspec may only be used if there is only one object element
`----
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_multiple_elems_w.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_multiple_elems_w.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_multiple_elems_w.snap
@@ -3,66 +3,75 @@
expression: "{a:1, b:1, for a in [1, 2, 3], c:1}\n"
---
SOURCE_FILE@0..36
- EXPR_OBJECT@0..35
- OBJ_BODY_MEMBER_LIST@0..35
- L_BRACE@0..1 "{"
- MEMBER_FIELD_NORMAL@1..4
- FIELD_NAME_FIXED@1..2
- NAME@1..2
- IDENT@1..2 "a"
- COLON@2..3 ":"
- EXPR_NUMBER@3..4
- FLOAT@3..4 "1"
- COMMA@4..5 ","
- WHITESPACE@5..6 " "
- MEMBER_FIELD_NORMAL@6..9
- FIELD_NAME_FIXED@6..7
- NAME@6..7
- IDENT@6..7 "b"
- COLON@7..8 ":"
- EXPR_NUMBER@8..9
- FLOAT@8..9 "1"
- COMMA@9..10 ","
- WHITESPACE@10..11 " "
- ERROR_CUSTOM@11..29
- FOR_SPEC@11..29
- FOR_KW@11..14 "for"
- WHITESPACE@14..15 " "
- NAME@15..16
- IDENT@15..16 "a"
- WHITESPACE@16..17 " "
- IN_KW@17..19 "in"
- WHITESPACE@19..20 " "
- EXPR_ARRAY@20..29
- L_BRACK@20..21 "["
- EXPR_NUMBER@21..22
- FLOAT@21..22 "1"
- COMMA@22..23 ","
- WHITESPACE@23..24 " "
- EXPR_NUMBER@24..25
- FLOAT@24..25 "2"
- COMMA@25..26 ","
- WHITESPACE@26..27 " "
- EXPR_NUMBER@27..28
- FLOAT@27..28 "3"
- R_BRACK@28..29 "]"
- COMMA@29..30 ","
- WHITESPACE@30..31 " "
- MEMBER_FIELD_NORMAL@31..34
- FIELD_NAME_FIXED@31..32
- NAME@31..32
- IDENT@31..32 "c"
- COLON@32..33 ":"
- EXPR_NUMBER@33..34
- FLOAT@33..34 "1"
- R_BRACE@34..35 "}"
+ EXPR@0..35
+ EXPR_OBJECT@0..35
+ OBJ_BODY_MEMBER_LIST@0..35
+ L_BRACE@0..1 "{"
+ MEMBER_FIELD_NORMAL@1..4
+ FIELD_NAME_FIXED@1..2
+ NAME@1..2
+ IDENT@1..2 "a"
+ COLON@2..3 ":"
+ EXPR@3..4
+ EXPR_NUMBER@3..4
+ FLOAT@3..4 "1"
+ COMMA@4..5 ","
+ WHITESPACE@5..6 " "
+ MEMBER_FIELD_NORMAL@6..9
+ FIELD_NAME_FIXED@6..7
+ NAME@6..7
+ IDENT@6..7 "b"
+ COLON@7..8 ":"
+ EXPR@8..9
+ EXPR_NUMBER@8..9
+ FLOAT@8..9 "1"
+ COMMA@9..10 ","
+ WHITESPACE@10..11 " "
+ ERROR_CUSTOM@11..29
+ FOR_SPEC@11..29
+ FOR_KW@11..14 "for"
+ WHITESPACE@14..15 " "
+ DESTRUCT_FULL@15..16
+ NAME@15..16
+ IDENT@15..16 "a"
+ WHITESPACE@16..17 " "
+ IN_KW@17..19 "in"
+ WHITESPACE@19..20 " "
+ EXPR@20..29
+ EXPR_ARRAY@20..29
+ L_BRACK@20..21 "["
+ EXPR@21..22
+ EXPR_NUMBER@21..22
+ FLOAT@21..22 "1"
+ COMMA@22..23 ","
+ WHITESPACE@23..24 " "
+ EXPR@24..25
+ EXPR_NUMBER@24..25
+ FLOAT@24..25 "2"
+ COMMA@25..26 ","
+ WHITESPACE@26..27 " "
+ EXPR@27..28
+ EXPR_NUMBER@27..28
+ FLOAT@27..28 "3"
+ R_BRACK@28..29 "]"
+ COMMA@29..30 ","
+ WHITESPACE@30..31 " "
+ MEMBER_FIELD_NORMAL@31..34
+ FIELD_NAME_FIXED@31..32
+ NAME@31..32
+ IDENT@31..32 "c"
+ COLON@32..33 ":"
+ EXPR@33..34
+ EXPR_NUMBER@33..34
+ FLOAT@33..34 "1"
+ R_BRACE@34..35 "}"
WHITESPACE@35..36 "\n"
===
-LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one array element" }, range: 11..29 }
+LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one object element" }, range: 11..29 }
===
x syntax error
,----
1 | {a:1, b:1, for a in [1, 2, 3], c:1}
: ^^^^^^^^^|^^^^^^^^
- : `-- compspec may only be used if there is only one array element
+ : `-- compspec may only be used if there is only one object element
`----
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_no_elems.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_no_elems.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_no_elems.snap
@@ -3,32 +3,38 @@
expression: "{for a in [1, 2, 3]}\n"
---
SOURCE_FILE@0..21
- EXPR_OBJECT@0..20
- OBJ_BODY_COMP@0..20
- L_BRACE@0..1 "{"
- ERROR_MISSING_TOKEN@1..1
- FOR_SPEC@1..19
- FOR_KW@1..4 "for"
- WHITESPACE@4..5 " "
- NAME@5..6
- IDENT@5..6 "a"
- WHITESPACE@6..7 " "
- IN_KW@7..9 "in"
- WHITESPACE@9..10 " "
- EXPR_ARRAY@10..19
- L_BRACK@10..11 "["
- EXPR_NUMBER@11..12
- FLOAT@11..12 "1"
- COMMA@12..13 ","
- WHITESPACE@13..14 " "
- EXPR_NUMBER@14..15
- FLOAT@14..15 "2"
- COMMA@15..16 ","
- WHITESPACE@16..17 " "
- EXPR_NUMBER@17..18
- FLOAT@17..18 "3"
- R_BRACK@18..19 "]"
- R_BRACE@19..20 "}"
+ EXPR@0..20
+ EXPR_OBJECT@0..20
+ OBJ_BODY_COMP@0..20
+ L_BRACE@0..1 "{"
+ ERROR_MISSING_TOKEN@1..1
+ FOR_SPEC@1..19
+ FOR_KW@1..4 "for"
+ WHITESPACE@4..5 " "
+ DESTRUCT_FULL@5..6
+ NAME@5..6
+ IDENT@5..6 "a"
+ WHITESPACE@6..7 " "
+ IN_KW@7..9 "in"
+ WHITESPACE@9..10 " "
+ EXPR@10..19
+ EXPR_ARRAY@10..19
+ L_BRACK@10..11 "["
+ EXPR@11..12
+ EXPR_NUMBER@11..12
+ FLOAT@11..12 "1"
+ COMMA@12..13 ","
+ WHITESPACE@13..14 " "
+ EXPR@14..15
+ EXPR_NUMBER@14..15
+ FLOAT@14..15 "2"
+ COMMA@15..16 ","
+ WHITESPACE@16..17 " "
+ EXPR@17..18
+ EXPR_NUMBER@17..18
+ FLOAT@17..18 "3"
+ R_BRACK@18..19 "]"
+ R_BRACE@19..20 "}"
WHITESPACE@20..21 "\n"
===
LocatedSyntaxError { error: Missing { expected: Named("field definition") }, range: 1..1 }
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_method.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_method.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_method.snap
@@ -3,47 +3,50 @@
expression: "{\n\ta(x): x,\n\ta: function(x) x,\n}\n"
---
SOURCE_FILE@0..33
- EXPR_OBJECT@0..32
- OBJ_BODY_MEMBER_LIST@0..32
- L_BRACE@0..1 "{"
- WHITESPACE@1..3 "\n\t"
- MEMBER_FIELD_METHOD@3..10
- FIELD_NAME_FIXED@3..4
- NAME@3..4
- IDENT@3..4 "a"
- PARAMS_DESC@4..7
- L_PAREN@4..5 "("
- PARAM@5..6
- DESTRUCT_FULL@5..6
- NAME@5..6
- IDENT@5..6 "x"
- R_PAREN@6..7 ")"
- COLON@7..8 ":"
- WHITESPACE@8..9 " "
- EXPR_VAR@9..10
- NAME@9..10
- IDENT@9..10 "x"
- COMMA@10..11 ","
- WHITESPACE@11..13 "\n\t"
- MEMBER_FIELD_METHOD@13..29
- FIELD_NAME_FIXED@13..14
- NAME@13..14
- IDENT@13..14 "a"
- COLON@14..15 ":"
- WHITESPACE@15..16 " "
- FUNCTION_KW@16..24 "function"
- PARAMS_DESC@24..27
- L_PAREN@24..25 "("
- PARAM@25..26
- DESTRUCT_FULL@25..26
- NAME@25..26
- IDENT@25..26 "x"
- R_PAREN@26..27 ")"
- WHITESPACE@27..28 " "
- EXPR_VAR@28..29
- NAME@28..29
- IDENT@28..29 "x"
- COMMA@29..30 ","
- WHITESPACE@30..31 "\n"
- R_BRACE@31..32 "}"
+ EXPR@0..32
+ EXPR_OBJECT@0..32
+ OBJ_BODY_MEMBER_LIST@0..32
+ L_BRACE@0..1 "{"
+ WHITESPACE@1..3 "\n\t"
+ MEMBER_FIELD_METHOD@3..10
+ FIELD_NAME_FIXED@3..4
+ NAME@3..4
+ IDENT@3..4 "a"
+ PARAMS_DESC@4..7
+ L_PAREN@4..5 "("
+ PARAM@5..6
+ DESTRUCT_FULL@5..6
+ NAME@5..6
+ IDENT@5..6 "x"
+ R_PAREN@6..7 ")"
+ COLON@7..8 ":"
+ WHITESPACE@8..9 " "
+ EXPR@9..10
+ EXPR_VAR@9..10
+ NAME@9..10
+ IDENT@9..10 "x"
+ COMMA@10..11 ","
+ WHITESPACE@11..13 "\n\t"
+ MEMBER_FIELD_METHOD@13..29
+ FIELD_NAME_FIXED@13..14
+ NAME@13..14
+ IDENT@13..14 "a"
+ COLON@14..15 ":"
+ WHITESPACE@15..16 " "
+ FUNCTION_KW@16..24 "function"
+ PARAMS_DESC@24..27
+ L_PAREN@24..25 "("
+ PARAM@25..26
+ DESTRUCT_FULL@25..26
+ NAME@25..26
+ IDENT@25..26 "x"
+ R_PAREN@26..27 ")"
+ WHITESPACE@27..28 " "
+ EXPR@28..29
+ EXPR_VAR@28..29
+ NAME@28..29
+ IDENT@28..29 "x"
+ COMMA@29..30 ","
+ WHITESPACE@30..31 "\n"
+ R_BRACE@31..32 "}"
WHITESPACE@32..33 "\n"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__plain_call.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__plain_call.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__plain_call.snap
@@ -3,51 +3,56 @@
expression: "std.substr(a, 0, std.length(b)) == b\n"
---
SOURCE_FILE@0..37
- EXPR_BINARY@0..36
- LHS_EXPR@0..31
- EXPR_APPLY@0..31
- EXPR_INDEX@0..10
- EXPR_VAR@0..3
- NAME@0..3
- IDENT@0..3 "std"
- DOT@3..4 "."
- NAME@4..10
- IDENT@4..10 "substr"
+ EXPR@0..36
+ EXPR_BINARY@0..36
+ EXPR@0..3
+ EXPR_VAR@0..3
+ NAME@0..3
+ IDENT@0..3 "std"
+ SUFFIX_INDEX@3..10
+ DOT@3..4 "."
+ NAME@4..10
+ IDENT@4..10 "substr"
+ SUFFIX_APPLY@10..31
ARGS_DESC@10..31
L_PAREN@10..11 "("
ARG@11..12
- EXPR_VAR@11..12
- NAME@11..12
- IDENT@11..12 "a"
+ EXPR@11..12
+ EXPR_VAR@11..12
+ NAME@11..12
+ IDENT@11..12 "a"
COMMA@12..13 ","
WHITESPACE@13..14 " "
ARG@14..15
- EXPR_NUMBER@14..15
- FLOAT@14..15 "0"
+ EXPR@14..15
+ EXPR_NUMBER@14..15
+ FLOAT@14..15 "0"
COMMA@15..16 ","
WHITESPACE@16..17 " "
ARG@17..30
- EXPR_APPLY@17..30
- EXPR_INDEX@17..27
- EXPR_VAR@17..20
- NAME@17..20
- IDENT@17..20 "std"
+ EXPR@17..30
+ EXPR_VAR@17..20
+ NAME@17..20
+ IDENT@17..20 "std"
+ SUFFIX_INDEX@20..27
DOT@20..21 "."
NAME@21..27
IDENT@21..27 "length"
- ARGS_DESC@27..30
- L_PAREN@27..28 "("
- ARG@28..29
- EXPR_VAR@28..29
- NAME@28..29
- IDENT@28..29 "b"
- R_PAREN@29..30 ")"
+ SUFFIX_APPLY@27..30
+ ARGS_DESC@27..30
+ L_PAREN@27..28 "("
+ ARG@28..29
+ EXPR@28..29
+ EXPR_VAR@28..29
+ NAME@28..29
+ IDENT@28..29 "b"
+ R_PAREN@29..30 ")"
R_PAREN@30..31 ")"
- WHITESPACE@31..32 " "
- EQ@32..34 "=="
- WHITESPACE@34..35 " "
- EXPR_VAR@35..36
- NAME@35..36
- IDENT@35..36 "b"
+ WHITESPACE@31..32 " "
+ EQ@32..34 "=="
+ WHITESPACE@34..35 " "
+ EXPR@35..36
+ EXPR_VAR@35..36
+ NAME@35..36
+ IDENT@35..36 "b"
WHITESPACE@36..37 "\n"
-
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__stdlib.snapdiffbeforeafterboth1---2source: crates/jrsonnet-rowan-parser/src/tests.rs3expression: "{\n local std = self,\n local id = std.id,\n\n thisFile:: error 'std.thisFile is deprecated, to enable its support in jrsonnet - recompile it with \"legacy-this-file\" support.\\nThis will slow down stdlib caching a bit, though',\n\n toString(a):: '' + a,\n\n lstripChars(str, chars)::\n if std.length(str) > 0 && std.member(chars, str[0]) then\n std.lstripChars(str[1:], chars)\n else\n str,\n\n rstripChars(str, chars)::\n local len = std.length(str);\n if len > 0 && std.member(chars, str[len - 1]) then\n std.rstripChars(str[:len - 1], chars)\n else\n str,\n\n stripChars(str, chars)::\n std.lstripChars(std.rstripChars(str, chars), chars),\n\n stringChars(str)::\n std.makeArray(std.length(str), function(i) str[i]),\n\n splitLimitR(str, c, maxsplits)::\n if maxsplits == -1 then\n std.splitLimit(str, c, -1)\n else\n local revStr(str) = std.join('', std.reverse(std.stringChars(str)));\n std.map(function(e) revStr(e), std.reverse(std.splitLimit(revStr(str), revStr(c), maxsplits))),\n\n split(str, c):: std.splitLimit(str, c, -1),\n\n mapWithIndex(func, arr)::\n if !std.isFunction(func) then\n error ('std.mapWithIndex first param must be function, got ' + std.type(func))\n else if !std.isArray(arr) && !std.isString(arr) then\n error ('std.mapWithIndex second param must be array, got ' + std.type(arr))\n else\n std.makeArray(std.length(arr), function(i) func(i, arr[i])),\n\n mapWithKey(func, obj)::\n if !std.isFunction(func) then\n error ('std.mapWithKey first param must be function, got ' + std.type(func))\n else if !std.isObject(obj) then\n error ('std.mapWithKey second param must be object, got ' + std.type(obj))\n else\n { [k]: func(k, obj[k]) for k in std.objectFields(obj) },\n\n lines(arr)::\n std.join('\\n', arr + ['']),\n\n deepJoin(arr)::\n if std.isString(arr) then\n arr\n else if std.isArray(arr) then\n std.join('', [std.deepJoin(x) for x in arr])\n else\n error 'Expected string or array, got %s' % std.type(arr),\n\n filterMap(filter_func, map_func, arr)::\n if !std.isFunction(filter_func) then\n error ('std.filterMap first param must be function, got ' + std.type(filter_func))\n else if !std.isFunction(map_func) then\n error ('std.filterMap second param must be function, got ' + std.type(map_func))\n else if !std.isArray(arr) then\n error ('std.filterMap third param must be array, got ' + std.type(arr))\n else\n std.map(map_func, std.filter(filter_func, arr)),\n\n assertEqual(a, b)::\n if a == b then\n true\n else\n error 'Assertion failed. ' + a + ' != ' + b,\n\n clamp(x, minVal, maxVal)::\n if x < minVal then minVal\n else if x > maxVal then maxVal\n else x,\n\n flattenArrays(arrs)::\n std.foldl(function(a, b) a + b, arrs, []),\n\n manifestIni(ini)::\n local body_lines(body) =\n std.join([], [\n local value_or_values = body[k];\n if std.isArray(value_or_values) then\n ['%s = %s' % [k, value] for value in value_or_values]\n else\n ['%s = %s' % [k, value_or_values]]\n\n for k in std.objectFields(body)\n ]);\n\n local section_lines(sname, sbody) = ['[%s]' % [sname]] + body_lines(sbody),\n main_body = if std.objectHas(ini, 'main') then body_lines(ini.main) else [],\n all_sections = [\n section_lines(k, ini.sections[k])\n for k in std.objectFields(ini.sections)\n ];\n std.join('\\n', main_body + std.flattenArrays(all_sections) + ['']),\n\n manifestToml(value):: std.manifestTomlEx(value, ' '),\n\n escapeStringPython(str)::\n std.escapeStringJson(str),\n\n escapeStringBash(str_)::\n local str = std.toString(str_);\n local trans(ch) =\n if ch == \"'\" then\n \"'\\\"'\\\"'\"\n else\n ch;\n \"'%s'\" % std.join('', [trans(ch) for ch in std.stringChars(str)]),\n\n escapeStringDollars(str_)::\n local str = std.toString(str_);\n local trans(ch) =\n if ch == '$' then\n '$$'\n else\n ch;\n std.foldl(function(a, b) a + trans(b), std.stringChars(str), ''),\n\n local xml_escapes = {\n '<': '<',\n '>': '>',\n '&': '&',\n '\"': '"',\n \"'\": ''',\n },\n\n escapeStringXML(str_)::\n local str = std.toString(str_);\n std.join('', [std.get(xml_escapes, ch, ch) for ch in std.stringChars(str)]),\n\n manifestJson(value):: std.manifestJsonEx(value, ' ') tailstrict,\n\n manifestJsonMinified(value):: std.manifestJsonEx(value, '', '', ':'),\n\n manifestYamlStream(value, indent_array_in_object=false, c_document_end=true, quote_keys=true)::\n if !std.isArray(value) then\n error 'manifestYamlStream only takes arrays, got ' + std.type(value)\n else\n '---\\n' + std.join(\n '\\n---\\n', [std.manifestYamlDoc(e, indent_array_in_object, quote_keys) for e in value]\n ) + if c_document_end then '\\n...\\n' else '\\n',\n\n manifestPython(v)::\n if std.isObject(v) then\n local fields = [\n '%s: %s' % [std.escapeStringPython(k), std.manifestPython(v[k])]\n for k in std.objectFields(v)\n ];\n '{%s}' % [std.join(', ', fields)]\n else if std.isArray(v) then\n '[%s]' % [std.join(', ', [std.manifestPython(v2) for v2 in v])]\n else if std.isString(v) then\n '%s' % [std.escapeStringPython(v)]\n else if std.isFunction(v) then\n error 'cannot manifest function'\n else if std.isNumber(v) then\n std.toString(v)\n else if v == true then\n 'True'\n else if v == false then\n 'False'\n else if v == null then\n 'None',\n\n manifestPythonVars(conf)::\n local vars = ['%s = %s' % [k, std.manifestPython(conf[k])] for k in std.objectFields(conf)];\n std.join('\\n', vars + ['']),\n\n manifestXmlJsonml(value)::\n if !std.isArray(value) then\n error 'Expected a JSONML value (an array), got %s' % std.type(value)\n else\n local aux(v) =\n if std.isString(v) then\n v\n else\n local tag = v[0];\n local has_attrs = std.length(v) > 1 && std.isObject(v[1]);\n local attrs = if has_attrs then v[1] else {};\n local children = if has_attrs then v[2:] else v[1:];\n local attrs_str =\n std.join('', [' %s=\"%s\"' % [k, attrs[k]] for k in std.objectFields(attrs)]);\n std.deepJoin(['<', tag, attrs_str, '>', [aux(x) for x in children], '</', tag, '>']);\n\n aux(value),\n\n setUnion(a, b, keyF=id)::\n // NOTE: order matters, values in `a` win\n local aux(a, b, i, j, acc) =\n if i >= std.length(a) then\n acc + b[j:]\n else if j >= std.length(b) then\n acc + a[i:]\n else\n local ak = keyF(a[i]);\n local bk = keyF(b[j]);\n if ak == bk then\n aux(a, b, i + 1, j + 1, acc + [a[i]]) tailstrict\n else if ak < bk then\n aux(a, b, i + 1, j, acc + [a[i]]) tailstrict\n else\n aux(a, b, i, j + 1, acc + [b[j]]) tailstrict;\n aux(a, b, 0, 0, []),\n\n setDiff(a, b, keyF=id)::\n local aux(a, b, i, j, acc) =\n if i >= std.length(a) then\n acc\n else if j >= std.length(b) then\n acc + a[i:]\n else\n if keyF(a[i]) == keyF(b[j]) then\n aux(a, b, i + 1, j + 1, acc) tailstrict\n else if keyF(a[i]) < keyF(b[j]) then\n aux(a, b, i + 1, j, acc + [a[i]]) tailstrict\n else\n aux(a, b, i, j + 1, acc) tailstrict;\n aux(a, b, 0, 0, []) tailstrict,\n\n mergePatch(target, patch)::\n if std.isObject(patch) then\n local target_object =\n if std.isObject(target) then target else {};\n\n local target_fields =\n if std.isObject(target_object) then std.objectFields(target_object) else [];\n\n local null_fields = [k for k in std.objectFields(patch) if patch[k] == null];\n local both_fields = std.setUnion(target_fields, std.objectFields(patch));\n\n {\n [k]:\n if !std.objectHas(patch, k) then\n target_object[k]\n else if !std.objectHas(target_object, k) then\n std.mergePatch(null, patch[k]) tailstrict\n else\n std.mergePatch(target_object[k], patch[k]) tailstrict\n for k in std.setDiff(both_fields, null_fields)\n }\n else\n patch,\n\n get(o, f, default=null, inc_hidden=true)::\n if std.objectHasEx(o, f, inc_hidden) then o[f] else default,\n\n objectFields(o)::\n std.objectFieldsEx(o, false),\n\n objectFieldsAll(o)::\n std.objectFieldsEx(o, true),\n\n objectHas(o, f)::\n std.objectHasEx(o, f, false),\n\n objectHasAll(o, f)::\n std.objectHasEx(o, f, true),\n\n objectValues(o)::\n [o[k] for k in std.objectFields(o)],\n\n objectValuesAll(o)::\n [o[k] for k in std.objectFieldsAll(o)],\n\n resolvePath(f, r)::\n local arr = std.split(f, '/');\n std.join('/', std.makeArray(std.length(arr) - 1, function(i) arr[i]) + [r]),\n\n prune(a)::\n local isContent(b) =\n if b == null then\n false\n else if std.isArray(b) then\n std.length(b) > 0\n else if std.isObject(b) then\n std.length(b) > 0\n else\n true;\n if std.isArray(a) then\n [std.prune(x) for x in a if isContent($.prune(x))]\n else if std.isObject(a) then {\n [x]: $.prune(a[x])\n for x in std.objectFields(a)\n if isContent(std.prune(a[x]))\n } else\n a,\n\n find(value, arr)::\n if !std.isArray(arr) then\n error 'find second parameter should be an array, got ' + std.type(arr)\n else\n std.filter(function(i) arr[i] == value, std.range(0, std.length(arr) - 1)),\n\n // Compat\n __compare_array(arr1, arr2)::\n assert std.isArray(arr1) && std.isArray(arr2);\n std.__compare(arr1, arr2),\n __array_less(arr1, arr2):: std.__compare_array(arr1, arr2) == -1,\n __array_greater(arr1, arr2):: std.__compare_array(arr1, arr2) == 1,\n __array_less_or_equal(arr1, arr2):: std.__compare_array(arr1, arr2) <= 0,\n __array_greater_or_equal(arr1, arr2):: std.__compare_array(arr1, arr2) >= 0,\n}\n"4---5SOURCE_FILE@0..98606 EXPR_OBJECT@0..98597 OBJ_BODY_MEMBER_LIST@0..98598 L_BRACE@0..1 "{"9 WHITESPACE@1..4 "\n "10 MEMBER_BIND_STMT@4..2011 OBJ_LOCAL@4..2012 LOCAL_KW@4..9 "local"13 WHITESPACE@9..10 " "14 BIND_DESTRUCT@10..2015 DESTRUCT_FULL@10..1316 NAME@10..1317 IDENT@10..13 "std"18 WHITESPACE@13..14 " "19 ASSIGN@14..15 "="20 WHITESPACE@15..16 " "21 EXPR_LITERAL@16..2022 SELF_KW@16..20 "self"23 COMMA@20..21 ","24 WHITESPACE@21..24 "\n "25 MEMBER_BIND_STMT@24..4126 OBJ_LOCAL@24..4127 LOCAL_KW@24..29 "local"28 WHITESPACE@29..30 " "29 BIND_DESTRUCT@30..4130 DESTRUCT_FULL@30..3231 NAME@30..3232 IDENT@30..32 "id"33 WHITESPACE@32..33 " "34 ASSIGN@33..34 "="35 WHITESPACE@34..35 " "36 EXPR_INDEX@35..4137 EXPR_VAR@35..3838 NAME@35..3839 IDENT@35..38 "std"40 DOT@38..39 "."41 NAME@39..4142 IDENT@39..41 "id"43 COMMA@41..42 ","44 WHITESPACE@42..46 "\n\n "45 MEMBER_FIELD_NORMAL@46..22446 FIELD_NAME_FIXED@46..5447 NAME@46..5448 IDENT@46..54 "thisFile"49 COLONCOLON@54..56 "::"50 WHITESPACE@56..57 " "51 EXPR_ERROR@57..22452 ERROR_KW@57..62 "error"53 WHITESPACE@62..63 " "54 EXPR_STRING@63..22455 STRING_SINGLE@63..224 "'std.thisFile is depr ..."56 COMMA@224..225 ","57 WHITESPACE@225..229 "\n\n "58 MEMBER_FIELD_METHOD@229..24959 FIELD_NAME_FIXED@229..23760 NAME@229..23761 IDENT@229..237 "toString"62 PARAMS_DESC@237..24063 L_PAREN@237..238 "("64 PARAM@238..23965 DESTRUCT_FULL@238..23966 NAME@238..23967 IDENT@238..239 "a"68 R_PAREN@239..240 ")"69 COLONCOLON@240..242 "::"70 WHITESPACE@242..243 " "71 EXPR_BINARY@243..24972 LHS_EXPR@243..24573 EXPR_STRING@243..24574 STRING_SINGLE@243..245 "''"75 WHITESPACE@245..246 " "76 PLUS@246..247 "+"77 WHITESPACE@247..248 " "78 EXPR_VAR@248..24979 NAME@248..24980 IDENT@248..249 "a"81 COMMA@249..250 ","82 WHITESPACE@250..254 "\n\n "83 MEMBER_FIELD_METHOD@254..39784 FIELD_NAME_FIXED@254..26585 NAME@254..26586 IDENT@254..265 "lstripChars"87 PARAMS_DESC@265..27788 L_PAREN@265..266 "("89 PARAM@266..26990 DESTRUCT_FULL@266..26991 NAME@266..26992 IDENT@266..269 "str"93 COMMA@269..270 ","94 WHITESPACE@270..271 " "95 PARAM@271..27696 DESTRUCT_FULL@271..27697 NAME@271..27698 IDENT@271..276 "chars"99 R_PAREN@276..277 ")"100 COLONCOLON@277..279 "::"101 WHITESPACE@279..284 "\n "102 EXPR_IF_THEN_ELSE@284..397103 IF_KW@284..286 "if"104 WHITESPACE@286..287 " "105 EXPR_BINARY@287..335106 LHS_EXPR@287..306107 EXPR_BINARY@287..306108 LHS_EXPR@287..302109 EXPR_APPLY@287..302110 EXPR_INDEX@287..297111 EXPR_VAR@287..290112 NAME@287..290113 IDENT@287..290 "std"114 DOT@290..291 "."115 NAME@291..297116 IDENT@291..297 "length"117 ARGS_DESC@297..302118 L_PAREN@297..298 "("119 ARG@298..301120 EXPR_VAR@298..301121 NAME@298..301122 IDENT@298..301 "str"123 R_PAREN@301..302 ")"124 WHITESPACE@302..303 " "125 GT@303..304 ">"126 WHITESPACE@304..305 " "127 EXPR_NUMBER@305..306128 FLOAT@305..306 "0"129 WHITESPACE@306..307 " "130 AND@307..309 "&&"131 WHITESPACE@309..310 " "132 EXPR_APPLY@310..335133 EXPR_INDEX@310..320134 EXPR_VAR@310..313135 NAME@310..313136 IDENT@310..313 "std"137 DOT@313..314 "."138 NAME@314..320139 IDENT@314..320 "member"140 ARGS_DESC@320..335141 L_PAREN@320..321 "("142 ARG@321..326143 EXPR_VAR@321..326144 NAME@321..326145 IDENT@321..326 "chars"146 COMMA@326..327 ","147 WHITESPACE@327..328 " "148 ARG@328..334149 EXPR_INDEX_EXPR@328..334150 LHS_EXPR@328..331151 EXPR_VAR@328..331152 NAME@328..331153 IDENT@328..331 "str"154 L_BRACK@331..332 "["155 EXPR_NUMBER@332..333156 FLOAT@332..333 "0"157 R_BRACK@333..334 "]"158 R_PAREN@334..335 ")"159 WHITESPACE@335..336 " "160 THEN_KW@336..340 "then"161 WHITESPACE@340..347 "\n "162 TRUE_EXPR@347..378163 EXPR_APPLY@347..378164 EXPR_INDEX@347..362165 EXPR_VAR@347..350166 NAME@347..350167 IDENT@347..350 "std"168 DOT@350..351 "."169 NAME@351..362170 IDENT@351..362 "lstripChars"171 ARGS_DESC@362..378172 L_PAREN@362..363 "("173 ARG@363..370174 EXPR_SLICE@363..370175 EXPR_VAR@363..366176 NAME@363..366177 IDENT@363..366 "str"178 SLICE_DESC@366..370179 L_BRACK@366..367 "["180 EXPR_NUMBER@367..368181 FLOAT@367..368 "1"182 COLON@368..369 ":"183 R_BRACK@369..370 "]"184 COMMA@370..371 ","185 WHITESPACE@371..372 " "186 ARG@372..377187 EXPR_VAR@372..377188 NAME@372..377189 IDENT@372..377 "chars"190 R_PAREN@377..378 ")"191 WHITESPACE@378..383 "\n "192 ELSE_KW@383..387 "else"193 WHITESPACE@387..394 "\n "194 FALSE_EXPR@394..397195 EXPR_VAR@394..397196 NAME@394..397197 IDENT@394..397 "str"198 COMMA@397..398 ","199 WHITESPACE@398..402 "\n\n "200 MEMBER_FIELD_METHOD@402..578201 FIELD_NAME_FIXED@402..413202 NAME@402..413203 IDENT@402..413 "rstripChars"204 PARAMS_DESC@413..425205 L_PAREN@413..414 "("206 PARAM@414..417207 DESTRUCT_FULL@414..417208 NAME@414..417209 IDENT@414..417 "str"210 COMMA@417..418 ","211 WHITESPACE@418..419 " "212 PARAM@419..424213 DESTRUCT_FULL@419..424214 NAME@419..424215 IDENT@419..424 "chars"216 R_PAREN@424..425 ")"217 COLONCOLON@425..427 "::"218 WHITESPACE@427..432 "\n "219 STMT_LOCAL@432..460220 LOCAL_KW@432..437 "local"221 WHITESPACE@437..438 " "222 BIND_DESTRUCT@438..459223 DESTRUCT_FULL@438..441224 NAME@438..441225 IDENT@438..441 "len"226 WHITESPACE@441..442 " "227 ASSIGN@442..443 "="228 WHITESPACE@443..444 " "229 EXPR_APPLY@444..459230 EXPR_INDEX@444..454231 EXPR_VAR@444..447232 NAME@444..447233 IDENT@444..447 "std"234 DOT@447..448 "."235 NAME@448..454236 IDENT@448..454 "length"237 ARGS_DESC@454..459238 L_PAREN@454..455 "("239 ARG@455..458240 EXPR_VAR@455..458241 NAME@455..458242 IDENT@455..458 "str"243 R_PAREN@458..459 ")"244 SEMI@459..460 ";"245 WHITESPACE@460..465 "\n "246 EXPR_IF_THEN_ELSE@465..578247 IF_KW@465..467 "if"248 WHITESPACE@467..468 " "249 EXPR_BINARY@468..510250 LHS_EXPR@468..475251 EXPR_BINARY@468..475252 LHS_EXPR@468..471253 EXPR_VAR@468..471254 NAME@468..471255 IDENT@468..471 "len"256 WHITESPACE@471..472 " "257 GT@472..473 ">"258 WHITESPACE@473..474 " "259 EXPR_NUMBER@474..475260 FLOAT@474..475 "0"261 WHITESPACE@475..476 " "262 AND@476..478 "&&"263 WHITESPACE@478..479 " "264 EXPR_APPLY@479..510265 EXPR_INDEX@479..489266 EXPR_VAR@479..482267 NAME@479..482268 IDENT@479..482 "std"269 DOT@482..483 "."270 NAME@483..489271 IDENT@483..489 "member"272 ARGS_DESC@489..510273 L_PAREN@489..490 "("274 ARG@490..495275 EXPR_VAR@490..495276 NAME@490..495277 IDENT@490..495 "chars"278 COMMA@495..496 ","279 WHITESPACE@496..497 " "280 ARG@497..509281 EXPR_INDEX_EXPR@497..509282 LHS_EXPR@497..500283 EXPR_VAR@497..500284 NAME@497..500285 IDENT@497..500 "str"286 L_BRACK@500..501 "["287 EXPR_BINARY@501..508288 LHS_EXPR@501..504289 EXPR_VAR@501..504290 NAME@501..504291 IDENT@501..504 "len"292 WHITESPACE@504..505 " "293 MINUS@505..506 "-"294 WHITESPACE@506..507 " "295 EXPR_NUMBER@507..508296 FLOAT@507..508 "1"297 R_BRACK@508..509 "]"298 R_PAREN@509..510 ")"299 WHITESPACE@510..511 " "300 THEN_KW@511..515 "then"301 WHITESPACE@515..522 "\n "302 TRUE_EXPR@522..559303 EXPR_APPLY@522..559304 EXPR_INDEX@522..537305 EXPR_VAR@522..525306 NAME@522..525307 IDENT@522..525 "std"308 DOT@525..526 "."309 NAME@526..537310 IDENT@526..537 "rstripChars"311 ARGS_DESC@537..559312 L_PAREN@537..538 "("313 ARG@538..551314 EXPR_SLICE@538..551315 EXPR_VAR@538..541316 NAME@538..541317 IDENT@538..541 "str"318 SLICE_DESC@541..551319 L_BRACK@541..542 "["320 COLON@542..543 ":"321 SLICE_DESC_END@543..550322 EXPR_BINARY@543..550323 LHS_EXPR@543..546324 EXPR_VAR@543..546325 NAME@543..546326 IDENT@543..546 "len"327 WHITESPACE@546..547 " "328 MINUS@547..548 "-"329 WHITESPACE@548..549 " "330 EXPR_NUMBER@549..550331 FLOAT@549..550 "1"332 R_BRACK@550..551 "]"333 COMMA@551..552 ","334 WHITESPACE@552..553 " "335 ARG@553..558336 EXPR_VAR@553..558337 NAME@553..558338 IDENT@553..558 "chars"339 R_PAREN@558..559 ")"340 WHITESPACE@559..564 "\n "341 ELSE_KW@564..568 "else"342 WHITESPACE@568..575 "\n "343 FALSE_EXPR@575..578344 EXPR_VAR@575..578345 NAME@575..578346 IDENT@575..578 "str"347 COMMA@578..579 ","348 WHITESPACE@579..583 "\n\n "349 MEMBER_FIELD_METHOD@583..663350 FIELD_NAME_FIXED@583..593351 NAME@583..593352 IDENT@583..593 "stripChars"353 PARAMS_DESC@593..605354 L_PAREN@593..594 "("355 PARAM@594..597356 DESTRUCT_FULL@594..597357 NAME@594..597358 IDENT@594..597 "str"359 COMMA@597..598 ","360 WHITESPACE@598..599 " "361 PARAM@599..604362 DESTRUCT_FULL@599..604363 NAME@599..604364 IDENT@599..604 "chars"365 R_PAREN@604..605 ")"366 COLONCOLON@605..607 "::"367 WHITESPACE@607..612 "\n "368 EXPR_APPLY@612..663369 EXPR_INDEX@612..627370 EXPR_VAR@612..615371 NAME@612..615372 IDENT@612..615 "std"373 DOT@615..616 "."374 NAME@616..627375 IDENT@616..627 "lstripChars"376 ARGS_DESC@627..663377 L_PAREN@627..628 "("378 ARG@628..655379 EXPR_APPLY@628..655380 EXPR_INDEX@628..643381 EXPR_VAR@628..631382 NAME@628..631383 IDENT@628..631 "std"384 DOT@631..632 "."385 NAME@632..643386 IDENT@632..643 "rstripChars"387 ARGS_DESC@643..655388 L_PAREN@643..644 "("389 ARG@644..647390 EXPR_VAR@644..647391 NAME@644..647392 IDENT@644..647 "str"393 COMMA@647..648 ","394 WHITESPACE@648..649 " "395 ARG@649..654396 EXPR_VAR@649..654397 NAME@649..654398 IDENT@649..654 "chars"399 R_PAREN@654..655 ")"400 COMMA@655..656 ","401 WHITESPACE@656..657 " "402 ARG@657..662403 EXPR_VAR@657..662404 NAME@657..662405 IDENT@657..662 "chars"406 R_PAREN@662..663 ")"407 COMMA@663..664 ","408 WHITESPACE@664..668 "\n\n "409 MEMBER_FIELD_METHOD@668..741410 FIELD_NAME_FIXED@668..679411 NAME@668..679412 IDENT@668..679 "stringChars"413 PARAMS_DESC@679..684414 L_PAREN@679..680 "("415 PARAM@680..683416 DESTRUCT_FULL@680..683417 NAME@680..683418 IDENT@680..683 "str"419 R_PAREN@683..684 ")"420 COLONCOLON@684..686 "::"421 WHITESPACE@686..691 "\n "422 EXPR_APPLY@691..741423 EXPR_INDEX@691..704424 EXPR_VAR@691..694425 NAME@691..694426 IDENT@691..694 "std"427 DOT@694..695 "."428 NAME@695..704429 IDENT@695..704 "makeArray"430 ARGS_DESC@704..741431 L_PAREN@704..705 "("432 ARG@705..720433 EXPR_APPLY@705..720434 EXPR_INDEX@705..715435 EXPR_VAR@705..708436 NAME@705..708437 IDENT@705..708 "std"438 DOT@708..709 "."439 NAME@709..715440 IDENT@709..715 "length"441 ARGS_DESC@715..720442 L_PAREN@715..716 "("443 ARG@716..719444 EXPR_VAR@716..719445 NAME@716..719446 IDENT@716..719 "str"447 R_PAREN@719..720 ")"448 COMMA@720..721 ","449 WHITESPACE@721..722 " "450 ARG@722..740451 EXPR_FUNCTION@722..740452 FUNCTION_KW@722..730 "function"453 PARAMS_DESC@730..733454 L_PAREN@730..731 "("455 PARAM@731..732456 DESTRUCT_FULL@731..732457 NAME@731..732458 IDENT@731..732 "i"459 R_PAREN@732..733 ")"460 WHITESPACE@733..734 " "461 EXPR_INDEX_EXPR@734..740462 LHS_EXPR@734..737463 EXPR_VAR@734..737464 NAME@734..737465 IDENT@734..737 "str"466 L_BRACK@737..738 "["467 EXPR_VAR@738..739468 NAME@738..739469 IDENT@738..739 "i"470 R_BRACK@739..740 "]"471 R_PAREN@740..741 ")"472 COMMA@741..742 ","473 WHITESPACE@742..746 "\n\n "474 MEMBER_FIELD_METHOD@746..1024475 FIELD_NAME_FIXED@746..757476 NAME@746..757477 IDENT@746..757 "splitLimitR"478 PARAMS_DESC@757..776479 L_PAREN@757..758 "("480 PARAM@758..761481 DESTRUCT_FULL@758..761482 NAME@758..761483 IDENT@758..761 "str"484 COMMA@761..762 ","485 WHITESPACE@762..763 " "486 PARAM@763..764487 DESTRUCT_FULL@763..764488 NAME@763..764489 IDENT@763..764 "c"490 COMMA@764..765 ","491 WHITESPACE@765..766 " "492 PARAM@766..775493 DESTRUCT_FULL@766..775494 NAME@766..775495 IDENT@766..775 "maxsplits"496 R_PAREN@775..776 ")"497 COLONCOLON@776..778 "::"498 WHITESPACE@778..783 "\n "499 EXPR_IF_THEN_ELSE@783..1024500 IF_KW@783..785 "if"501 WHITESPACE@785..786 " "502 EXPR_BINARY@786..801503 LHS_EXPR@786..795504 EXPR_VAR@786..795505 NAME@786..795506 IDENT@786..795 "maxsplits"507 WHITESPACE@795..796 " "508 EQ@796..798 "=="509 WHITESPACE@798..799 " "510 EXPR_UNARY@799..801511 MINUS@799..800 "-"512 EXPR_NUMBER@800..801513 FLOAT@800..801 "1"514 WHITESPACE@801..802 " "515 THEN_KW@802..806 "then"516 WHITESPACE@806..813 "\n "517 TRUE_EXPR@813..839518 EXPR_APPLY@813..839519 EXPR_INDEX@813..827520 EXPR_VAR@813..816521 NAME@813..816522 IDENT@813..816 "std"523 DOT@816..817 "."524 NAME@817..827525 IDENT@817..827 "splitLimit"526 ARGS_DESC@827..839527 L_PAREN@827..828 "("528 ARG@828..831529 EXPR_VAR@828..831530 NAME@828..831531 IDENT@828..831 "str"532 COMMA@831..832 ","533 WHITESPACE@832..833 " "534 ARG@833..834535 EXPR_VAR@833..834536 NAME@833..834537 IDENT@833..834 "c"538 COMMA@834..835 ","539 WHITESPACE@835..836 " "540 ARG@836..838541 EXPR_UNARY@836..838542 MINUS@836..837 "-"543 EXPR_NUMBER@837..838544 FLOAT@837..838 "1"545 R_PAREN@838..839 ")"546 WHITESPACE@839..844 "\n "547 ELSE_KW@844..848 "else"548 WHITESPACE@848..855 "\n "549 STMT_LOCAL@855..923550 LOCAL_KW@855..860 "local"551 WHITESPACE@860..861 " "552 BIND_FUNCTION@861..922553 NAME@861..867554 IDENT@861..867 "revStr"555 PARAMS_DESC@867..872556 L_PAREN@867..868 "("557 PARAM@868..871558 DESTRUCT_FULL@868..871559 NAME@868..871560 IDENT@868..871 "str"561 R_PAREN@871..872 ")"562 WHITESPACE@872..873 " "563 ASSIGN@873..874 "="564 WHITESPACE@874..875 " "565 EXPR_APPLY@875..922566 EXPR_INDEX@875..883567 EXPR_VAR@875..878568 NAME@875..878569 IDENT@875..878 "std"570 DOT@878..879 "."571 NAME@879..883572 IDENT@879..883 "join"573 ARGS_DESC@883..922574 L_PAREN@883..884 "("575 ARG@884..886576 EXPR_STRING@884..886577 STRING_SINGLE@884..886 "''"578 COMMA@886..887 ","579 WHITESPACE@887..888 " "580 ARG@888..921581 EXPR_APPLY@888..921582 EXPR_INDEX@888..899583 EXPR_VAR@888..891584 NAME@888..891585 IDENT@888..891 "std"586 DOT@891..892 "."587 NAME@892..899588 IDENT@892..899 "reverse"589 ARGS_DESC@899..921590 L_PAREN@899..900 "("591 ARG@900..920592 EXPR_APPLY@900..920593 EXPR_INDEX@900..915594 EXPR_VAR@900..903595 NAME@900..903596 IDENT@900..903 "std"597 DOT@903..904 "."598 NAME@904..915599 IDENT@904..915 "stringChars"600 ARGS_DESC@915..920601 L_PAREN@915..916 "("602 ARG@916..919603 EXPR_VAR@916..919604 NAME@916..919605 IDENT@916..919 "str"606 R_PAREN@919..920 ")"607 R_PAREN@920..921 ")"608 R_PAREN@921..922 ")"609 SEMI@922..923 ";"610 WHITESPACE@923..930 "\n "611 FALSE_EXPR@930..1024612 EXPR_APPLY@930..1024613 EXPR_INDEX@930..937614 EXPR_VAR@930..933615 NAME@930..933616 IDENT@930..933 "std"617 DOT@933..934 "."618 NAME@934..937619 IDENT@934..937 "map"620 ARGS_DESC@937..1024621 L_PAREN@937..938 "("622 ARG@938..959623 EXPR_FUNCTION@938..959624 FUNCTION_KW@938..946 "function"625 PARAMS_DESC@946..949626 L_PAREN@946..947 "("627 PARAM@947..948628 DESTRUCT_FULL@947..948629 NAME@947..948630 IDENT@947..948 "e"631 R_PAREN@948..949 ")"632 WHITESPACE@949..950 " "633 EXPR_APPLY@950..959634 EXPR_VAR@950..956635 NAME@950..956636 IDENT@950..956 "revStr"637 ARGS_DESC@956..959638 L_PAREN@956..957 "("639 ARG@957..958640 EXPR_VAR@957..958641 NAME@957..958642 IDENT@957..958 "e"643 R_PAREN@958..959 ")"644 COMMA@959..960 ","645 WHITESPACE@960..961 " "646 ARG@961..1023647 EXPR_APPLY@961..1023648 EXPR_INDEX@961..972649 EXPR_VAR@961..964650 NAME@961..964651 IDENT@961..964 "std"652 DOT@964..965 "."653 NAME@965..972654 IDENT@965..972 "reverse"655 ARGS_DESC@972..1023656 L_PAREN@972..973 "("657 ARG@973..1022658 EXPR_APPLY@973..1022659 EXPR_INDEX@973..987660 EXPR_VAR@973..976661 NAME@973..976662 IDENT@973..976 "std"663 DOT@976..977 "."664 NAME@977..987665 IDENT@977..987 "splitLimit"666 ARGS_DESC@987..1022667 L_PAREN@987..988 "("668 ARG@988..999669 EXPR_APPLY@988..999670 EXPR_VAR@988..994671 NAME@988..994672 IDENT@988..994 "revStr"673 ARGS_DESC@994..999674 L_PAREN@994..995 "("675 ARG@995..998676 EXPR_VAR@995..998677 NAME@995..998678 IDENT@995..998 "str"679 R_PAREN@998..999 ")"680 COMMA@999..1000 ","681 WHITESPACE@1000..1001 " "682 ARG@1001..1010683 EXPR_APPLY@1001..1010684 EXPR_VAR@1001..1007685 NAME@1001..1007686 IDENT@1001..1007 "revStr"687 ARGS_DESC@1007..1010688 L_PAREN@1007..1008 "("689 ARG@1008..1009690 EXPR_VAR@1008..1009691 NAME@1008..1009692 IDENT@1008..1009 "c"693 R_PAREN@1009..1010 ")"694 COMMA@1010..1011 ","695 WHITESPACE@1011..1012 " "696 ARG@1012..1021697 EXPR_VAR@1012..1021698 NAME@1012..1021699 IDENT@1012..1021 "maxsplits"700 R_PAREN@1021..1022 ")"701 R_PAREN@1022..1023 ")"702 R_PAREN@1023..1024 ")"703 COMMA@1024..1025 ","704 WHITESPACE@1025..1029 "\n\n "705 MEMBER_FIELD_METHOD@1029..1071706 FIELD_NAME_FIXED@1029..1034707 NAME@1029..1034708 IDENT@1029..1034 "split"709 PARAMS_DESC@1034..1042710 L_PAREN@1034..1035 "("711 PARAM@1035..1038712 DESTRUCT_FULL@1035..1038713 NAME@1035..1038714 IDENT@1035..1038 "str"715 COMMA@1038..1039 ","716 WHITESPACE@1039..1040 " "717 PARAM@1040..1041718 DESTRUCT_FULL@1040..1041719 NAME@1040..1041720 IDENT@1040..1041 "c"721 R_PAREN@1041..1042 ")"722 COLONCOLON@1042..1044 "::"723 WHITESPACE@1044..1045 " "724 EXPR_APPLY@1045..1071725 EXPR_INDEX@1045..1059726 EXPR_VAR@1045..1048727 NAME@1045..1048728 IDENT@1045..1048 "std"729 DOT@1048..1049 "."730 NAME@1049..1059731 IDENT@1049..1059 "splitLimit"732 ARGS_DESC@1059..1071733 L_PAREN@1059..1060 "("734 ARG@1060..1063735 EXPR_VAR@1060..1063736 NAME@1060..1063737 IDENT@1060..1063 "str"738 COMMA@1063..1064 ","739 WHITESPACE@1064..1065 " "740 ARG@1065..1066741 EXPR_VAR@1065..1066742 NAME@1065..1066743 IDENT@1065..1066 "c"744 COMMA@1066..1067 ","745 WHITESPACE@1067..1068 " "746 ARG@1068..1070747 EXPR_UNARY@1068..1070748 MINUS@1068..1069 "-"749 EXPR_NUMBER@1069..1070750 FLOAT@1069..1070 "1"751 R_PAREN@1070..1071 ")"752 COMMA@1071..1072 ","753 WHITESPACE@1072..1076 "\n\n "754 MEMBER_FIELD_METHOD@1076..1434755 FIELD_NAME_FIXED@1076..1088756 NAME@1076..1088757 IDENT@1076..1088 "mapWithIndex"758 PARAMS_DESC@1088..1099759 L_PAREN@1088..1089 "("760 PARAM@1089..1093761 DESTRUCT_FULL@1089..1093762 NAME@1089..1093763 IDENT@1089..1093 "func"764 COMMA@1093..1094 ","765 WHITESPACE@1094..1095 " "766 PARAM@1095..1098767 DESTRUCT_FULL@1095..1098768 NAME@1095..1098769 IDENT@1095..1098 "arr"770 R_PAREN@1098..1099 ")"771 COLONCOLON@1099..1101 "::"772 WHITESPACE@1101..1106 "\n "773 EXPR_IF_THEN_ELSE@1106..1434774 IF_KW@1106..1108 "if"775 WHITESPACE@1108..1109 " "776 EXPR_UNARY@1109..1130777 NOT@1109..1110 "!"778 EXPR_APPLY@1110..1130779 EXPR_INDEX@1110..1124780 EXPR_VAR@1110..1113781 NAME@1110..1113782 IDENT@1110..1113 "std"783 DOT@1113..1114 "."784 NAME@1114..1124785 IDENT@1114..1124 "isFunction"786 ARGS_DESC@1124..1130787 L_PAREN@1124..1125 "("788 ARG@1125..1129789 EXPR_VAR@1125..1129790 NAME@1125..1129791 IDENT@1125..1129 "func"792 R_PAREN@1129..1130 ")"793 WHITESPACE@1130..1131 " "794 THEN_KW@1131..1135 "then"795 WHITESPACE@1135..1142 "\n "796 TRUE_EXPR@1142..1220797 EXPR_ERROR@1142..1220798 ERROR_KW@1142..1147 "error"799 WHITESPACE@1147..1148 " "800 EXPR_PARENED@1148..1220801 L_PAREN@1148..1149 "("802 EXPR_BINARY@1149..1219803 LHS_EXPR@1149..1202804 EXPR_STRING@1149..1202805 STRING_SINGLE@1149..1202 "'std.mapWithIndex fir ..."806 WHITESPACE@1202..1203 " "807 PLUS@1203..1204 "+"808 WHITESPACE@1204..1205 " "809 EXPR_APPLY@1205..1219810 EXPR_INDEX@1205..1213811 EXPR_VAR@1205..1208812 NAME@1205..1208813 IDENT@1205..1208 "std"814 DOT@1208..1209 "."815 NAME@1209..1213816 IDENT@1209..1213 "type"817 ARGS_DESC@1213..1219818 L_PAREN@1213..1214 "("819 ARG@1214..1218820 EXPR_VAR@1214..1218821 NAME@1214..1218822 IDENT@1214..1218 "func"823 R_PAREN@1218..1219 ")"824 R_PAREN@1219..1220 ")"825 WHITESPACE@1220..1225 "\n "826 ELSE_KW@1225..1229 "else"827 WHITESPACE@1229..1230 " "828 FALSE_EXPR@1230..1434829 EXPR_IF_THEN_ELSE@1230..1434830 IF_KW@1230..1232 "if"831 WHITESPACE@1232..1233 " "832 EXPR_BINARY@1233..1272833 LHS_EXPR@1233..1250834 EXPR_UNARY@1233..1250835 NOT@1233..1234 "!"836 EXPR_APPLY@1234..1250837 EXPR_INDEX@1234..1245838 EXPR_VAR@1234..1237839 NAME@1234..1237840 IDENT@1234..1237 "std"841 DOT@1237..1238 "."842 NAME@1238..1245843 IDENT@1238..1245 "isArray"844 ARGS_DESC@1245..1250845 L_PAREN@1245..1246 "("846 ARG@1246..1249847 EXPR_VAR@1246..1249848 NAME@1246..1249849 IDENT@1246..1249 "arr"850 R_PAREN@1249..1250 ")"851 WHITESPACE@1250..1251 " "852 AND@1251..1253 "&&"853 WHITESPACE@1253..1254 " "854 EXPR_UNARY@1254..1272855 NOT@1254..1255 "!"856 EXPR_APPLY@1255..1272857 EXPR_INDEX@1255..1267858 EXPR_VAR@1255..1258859 NAME@1255..1258860 IDENT@1255..1258 "std"861 DOT@1258..1259 "."862 NAME@1259..1267863 IDENT@1259..1267 "isString"864 ARGS_DESC@1267..1272865 L_PAREN@1267..1268 "("866 ARG@1268..1271867 EXPR_VAR@1268..1271868 NAME@1268..1271869 IDENT@1268..1271 "arr"870 R_PAREN@1271..1272 ")"871 WHITESPACE@1272..1273 " "872 THEN_KW@1273..1277 "then"873 WHITESPACE@1277..1284 "\n "874 TRUE_EXPR@1284..1359875 EXPR_ERROR@1284..1359876 ERROR_KW@1284..1289 "error"877 WHITESPACE@1289..1290 " "878 EXPR_PARENED@1290..1359879 L_PAREN@1290..1291 "("880 EXPR_BINARY@1291..1358881 LHS_EXPR@1291..1342882 EXPR_STRING@1291..1342883 STRING_SINGLE@1291..1342 "'std.mapWithIndex sec ..."884 WHITESPACE@1342..1343 " "885 PLUS@1343..1344 "+"886 WHITESPACE@1344..1345 " "887 EXPR_APPLY@1345..1358888 EXPR_INDEX@1345..1353889 EXPR_VAR@1345..1348890 NAME@1345..1348891 IDENT@1345..1348 "std"892 DOT@1348..1349 "."893 NAME@1349..1353894 IDENT@1349..1353 "type"895 ARGS_DESC@1353..1358896 L_PAREN@1353..1354 "("897 ARG@1354..1357898 EXPR_VAR@1354..1357899 NAME@1354..1357900 IDENT@1354..1357 "arr"901 R_PAREN@1357..1358 ")"902 R_PAREN@1358..1359 ")"903 WHITESPACE@1359..1364 "\n "904 ELSE_KW@1364..1368 "else"905 WHITESPACE@1368..1375 "\n "906 FALSE_EXPR@1375..1434907 EXPR_APPLY@1375..1434908 EXPR_INDEX@1375..1388909 EXPR_VAR@1375..1378910 NAME@1375..1378911 IDENT@1375..1378 "std"912 DOT@1378..1379 "."913 NAME@1379..1388914 IDENT@1379..1388 "makeArray"915 ARGS_DESC@1388..1434916 L_PAREN@1388..1389 "("917 ARG@1389..1404918 EXPR_APPLY@1389..1404919 EXPR_INDEX@1389..1399920 EXPR_VAR@1389..1392921 NAME@1389..1392922 IDENT@1389..1392 "std"923 DOT@1392..1393 "."924 NAME@1393..1399925 IDENT@1393..1399 "length"926 ARGS_DESC@1399..1404927 L_PAREN@1399..1400 "("928 ARG@1400..1403929 EXPR_VAR@1400..1403930 NAME@1400..1403931 IDENT@1400..1403 "arr"932 R_PAREN@1403..1404 ")"933 COMMA@1404..1405 ","934 WHITESPACE@1405..1406 " "935 ARG@1406..1433936 EXPR_FUNCTION@1406..1433937 FUNCTION_KW@1406..1414 "function"938 PARAMS_DESC@1414..1417939 L_PAREN@1414..1415 "("940 PARAM@1415..1416941 DESTRUCT_FULL@1415..1416942 NAME@1415..1416943 IDENT@1415..1416 "i"944 R_PAREN@1416..1417 ")"945 WHITESPACE@1417..1418 " "946 EXPR_APPLY@1418..1433947 EXPR_VAR@1418..1422948 NAME@1418..1422949 IDENT@1418..1422 "func"950 ARGS_DESC@1422..1433951 L_PAREN@1422..1423 "("952 ARG@1423..1424953 EXPR_VAR@1423..1424954 NAME@1423..1424955 IDENT@1423..1424 "i"956 COMMA@1424..1425 ","957 WHITESPACE@1425..1426 " "958 ARG@1426..1432959 EXPR_INDEX_EXPR@1426..1432960 LHS_EXPR@1426..1429961 EXPR_VAR@1426..1429962 NAME@1426..1429963 IDENT@1426..1429 "arr"964 L_BRACK@1429..1430 "["965 EXPR_VAR@1430..1431966 NAME@1430..1431967 IDENT@1430..1431 "i"968 R_BRACK@1431..1432 "]"969 R_PAREN@1432..1433 ")"970 R_PAREN@1433..1434 ")"971 COMMA@1434..1435 ","972 WHITESPACE@1435..1439 "\n\n "973 MEMBER_FIELD_METHOD@1439..1767974 FIELD_NAME_FIXED@1439..1449975 NAME@1439..1449976 IDENT@1439..1449 "mapWithKey"977 PARAMS_DESC@1449..1460978 L_PAREN@1449..1450 "("979 PARAM@1450..1454980 DESTRUCT_FULL@1450..1454981 NAME@1450..1454982 IDENT@1450..1454 "func"983 COMMA@1454..1455 ","984 WHITESPACE@1455..1456 " "985 PARAM@1456..1459986 DESTRUCT_FULL@1456..1459987 NAME@1456..1459988 IDENT@1456..1459 "obj"989 R_PAREN@1459..1460 ")"990 COLONCOLON@1460..1462 "::"991 WHITESPACE@1462..1467 "\n "992 EXPR_IF_THEN_ELSE@1467..1767993 IF_KW@1467..1469 "if"994 WHITESPACE@1469..1470 " "995 EXPR_UNARY@1470..1491996 NOT@1470..1471 "!"997 EXPR_APPLY@1471..1491998 EXPR_INDEX@1471..1485999 EXPR_VAR@1471..14741000 NAME@1471..14741001 IDENT@1471..1474 "std"1002 DOT@1474..1475 "."1003 NAME@1475..14851004 IDENT@1475..1485 "isFunction"1005 ARGS_DESC@1485..14911006 L_PAREN@1485..1486 "("1007 ARG@1486..14901008 EXPR_VAR@1486..14901009 NAME@1486..14901010 IDENT@1486..1490 "func"1011 R_PAREN@1490..1491 ")"1012 WHITESPACE@1491..1492 " "1013 THEN_KW@1492..1496 "then"1014 WHITESPACE@1496..1503 "\n "1015 TRUE_EXPR@1503..15791016 EXPR_ERROR@1503..15791017 ERROR_KW@1503..1508 "error"1018 WHITESPACE@1508..1509 " "1019 EXPR_PARENED@1509..15791020 L_PAREN@1509..1510 "("1021 EXPR_BINARY@1510..15781022 LHS_EXPR@1510..15611023 EXPR_STRING@1510..15611024 STRING_SINGLE@1510..1561 "'std.mapWithKey first ..."1025 WHITESPACE@1561..1562 " "1026 PLUS@1562..1563 "+"1027 WHITESPACE@1563..1564 " "1028 EXPR_APPLY@1564..15781029 EXPR_INDEX@1564..15721030 EXPR_VAR@1564..15671031 NAME@1564..15671032 IDENT@1564..1567 "std"1033 DOT@1567..1568 "."1034 NAME@1568..15721035 IDENT@1568..1572 "type"1036 ARGS_DESC@1572..15781037 L_PAREN@1572..1573 "("1038 ARG@1573..15771039 EXPR_VAR@1573..15771040 NAME@1573..15771041 IDENT@1573..1577 "func"1042 R_PAREN@1577..1578 ")"1043 R_PAREN@1578..1579 ")"1044 WHITESPACE@1579..1584 "\n "1045 ELSE_KW@1584..1588 "else"1046 WHITESPACE@1588..1589 " "1047 FALSE_EXPR@1589..17671048 EXPR_IF_THEN_ELSE@1589..17671049 IF_KW@1589..1591 "if"1050 WHITESPACE@1591..1592 " "1051 EXPR_UNARY@1592..16101052 NOT@1592..1593 "!"1053 EXPR_APPLY@1593..16101054 EXPR_INDEX@1593..16051055 EXPR_VAR@1593..15961056 NAME@1593..15961057 IDENT@1593..1596 "std"1058 DOT@1596..1597 "."1059 NAME@1597..16051060 IDENT@1597..1605 "isObject"1061 ARGS_DESC@1605..16101062 L_PAREN@1605..1606 "("1063 ARG@1606..16091064 EXPR_VAR@1606..16091065 NAME@1606..16091066 IDENT@1606..1609 "obj"1067 R_PAREN@1609..1610 ")"1068 WHITESPACE@1610..1611 " "1069 THEN_KW@1611..1615 "then"1070 WHITESPACE@1615..1622 "\n "1071 TRUE_EXPR@1622..16961072 EXPR_ERROR@1622..16961073 ERROR_KW@1622..1627 "error"1074 WHITESPACE@1627..1628 " "1075 EXPR_PARENED@1628..16961076 L_PAREN@1628..1629 "("1077 EXPR_BINARY@1629..16951078 LHS_EXPR@1629..16791079 EXPR_STRING@1629..16791080 STRING_SINGLE@1629..1679 "'std.mapWithKey secon ..."1081 WHITESPACE@1679..1680 " "1082 PLUS@1680..1681 "+"1083 WHITESPACE@1681..1682 " "1084 EXPR_APPLY@1682..16951085 EXPR_INDEX@1682..16901086 EXPR_VAR@1682..16851087 NAME@1682..16851088 IDENT@1682..1685 "std"1089 DOT@1685..1686 "."1090 NAME@1686..16901091 IDENT@1686..1690 "type"1092 ARGS_DESC@1690..16951093 L_PAREN@1690..1691 "("1094 ARG@1691..16941095 EXPR_VAR@1691..16941096 NAME@1691..16941097 IDENT@1691..1694 "obj"1098 R_PAREN@1694..1695 ")"1099 R_PAREN@1695..1696 ")"1100 WHITESPACE@1696..1701 "\n "1101 ELSE_KW@1701..1705 "else"1102 WHITESPACE@1705..1712 "\n "1103 FALSE_EXPR@1712..17671104 EXPR_OBJECT@1712..17671105 OBJ_BODY_COMP@1712..17671106 L_BRACE@1712..1713 "{"1107 WHITESPACE@1713..1714 " "1108 MEMBER_FIELD_NORMAL@1714..17341109 FIELD_NAME_DYNAMIC@1714..17171110 L_BRACK@1714..1715 "["1111 EXPR_VAR@1715..17161112 NAME@1715..17161113 IDENT@1715..1716 "k"1114 R_BRACK@1716..1717 "]"1115 COLON@1717..1718 ":"1116 WHITESPACE@1718..1719 " "1117 EXPR_APPLY@1719..17341118 EXPR_VAR@1719..17231119 NAME@1719..17231120 IDENT@1719..1723 "func"1121 ARGS_DESC@1723..17341122 L_PAREN@1723..1724 "("1123 ARG@1724..17251124 EXPR_VAR@1724..17251125 NAME@1724..17251126 IDENT@1724..1725 "k"1127 COMMA@1725..1726 ","1128 WHITESPACE@1726..1727 " "1129 ARG@1727..17331130 EXPR_INDEX_EXPR@1727..17331131 LHS_EXPR@1727..17301132 EXPR_VAR@1727..17301133 NAME@1727..17301134 IDENT@1727..1730 "obj"1135 L_BRACK@1730..1731 "["1136 EXPR_VAR@1731..17321137 NAME@1731..17321138 IDENT@1731..1732 "k"1139 R_BRACK@1732..1733 "]"1140 R_PAREN@1733..1734 ")"1141 WHITESPACE@1734..1735 " "1142 FOR_SPEC@1735..17651143 FOR_KW@1735..1738 "for"1144 WHITESPACE@1738..1739 " "1145 NAME@1739..17401146 IDENT@1739..1740 "k"1147 WHITESPACE@1740..1741 " "1148 IN_KW@1741..1743 "in"1149 WHITESPACE@1743..1744 " "1150 EXPR_APPLY@1744..17651151 EXPR_INDEX@1744..17601152 EXPR_VAR@1744..17471153 NAME@1744..17471154 IDENT@1744..1747 "std"1155 DOT@1747..1748 "."1156 NAME@1748..17601157 IDENT@1748..1760 "objectFields"1158 ARGS_DESC@1760..17651159 L_PAREN@1760..1761 "("1160 ARG@1761..17641161 EXPR_VAR@1761..17641162 NAME@1761..17641163 IDENT@1761..1764 "obj"1164 R_PAREN@1764..1765 ")"1165 WHITESPACE@1765..1766 " "1166 R_BRACE@1766..1767 "}"1167 COMMA@1767..1768 ","1168 WHITESPACE@1768..1772 "\n\n "1169 MEMBER_FIELD_METHOD@1772..18151170 FIELD_NAME_FIXED@1772..17771171 NAME@1772..17771172 IDENT@1772..1777 "lines"1173 PARAMS_DESC@1777..17821174 L_PAREN@1777..1778 "("1175 PARAM@1778..17811176 DESTRUCT_FULL@1778..17811177 NAME@1778..17811178 IDENT@1778..1781 "arr"1179 R_PAREN@1781..1782 ")"1180 COLONCOLON@1782..1784 "::"1181 WHITESPACE@1784..1789 "\n "1182 EXPR_APPLY@1789..18151183 EXPR_INDEX@1789..17971184 EXPR_VAR@1789..17921185 NAME@1789..17921186 IDENT@1789..1792 "std"1187 DOT@1792..1793 "."1188 NAME@1793..17971189 IDENT@1793..1797 "join"1190 ARGS_DESC@1797..18151191 L_PAREN@1797..1798 "("1192 ARG@1798..18021193 EXPR_STRING@1798..18021194 STRING_SINGLE@1798..1802 "'\\n'"1195 COMMA@1802..1803 ","1196 WHITESPACE@1803..1804 " "1197 ARG@1804..18141198 EXPR_BINARY@1804..18141199 LHS_EXPR@1804..18071200 EXPR_VAR@1804..18071201 NAME@1804..18071202 IDENT@1804..1807 "arr"1203 WHITESPACE@1807..1808 " "1204 PLUS@1808..1809 "+"1205 WHITESPACE@1809..1810 " "1206 EXPR_ARRAY@1810..18141207 L_BRACK@1810..1811 "["1208 EXPR_STRING@1811..18131209 STRING_SINGLE@1811..1813 "''"1210 R_BRACK@1813..1814 "]"1211 R_PAREN@1814..1815 ")"1212 COMMA@1815..1816 ","1213 WHITESPACE@1816..1820 "\n\n "1214 MEMBER_FIELD_METHOD@1820..20321215 FIELD_NAME_FIXED@1820..18281216 NAME@1820..18281217 IDENT@1820..1828 "deepJoin"1218 PARAMS_DESC@1828..18331219 L_PAREN@1828..1829 "("1220 PARAM@1829..18321221 DESTRUCT_FULL@1829..18321222 NAME@1829..18321223 IDENT@1829..1832 "arr"1224 R_PAREN@1832..1833 ")"1225 COLONCOLON@1833..1835 "::"1226 WHITESPACE@1835..1840 "\n "1227 EXPR_IF_THEN_ELSE@1840..20321228 IF_KW@1840..1842 "if"1229 WHITESPACE@1842..1843 " "1230 EXPR_APPLY@1843..18601231 EXPR_INDEX@1843..18551232 EXPR_VAR@1843..18461233 NAME@1843..18461234 IDENT@1843..1846 "std"1235 DOT@1846..1847 "."1236 NAME@1847..18551237 IDENT@1847..1855 "isString"1238 ARGS_DESC@1855..18601239 L_PAREN@1855..1856 "("1240 ARG@1856..18591241 EXPR_VAR@1856..18591242 NAME@1856..18591243 IDENT@1856..1859 "arr"1244 R_PAREN@1859..1860 ")"1245 WHITESPACE@1860..1861 " "1246 THEN_KW@1861..1865 "then"1247 WHITESPACE@1865..1872 "\n "1248 TRUE_EXPR@1872..18751249 EXPR_VAR@1872..18751250 NAME@1872..18751251 IDENT@1872..1875 "arr"1252 WHITESPACE@1875..1880 "\n "1253 ELSE_KW@1880..1884 "else"1254 WHITESPACE@1884..1885 " "1255 FALSE_EXPR@1885..20321256 EXPR_IF_THEN_ELSE@1885..20321257 IF_KW@1885..1887 "if"1258 WHITESPACE@1887..1888 " "1259 EXPR_APPLY@1888..19041260 EXPR_INDEX@1888..18991261 EXPR_VAR@1888..18911262 NAME@1888..18911263 IDENT@1888..1891 "std"1264 DOT@1891..1892 "."1265 NAME@1892..18991266 IDENT@1892..1899 "isArray"1267 ARGS_DESC@1899..19041268 L_PAREN@1899..1900 "("1269 ARG@1900..19031270 EXPR_VAR@1900..19031271 NAME@1900..19031272 IDENT@1900..1903 "arr"1273 R_PAREN@1903..1904 ")"1274 WHITESPACE@1904..1905 " "1275 THEN_KW@1905..1909 "then"1276 WHITESPACE@1909..1916 "\n "1277 TRUE_EXPR@1916..19601278 EXPR_APPLY@1916..19601279 EXPR_INDEX@1916..19241280 EXPR_VAR@1916..19191281 NAME@1916..19191282 IDENT@1916..1919 "std"1283 DOT@1919..1920 "."1284 NAME@1920..19241285 IDENT@1920..1924 "join"1286 ARGS_DESC@1924..19601287 L_PAREN@1924..1925 "("1288 ARG@1925..19271289 EXPR_STRING@1925..19271290 STRING_SINGLE@1925..1927 "''"1291 COMMA@1927..1928 ","1292 WHITESPACE@1928..1929 " "1293 ARG@1929..19591294 EXPR_ARRAY_COMP@1929..19591295 L_BRACK@1929..1930 "["1296 EXPR_APPLY@1930..19451297 EXPR_INDEX@1930..19421298 EXPR_VAR@1930..19331299 NAME@1930..19331300 IDENT@1930..1933 "std"1301 DOT@1933..1934 "."1302 NAME@1934..19421303 IDENT@1934..1942 "deepJoin"1304 ARGS_DESC@1942..19451305 L_PAREN@1942..1943 "("1306 ARG@1943..19441307 EXPR_VAR@1943..19441308 NAME@1943..19441309 IDENT@1943..1944 "x"1310 R_PAREN@1944..1945 ")"1311 WHITESPACE@1945..1946 " "1312 FOR_SPEC@1946..19581313 FOR_KW@1946..1949 "for"1314 WHITESPACE@1949..1950 " "1315 NAME@1950..19511316 IDENT@1950..1951 "x"1317 WHITESPACE@1951..1952 " "1318 IN_KW@1952..1954 "in"1319 WHITESPACE@1954..1955 " "1320 EXPR_VAR@1955..19581321 NAME@1955..19581322 IDENT@1955..1958 "arr"1323 R_BRACK@1958..1959 "]"1324 R_PAREN@1959..1960 ")"1325 WHITESPACE@1960..1965 "\n "1326 ELSE_KW@1965..1969 "else"1327 WHITESPACE@1969..1976 "\n "1328 FALSE_EXPR@1976..20321329 EXPR_ERROR@1976..20321330 ERROR_KW@1976..1981 "error"1331 WHITESPACE@1981..1982 " "1332 EXPR_BINARY@1982..20321333 LHS_EXPR@1982..20161334 EXPR_STRING@1982..20161335 STRING_SINGLE@1982..2016 "'Expected string or a ..."1336 WHITESPACE@2016..2017 " "1337 MODULO@2017..2018 "%"1338 WHITESPACE@2018..2019 " "1339 EXPR_APPLY@2019..20321340 EXPR_INDEX@2019..20271341 EXPR_VAR@2019..20221342 NAME@2019..20221343 IDENT@2019..2022 "std"1344 DOT@2022..2023 "."1345 NAME@2023..20271346 IDENT@2023..2027 "type"1347 ARGS_DESC@2027..20321348 L_PAREN@2027..2028 "("1349 ARG@2028..20311350 EXPR_VAR@2028..20311351 NAME@2028..20311352 IDENT@2028..2031 "arr"1353 R_PAREN@2031..2032 ")"1354 COMMA@2032..2033 ","1355 WHITESPACE@2033..2037 "\n\n "1356 MEMBER_FIELD_METHOD@2037..25121357 FIELD_NAME_FIXED@2037..20461358 NAME@2037..20461359 IDENT@2037..2046 "filterMap"1360 PARAMS_DESC@2046..20741361 L_PAREN@2046..2047 "("1362 PARAM@2047..20581363 DESTRUCT_FULL@2047..20581364 NAME@2047..20581365 IDENT@2047..2058 "filter_func"1366 COMMA@2058..2059 ","1367 WHITESPACE@2059..2060 " "1368 PARAM@2060..20681369 DESTRUCT_FULL@2060..20681370 NAME@2060..20681371 IDENT@2060..2068 "map_func"1372 COMMA@2068..2069 ","1373 WHITESPACE@2069..2070 " "1374 PARAM@2070..20731375 DESTRUCT_FULL@2070..20731376 NAME@2070..20731377 IDENT@2070..2073 "arr"1378 R_PAREN@2073..2074 ")"1379 COLONCOLON@2074..2076 "::"1380 WHITESPACE@2076..2081 "\n "1381 EXPR_IF_THEN_ELSE@2081..25121382 IF_KW@2081..2083 "if"1383 WHITESPACE@2083..2084 " "1384 EXPR_UNARY@2084..21121385 NOT@2084..2085 "!"1386 EXPR_APPLY@2085..21121387 EXPR_INDEX@2085..20991388 EXPR_VAR@2085..20881389 NAME@2085..20881390 IDENT@2085..2088 "std"1391 DOT@2088..2089 "."1392 NAME@2089..20991393 IDENT@2089..2099 "isFunction"1394 ARGS_DESC@2099..21121395 L_PAREN@2099..2100 "("1396 ARG@2100..21111397 EXPR_VAR@2100..21111398 NAME@2100..21111399 IDENT@2100..2111 "filter_func"1400 R_PAREN@2111..2112 ")"1401 WHITESPACE@2112..2113 " "1402 THEN_KW@2113..2117 "then"1403 WHITESPACE@2117..2124 "\n "1404 TRUE_EXPR@2124..22061405 EXPR_ERROR@2124..22061406 ERROR_KW@2124..2129 "error"1407 WHITESPACE@2129..2130 " "1408 EXPR_PARENED@2130..22061409 L_PAREN@2130..2131 "("1410 EXPR_BINARY@2131..22051411 LHS_EXPR@2131..21811412 EXPR_STRING@2131..21811413 STRING_SINGLE@2131..2181 "'std.filterMap first ..."1414 WHITESPACE@2181..2182 " "1415 PLUS@2182..2183 "+"1416 WHITESPACE@2183..2184 " "1417 EXPR_APPLY@2184..22051418 EXPR_INDEX@2184..21921419 EXPR_VAR@2184..21871420 NAME@2184..21871421 IDENT@2184..2187 "std"1422 DOT@2187..2188 "."1423 NAME@2188..21921424 IDENT@2188..2192 "type"1425 ARGS_DESC@2192..22051426 L_PAREN@2192..2193 "("1427 ARG@2193..22041428 EXPR_VAR@2193..22041429 NAME@2193..22041430 IDENT@2193..2204 "filter_func"1431 R_PAREN@2204..2205 ")"1432 R_PAREN@2205..2206 ")"1433 WHITESPACE@2206..2211 "\n "1434 ELSE_KW@2211..2215 "else"1435 WHITESPACE@2215..2216 " "1436 FALSE_EXPR@2216..25121437 EXPR_IF_THEN_ELSE@2216..25121438 IF_KW@2216..2218 "if"1439 WHITESPACE@2218..2219 " "1440 EXPR_UNARY@2219..22441441 NOT@2219..2220 "!"1442 EXPR_APPLY@2220..22441443 EXPR_INDEX@2220..22341444 EXPR_VAR@2220..22231445 NAME@2220..22231446 IDENT@2220..2223 "std"1447 DOT@2223..2224 "."1448 NAME@2224..22341449 IDENT@2224..2234 "isFunction"1450 ARGS_DESC@2234..22441451 L_PAREN@2234..2235 "("1452 ARG@2235..22431453 EXPR_VAR@2235..22431454 NAME@2235..22431455 IDENT@2235..2243 "map_func"1456 R_PAREN@2243..2244 ")"1457 WHITESPACE@2244..2245 " "1458 THEN_KW@2245..2249 "then"1459 WHITESPACE@2249..2256 "\n "1460 TRUE_EXPR@2256..23361461 EXPR_ERROR@2256..23361462 ERROR_KW@2256..2261 "error"1463 WHITESPACE@2261..2262 " "1464 EXPR_PARENED@2262..23361465 L_PAREN@2262..2263 "("1466 EXPR_BINARY@2263..23351467 LHS_EXPR@2263..23141468 EXPR_STRING@2263..23141469 STRING_SINGLE@2263..2314 "'std.filterMap second ..."1470 WHITESPACE@2314..2315 " "1471 PLUS@2315..2316 "+"1472 WHITESPACE@2316..2317 " "1473 EXPR_APPLY@2317..23351474 EXPR_INDEX@2317..23251475 EXPR_VAR@2317..23201476 NAME@2317..23201477 IDENT@2317..2320 "std"1478 DOT@2320..2321 "."1479 NAME@2321..23251480 IDENT@2321..2325 "type"1481 ARGS_DESC@2325..23351482 L_PAREN@2325..2326 "("1483 ARG@2326..23341484 EXPR_VAR@2326..23341485 NAME@2326..23341486 IDENT@2326..2334 "map_func"1487 R_PAREN@2334..2335 ")"1488 R_PAREN@2335..2336 ")"1489 WHITESPACE@2336..2341 "\n "1490 ELSE_KW@2341..2345 "else"1491 WHITESPACE@2345..2346 " "1492 FALSE_EXPR@2346..25121493 EXPR_IF_THEN_ELSE@2346..25121494 IF_KW@2346..2348 "if"1495 WHITESPACE@2348..2349 " "1496 EXPR_UNARY@2349..23661497 NOT@2349..2350 "!"1498 EXPR_APPLY@2350..23661499 EXPR_INDEX@2350..23611500 EXPR_VAR@2350..23531501 NAME@2350..23531502 IDENT@2350..2353 "std"1503 DOT@2353..2354 "."1504 NAME@2354..23611505 IDENT@2354..2361 "isArray"1506 ARGS_DESC@2361..23661507 L_PAREN@2361..2362 "("1508 ARG@2362..23651509 EXPR_VAR@2362..23651510 NAME@2362..23651511 IDENT@2362..2365 "arr"1512 R_PAREN@2365..2366 ")"1513 WHITESPACE@2366..2367 " "1514 THEN_KW@2367..2371 "then"1515 WHITESPACE@2371..2378 "\n "1516 TRUE_EXPR@2378..24491517 EXPR_ERROR@2378..24491518 ERROR_KW@2378..2383 "error"1519 WHITESPACE@2383..2384 " "1520 EXPR_PARENED@2384..24491521 L_PAREN@2384..2385 "("1522 EXPR_BINARY@2385..24481523 LHS_EXPR@2385..24321524 EXPR_STRING@2385..24321525 STRING_SINGLE@2385..2432 "'std.filterMap third ..."1526 WHITESPACE@2432..2433 " "1527 PLUS@2433..2434 "+"1528 WHITESPACE@2434..2435 " "1529 EXPR_APPLY@2435..24481530 EXPR_INDEX@2435..24431531 EXPR_VAR@2435..24381532 NAME@2435..24381533 IDENT@2435..2438 "std"1534 DOT@2438..2439 "."1535 NAME@2439..24431536 IDENT@2439..2443 "type"1537 ARGS_DESC@2443..24481538 L_PAREN@2443..2444 "("1539 ARG@2444..24471540 EXPR_VAR@2444..24471541 NAME@2444..24471542 IDENT@2444..2447 "arr"1543 R_PAREN@2447..2448 ")"1544 R_PAREN@2448..2449 ")"1545 WHITESPACE@2449..2454 "\n "1546 ELSE_KW@2454..2458 "else"1547 WHITESPACE@2458..2465 "\n "1548 FALSE_EXPR@2465..25121549 EXPR_APPLY@2465..25121550 EXPR_INDEX@2465..24721551 EXPR_VAR@2465..24681552 NAME@2465..24681553 IDENT@2465..2468 "std"1554 DOT@2468..2469 "."1555 NAME@2469..24721556 IDENT@2469..2472 "map"1557 ARGS_DESC@2472..25121558 L_PAREN@2472..2473 "("1559 ARG@2473..24811560 EXPR_VAR@2473..24811561 NAME@2473..24811562 IDENT@2473..2481 "map_func"1563 COMMA@2481..2482 ","1564 WHITESPACE@2482..2483 " "1565 ARG@2483..25111566 EXPR_APPLY@2483..25111567 EXPR_INDEX@2483..24931568 EXPR_VAR@2483..24861569 NAME@2483..24861570 IDENT@2483..2486 "std"1571 DOT@2486..2487 "."1572 NAME@2487..24931573 IDENT@2487..2493 "filter"1574 ARGS_DESC@2493..25111575 L_PAREN@2493..2494 "("1576 ARG@2494..25051577 EXPR_VAR@2494..25051578 NAME@2494..25051579 IDENT@2494..2505 "filter_func"1580 COMMA@2505..2506 ","1581 WHITESPACE@2506..2507 " "1582 ARG@2507..25101583 EXPR_VAR@2507..25101584 NAME@2507..25101585 IDENT@2507..2510 "arr"1586 R_PAREN@2510..2511 ")"1587 R_PAREN@2511..2512 ")"1588 COMMA@2512..2513 ","1589 WHITESPACE@2513..2517 "\n\n "1590 MEMBER_FIELD_METHOD@2517..26251591 FIELD_NAME_FIXED@2517..25281592 NAME@2517..25281593 IDENT@2517..2528 "assertEqual"1594 PARAMS_DESC@2528..25341595 L_PAREN@2528..2529 "("1596 PARAM@2529..25301597 DESTRUCT_FULL@2529..25301598 NAME@2529..25301599 IDENT@2529..2530 "a"1600 COMMA@2530..2531 ","1601 WHITESPACE@2531..2532 " "1602 PARAM@2532..25331603 DESTRUCT_FULL@2532..25331604 NAME@2532..25331605 IDENT@2532..2533 "b"1606 R_PAREN@2533..2534 ")"1607 COLONCOLON@2534..2536 "::"1608 WHITESPACE@2536..2541 "\n "1609 EXPR_IF_THEN_ELSE@2541..26251610 IF_KW@2541..2543 "if"1611 WHITESPACE@2543..2544 " "1612 EXPR_BINARY@2544..25501613 LHS_EXPR@2544..25451614 EXPR_VAR@2544..25451615 NAME@2544..25451616 IDENT@2544..2545 "a"1617 WHITESPACE@2545..2546 " "1618 EQ@2546..2548 "=="1619 WHITESPACE@2548..2549 " "1620 EXPR_VAR@2549..25501621 NAME@2549..25501622 IDENT@2549..2550 "b"1623 WHITESPACE@2550..2551 " "1624 THEN_KW@2551..2555 "then"1625 WHITESPACE@2555..2562 "\n "1626 TRUE_EXPR@2562..25661627 EXPR_LITERAL@2562..25661628 TRUE_KW@2562..2566 "true"1629 WHITESPACE@2566..2571 "\n "1630 ELSE_KW@2571..2575 "else"1631 WHITESPACE@2575..2582 "\n "1632 FALSE_EXPR@2582..26251633 EXPR_ERROR@2582..26251634 ERROR_KW@2582..2587 "error"1635 WHITESPACE@2587..2588 " "1636 EXPR_BINARY@2588..26251637 LHS_EXPR@2588..26211638 EXPR_BINARY@2588..26211639 LHS_EXPR@2588..26121640 EXPR_BINARY@2588..26121641 LHS_EXPR@2588..26081642 EXPR_STRING@2588..26081643 STRING_SINGLE@2588..2608 "'Assertion failed. '"1644 WHITESPACE@2608..2609 " "1645 PLUS@2609..2610 "+"1646 WHITESPACE@2610..2611 " "1647 EXPR_VAR@2611..26121648 NAME@2611..26121649 IDENT@2611..2612 "a"1650 WHITESPACE@2612..2613 " "1651 PLUS@2613..2614 "+"1652 WHITESPACE@2614..2615 " "1653 EXPR_STRING@2615..26211654 STRING_SINGLE@2615..2621 "' != '"1655 WHITESPACE@2621..2622 " "1656 PLUS@2622..2623 "+"1657 WHITESPACE@2623..2624 " "1658 EXPR_VAR@2624..26251659 NAME@2624..26251660 IDENT@2624..2625 "b"1661 COMMA@2625..2626 ","1662 WHITESPACE@2626..2630 "\n\n "1663 MEMBER_FIELD_METHOD@2630..27321664 FIELD_NAME_FIXED@2630..26351665 NAME@2630..26351666 IDENT@2630..2635 "clamp"1667 PARAMS_DESC@2635..26541668 L_PAREN@2635..2636 "("1669 PARAM@2636..26371670 DESTRUCT_FULL@2636..26371671 NAME@2636..26371672 IDENT@2636..2637 "x"1673 COMMA@2637..2638 ","1674 WHITESPACE@2638..2639 " "1675 PARAM@2639..26451676 DESTRUCT_FULL@2639..26451677 NAME@2639..26451678 IDENT@2639..2645 "minVal"1679 COMMA@2645..2646 ","1680 WHITESPACE@2646..2647 " "1681 PARAM@2647..26531682 DESTRUCT_FULL@2647..26531683 NAME@2647..26531684 IDENT@2647..2653 "maxVal"1685 R_PAREN@2653..2654 ")"1686 COLONCOLON@2654..2656 "::"1687 WHITESPACE@2656..2661 "\n "1688 EXPR_IF_THEN_ELSE@2661..27321689 IF_KW@2661..2663 "if"1690 WHITESPACE@2663..2664 " "1691 EXPR_BINARY@2664..26741692 LHS_EXPR@2664..26651693 EXPR_VAR@2664..26651694 NAME@2664..26651695 IDENT@2664..2665 "x"1696 WHITESPACE@2665..2666 " "1697 LT@2666..2667 "<"1698 WHITESPACE@2667..2668 " "1699 EXPR_VAR@2668..26741700 NAME@2668..26741701 IDENT@2668..2674 "minVal"1702 WHITESPACE@2674..2675 " "1703 THEN_KW@2675..2679 "then"1704 WHITESPACE@2679..2680 " "1705 TRUE_EXPR@2680..26861706 EXPR_VAR@2680..26861707 NAME@2680..26861708 IDENT@2680..2686 "minVal"1709 WHITESPACE@2686..2691 "\n "1710 ELSE_KW@2691..2695 "else"1711 WHITESPACE@2695..2696 " "1712 FALSE_EXPR@2696..27321713 EXPR_IF_THEN_ELSE@2696..27321714 IF_KW@2696..2698 "if"1715 WHITESPACE@2698..2699 " "1716 EXPR_BINARY@2699..27091717 LHS_EXPR@2699..27001718 EXPR_VAR@2699..27001719 NAME@2699..27001720 IDENT@2699..2700 "x"1721 WHITESPACE@2700..2701 " "1722 GT@2701..2702 ">"1723 WHITESPACE@2702..2703 " "1724 EXPR_VAR@2703..27091725 NAME@2703..27091726 IDENT@2703..2709 "maxVal"1727 WHITESPACE@2709..2710 " "1728 THEN_KW@2710..2714 "then"1729 WHITESPACE@2714..2715 " "1730 TRUE_EXPR@2715..27211731 EXPR_VAR@2715..27211732 NAME@2715..27211733 IDENT@2715..2721 "maxVal"1734 WHITESPACE@2721..2726 "\n "1735 ELSE_KW@2726..2730 "else"1736 WHITESPACE@2730..2731 " "1737 FALSE_EXPR@2731..27321738 EXPR_VAR@2731..27321739 NAME@2731..27321740 IDENT@2731..2732 "x"1741 COMMA@2732..2733 ","1742 WHITESPACE@2733..2737 "\n\n "1743 MEMBER_FIELD_METHOD@2737..28041744 FIELD_NAME_FIXED@2737..27501745 NAME@2737..27501746 IDENT@2737..2750 "flattenArrays"1747 PARAMS_DESC@2750..27561748 L_PAREN@2750..2751 "("1749 PARAM@2751..27551750 DESTRUCT_FULL@2751..27551751 NAME@2751..27551752 IDENT@2751..2755 "arrs"1753 R_PAREN@2755..2756 ")"1754 COLONCOLON@2756..2758 "::"1755 WHITESPACE@2758..2763 "\n "1756 EXPR_APPLY@2763..28041757 EXPR_INDEX@2763..27721758 EXPR_VAR@2763..27661759 NAME@2763..27661760 IDENT@2763..2766 "std"1761 DOT@2766..2767 "."1762 NAME@2767..27721763 IDENT@2767..2772 "foldl"1764 ARGS_DESC@2772..28041765 L_PAREN@2772..2773 "("1766 ARG@2773..27931767 EXPR_FUNCTION@2773..27931768 FUNCTION_KW@2773..2781 "function"1769 PARAMS_DESC@2781..27871770 L_PAREN@2781..2782 "("1771 PARAM@2782..27831772 DESTRUCT_FULL@2782..27831773 NAME@2782..27831774 IDENT@2782..2783 "a"1775 COMMA@2783..2784 ","1776 WHITESPACE@2784..2785 " "1777 PARAM@2785..27861778 DESTRUCT_FULL@2785..27861779 NAME@2785..27861780 IDENT@2785..2786 "b"1781 R_PAREN@2786..2787 ")"1782 WHITESPACE@2787..2788 " "1783 EXPR_BINARY@2788..27931784 LHS_EXPR@2788..27891785 EXPR_VAR@2788..27891786 NAME@2788..27891787 IDENT@2788..2789 "a"1788 WHITESPACE@2789..2790 " "1789 PLUS@2790..2791 "+"1790 WHITESPACE@2791..2792 " "1791 EXPR_VAR@2792..27931792 NAME@2792..27931793 IDENT@2792..2793 "b"1794 COMMA@2793..2794 ","1795 WHITESPACE@2794..2795 " "1796 ARG@2795..27991797 EXPR_VAR@2795..27991798 NAME@2795..27991799 IDENT@2795..2799 "arrs"1800 COMMA@2799..2800 ","1801 WHITESPACE@2800..2801 " "1802 ARG@2801..28031803 EXPR_ARRAY@2801..28031804 L_BRACK@2801..2802 "["1805 R_BRACK@2802..2803 "]"1806 R_PAREN@2803..2804 ")"1807 COMMA@2804..2805 ","1808 WHITESPACE@2805..2809 "\n\n "1809 MEMBER_FIELD_METHOD@2809..34951810 FIELD_NAME_FIXED@2809..28201811 NAME@2809..28201812 IDENT@2809..2820 "manifestIni"1813 PARAMS_DESC@2820..28251814 L_PAREN@2820..2821 "("1815 PARAM@2821..28241816 DESTRUCT_FULL@2821..28241817 NAME@2821..28241818 IDENT@2821..2824 "ini"1819 R_PAREN@2824..2825 ")"1820 COLONCOLON@2825..2827 "::"1821 WHITESPACE@2827..2832 "\n "1822 STMT_LOCAL@2832..31361823 LOCAL_KW@2832..2837 "local"1824 WHITESPACE@2837..2838 " "1825 BIND_FUNCTION@2838..31351826 NAME@2838..28481827 IDENT@2838..2848 "body_lines"1828 PARAMS_DESC@2848..28541829 L_PAREN@2848..2849 "("1830 PARAM@2849..28531831 DESTRUCT_FULL@2849..28531832 NAME@2849..28531833 IDENT@2849..2853 "body"1834 R_PAREN@2853..2854 ")"1835 WHITESPACE@2854..2855 " "1836 ASSIGN@2855..2856 "="1837 WHITESPACE@2856..2863 "\n "1838 EXPR_APPLY@2863..31351839 EXPR_INDEX@2863..28711840 EXPR_VAR@2863..28661841 NAME@2863..28661842 IDENT@2863..2866 "std"1843 DOT@2866..2867 "."1844 NAME@2867..28711845 IDENT@2867..2871 "join"1846 ARGS_DESC@2871..31351847 L_PAREN@2871..2872 "("1848 ARG@2872..28741849 EXPR_ARRAY@2872..28741850 L_BRACK@2872..2873 "["1851 R_BRACK@2873..2874 "]"1852 COMMA@2874..2875 ","1853 WHITESPACE@2875..2876 " "1854 ARG@2876..31341855 EXPR_ARRAY_COMP@2876..31341856 L_BRACK@2876..2877 "["1857 WHITESPACE@2877..2886 "\n "1858 STMT_LOCAL@2886..29181859 LOCAL_KW@2886..2891 "local"1860 WHITESPACE@2891..2892 " "1861 BIND_DESTRUCT@2892..29171862 DESTRUCT_FULL@2892..29071863 NAME@2892..29071864 IDENT@2892..2907 "value_or_values"1865 WHITESPACE@2907..2908 " "1866 ASSIGN@2908..2909 "="1867 WHITESPACE@2909..2910 " "1868 EXPR_INDEX_EXPR@2910..29171869 LHS_EXPR@2910..29141870 EXPR_VAR@2910..29141871 NAME@2910..29141872 IDENT@2910..2914 "body"1873 L_BRACK@2914..2915 "["1874 EXPR_VAR@2915..29161875 NAME@2915..29161876 IDENT@2915..2916 "k"1877 R_BRACK@2916..2917 "]"1878 SEMI@2917..2918 ";"1879 WHITESPACE@2918..2927 "\n "1880 EXPR_IF_THEN_ELSE@2927..30851881 IF_KW@2927..2929 "if"1882 WHITESPACE@2929..2930 " "1883 EXPR_APPLY@2930..29581884 EXPR_INDEX@2930..29411885 EXPR_VAR@2930..29331886 NAME@2930..29331887 IDENT@2930..2933 "std"1888 DOT@2933..2934 "."1889 NAME@2934..29411890 IDENT@2934..2941 "isArray"1891 ARGS_DESC@2941..29581892 L_PAREN@2941..2942 "("1893 ARG@2942..29571894 EXPR_VAR@2942..29571895 NAME@2942..29571896 IDENT@2942..2957 "value_or_values"1897 R_PAREN@2957..2958 ")"1898 WHITESPACE@2958..2959 " "1899 THEN_KW@2959..2963 "then"1900 WHITESPACE@2963..2974 "\n "1901 TRUE_EXPR@2974..30271902 EXPR_ARRAY_COMP@2974..30271903 L_BRACK@2974..2975 "["1904 EXPR_BINARY@2975..29971905 LHS_EXPR@2975..29841906 EXPR_STRING@2975..29841907 STRING_SINGLE@2975..2984 "'%s = %s'"1908 WHITESPACE@2984..2985 " "1909 MODULO@2985..2986 "%"1910 WHITESPACE@2986..2987 " "1911 EXPR_ARRAY@2987..29971912 L_BRACK@2987..2988 "["1913 EXPR_VAR@2988..29891914 NAME@2988..29891915 IDENT@2988..2989 "k"1916 COMMA@2989..2990 ","1917 WHITESPACE@2990..2991 " "1918 EXPR_VAR@2991..29961919 NAME@2991..29961920 IDENT@2991..2996 "value"1921 R_BRACK@2996..2997 "]"1922 WHITESPACE@2997..2998 " "1923 FOR_SPEC@2998..30261924 FOR_KW@2998..3001 "for"1925 WHITESPACE@3001..3002 " "1926 NAME@3002..30071927 IDENT@3002..3007 "value"1928 WHITESPACE@3007..3008 " "1929 IN_KW@3008..3010 "in"1930 WHITESPACE@3010..3011 " "1931 EXPR_VAR@3011..30261932 NAME@3011..30261933 IDENT@3011..3026 "value_or_values"1934 R_BRACK@3026..3027 "]"1935 WHITESPACE@3027..3036 "\n "1936 ELSE_KW@3036..3040 "else"1937 WHITESPACE@3040..3051 "\n "1938 FALSE_EXPR@3051..30851939 EXPR_ARRAY@3051..30851940 L_BRACK@3051..3052 "["1941 EXPR_BINARY@3052..30841942 LHS_EXPR@3052..30611943 EXPR_STRING@3052..30611944 STRING_SINGLE@3052..3061 "'%s = %s'"1945 WHITESPACE@3061..3062 " "1946 MODULO@3062..3063 "%"1947 WHITESPACE@3063..3064 " "1948 EXPR_ARRAY@3064..30841949 L_BRACK@3064..3065 "["1950 EXPR_VAR@3065..30661951 NAME@3065..30661952 IDENT@3065..3066 "k"1953 COMMA@3066..3067 ","1954 WHITESPACE@3067..3068 " "1955 EXPR_VAR@3068..30831956 NAME@3068..30831957 IDENT@3068..3083 "value_or_values"1958 R_BRACK@3083..3084 "]"1959 R_BRACK@3084..3085 "]"1960 WHITESPACE@3085..3095 "\n\n "1961 FOR_SPEC@3095..31261962 FOR_KW@3095..3098 "for"1963 WHITESPACE@3098..3099 " "1964 NAME@3099..31001965 IDENT@3099..3100 "k"1966 WHITESPACE@3100..3101 " "1967 IN_KW@3101..3103 "in"1968 WHITESPACE@3103..3104 " "1969 EXPR_APPLY@3104..31261970 EXPR_INDEX@3104..31201971 EXPR_VAR@3104..31071972 NAME@3104..31071973 IDENT@3104..3107 "std"1974 DOT@3107..3108 "."1975 NAME@3108..31201976 IDENT@3108..3120 "objectFields"1977 ARGS_DESC@3120..31261978 L_PAREN@3120..3121 "("1979 ARG@3121..31251980 EXPR_VAR@3121..31251981 NAME@3121..31251982 IDENT@3121..3125 "body"1983 R_PAREN@3125..3126 ")"1984 WHITESPACE@3126..3133 "\n "1985 R_BRACK@3133..3134 "]"1986 R_PAREN@3134..3135 ")"1987 SEMI@3135..3136 ";"1988 WHITESPACE@3136..3142 "\n\n "1989 STMT_LOCAL@3142..34241990 LOCAL_KW@3142..3147 "local"1991 WHITESPACE@3147..3148 " "1992 BIND_FUNCTION@3148..32161993 NAME@3148..31611994 IDENT@3148..3161 "section_lines"1995 PARAMS_DESC@3161..31751996 L_PAREN@3161..3162 "("1997 PARAM@3162..31671998 DESTRUCT_FULL@3162..31671999 NAME@3162..31672000 IDENT@3162..3167 "sname"2001 COMMA@3167..3168 ","2002 WHITESPACE@3168..3169 " "2003 PARAM@3169..31742004 DESTRUCT_FULL@3169..31742005 NAME@3169..31742006 IDENT@3169..3174 "sbody"2007 R_PAREN@3174..3175 ")"2008 WHITESPACE@3175..3176 " "2009 ASSIGN@3176..3177 "="2010 WHITESPACE@3177..3178 " "2011 EXPR_BINARY@3178..32162012 LHS_EXPR@3178..31962013 EXPR_ARRAY@3178..31962014 L_BRACK@3178..3179 "["2015 EXPR_BINARY@3179..31952016 LHS_EXPR@3179..31852017 EXPR_STRING@3179..31852018 STRING_SINGLE@3179..3185 "'[%s]'"2019 WHITESPACE@3185..3186 " "2020 MODULO@3186..3187 "%"2021 WHITESPACE@3187..3188 " "2022 EXPR_ARRAY@3188..31952023 L_BRACK@3188..3189 "["2024 EXPR_VAR@3189..31942025 NAME@3189..31942026 IDENT@3189..3194 "sname"2027 R_BRACK@3194..3195 "]"2028 R_BRACK@3195..3196 "]"2029 WHITESPACE@3196..3197 " "2030 PLUS@3197..3198 "+"2031 WHITESPACE@3198..3199 " "2032 EXPR_APPLY@3199..32162033 EXPR_VAR@3199..32092034 NAME@3199..32092035 IDENT@3199..3209 "body_lines"2036 ARGS_DESC@3209..32162037 L_PAREN@3209..3210 "("2038 ARG@3210..32152039 EXPR_VAR@3210..32152040 NAME@3210..32152041 IDENT@3210..3215 "sbody"2042 R_PAREN@3215..3216 ")"2043 COMMA@3216..3217 ","2044 WHITESPACE@3217..3228 "\n "2045 BIND_DESTRUCT@3228..33032046 DESTRUCT_FULL@3228..32372047 NAME@3228..32372048 IDENT@3228..3237 "main_body"2049 WHITESPACE@3237..3238 " "2050 ASSIGN@3238..3239 "="2051 WHITESPACE@3239..3240 " "2052 EXPR_IF_THEN_ELSE@3240..33032053 IF_KW@3240..3242 "if"2054 WHITESPACE@3242..3243 " "2055 EXPR_APPLY@3243..32692056 EXPR_INDEX@3243..32562057 EXPR_VAR@3243..32462058 NAME@3243..32462059 IDENT@3243..3246 "std"2060 DOT@3246..3247 "."2061 NAME@3247..32562062 IDENT@3247..3256 "objectHas"2063 ARGS_DESC@3256..32692064 L_PAREN@3256..3257 "("2065 ARG@3257..32602066 EXPR_VAR@3257..32602067 NAME@3257..32602068 IDENT@3257..3260 "ini"2069 COMMA@3260..3261 ","2070 WHITESPACE@3261..3262 " "2071 ARG@3262..32682072 EXPR_STRING@3262..32682073 STRING_SINGLE@3262..3268 "'main'"2074 R_PAREN@3268..3269 ")"2075 WHITESPACE@3269..3270 " "2076 THEN_KW@3270..3274 "then"2077 WHITESPACE@3274..3275 " "2078 TRUE_EXPR@3275..32952079 EXPR_APPLY@3275..32952080 EXPR_VAR@3275..32852081 NAME@3275..32852082 IDENT@3275..3285 "body_lines"2083 ARGS_DESC@3285..32952084 L_PAREN@3285..3286 "("2085 ARG@3286..32942086 EXPR_INDEX@3286..32942087 EXPR_VAR@3286..32892088 NAME@3286..32892089 IDENT@3286..3289 "ini"2090 DOT@3289..3290 "."2091 NAME@3290..32942092 IDENT@3290..3294 "main"2093 R_PAREN@3294..3295 ")"2094 WHITESPACE@3295..3296 " "2095 ELSE_KW@3296..3300 "else"2096 WHITESPACE@3300..3301 " "2097 FALSE_EXPR@3301..33032098 EXPR_ARRAY@3301..33032099 L_BRACK@3301..3302 "["2100 R_BRACK@3302..3303 "]"2101 COMMA@3303..3304 ","2102 WHITESPACE@3304..3315 "\n "2103 BIND_DESTRUCT@3315..34232104 DESTRUCT_FULL@3315..33272105 NAME@3315..33272106 IDENT@3315..3327 "all_sections"2107 WHITESPACE@3327..3328 " "2108 ASSIGN@3328..3329 "="2109 WHITESPACE@3329..3330 " "2110 EXPR_ARRAY_COMP@3330..34232111 L_BRACK@3330..3331 "["2112 WHITESPACE@3331..3338 "\n "2113 EXPR_APPLY@3338..33712114 EXPR_VAR@3338..33512115 NAME@3338..33512116 IDENT@3338..3351 "section_lines"2117 ARGS_DESC@3351..33712118 L_PAREN@3351..3352 "("2119 ARG@3352..33532120 EXPR_VAR@3352..33532121 NAME@3352..33532122 IDENT@3352..3353 "k"2123 COMMA@3353..3354 ","2124 WHITESPACE@3354..3355 " "2125 ARG@3355..33702126 EXPR_INDEX_EXPR@3355..33702127 LHS_EXPR@3355..33672128 EXPR_INDEX@3355..33672129 EXPR_VAR@3355..33582130 NAME@3355..33582131 IDENT@3355..3358 "ini"2132 DOT@3358..3359 "."2133 NAME@3359..33672134 IDENT@3359..3367 "sections"2135 L_BRACK@3367..3368 "["2136 EXPR_VAR@3368..33692137 NAME@3368..33692138 IDENT@3368..3369 "k"2139 R_BRACK@3369..3370 "]"2140 R_PAREN@3370..3371 ")"2141 WHITESPACE@3371..3378 "\n "2142 FOR_SPEC@3378..34172143 FOR_KW@3378..3381 "for"2144 WHITESPACE@3381..3382 " "2145 NAME@3382..33832146 IDENT@3382..3383 "k"2147 WHITESPACE@3383..3384 " "2148 IN_KW@3384..3386 "in"2149 WHITESPACE@3386..3387 " "2150 EXPR_APPLY@3387..34172151 EXPR_INDEX@3387..34032152 EXPR_VAR@3387..33902153 NAME@3387..33902154 IDENT@3387..3390 "std"2155 DOT@3390..3391 "."2156 NAME@3391..34032157 IDENT@3391..3403 "objectFields"2158 ARGS_DESC@3403..34172159 L_PAREN@3403..3404 "("2160 ARG@3404..34162161 EXPR_INDEX@3404..34162162 EXPR_VAR@3404..34072163 NAME@3404..34072164 IDENT@3404..3407 "ini"2165 DOT@3407..3408 "."2166 NAME@3408..34162167 IDENT@3408..3416 "sections"2168 R_PAREN@3416..3417 ")"2169 WHITESPACE@3417..3422 "\n "2170 R_BRACK@3422..3423 "]"2171 SEMI@3423..3424 ";"2172 WHITESPACE@3424..3429 "\n "2173 EXPR_APPLY@3429..34952174 EXPR_INDEX@3429..34372175 EXPR_VAR@3429..34322176 NAME@3429..34322177 IDENT@3429..3432 "std"2178 DOT@3432..3433 "."2179 NAME@3433..34372180 IDENT@3433..3437 "join"2181 ARGS_DESC@3437..34952182 L_PAREN@3437..3438 "("2183 ARG@3438..34422184 EXPR_STRING@3438..34422185 STRING_SINGLE@3438..3442 "'\\n'"2186 COMMA@3442..3443 ","2187 WHITESPACE@3443..3444 " "2188 ARG@3444..34942189 EXPR_BINARY@3444..34942190 LHS_EXPR@3444..34872191 EXPR_BINARY@3444..34872192 LHS_EXPR@3444..34532193 EXPR_VAR@3444..34532194 NAME@3444..34532195 IDENT@3444..3453 "main_body"2196 WHITESPACE@3453..3454 " "2197 PLUS@3454..3455 "+"2198 WHITESPACE@3455..3456 " "2199 EXPR_APPLY@3456..34872200 EXPR_INDEX@3456..34732201 EXPR_VAR@3456..34592202 NAME@3456..34592203 IDENT@3456..3459 "std"2204 DOT@3459..3460 "."2205 NAME@3460..34732206 IDENT@3460..3473 "flattenArrays"2207 ARGS_DESC@3473..34872208 L_PAREN@3473..3474 "("2209 ARG@3474..34862210 EXPR_VAR@3474..34862211 NAME@3474..34862212 IDENT@3474..3486 "all_sections"2213 R_PAREN@3486..3487 ")"2214 WHITESPACE@3487..3488 " "2215 PLUS@3488..3489 "+"2216 WHITESPACE@3489..3490 " "2217 EXPR_ARRAY@3490..34942218 L_BRACK@3490..3491 "["2219 EXPR_STRING@3491..34932220 STRING_SINGLE@3491..3493 "''"2221 R_BRACK@3493..3494 "]"2222 R_PAREN@3494..3495 ")"2223 COMMA@3495..3496 ","2224 WHITESPACE@3496..3500 "\n\n "2225 MEMBER_FIELD_METHOD@3500..35532226 FIELD_NAME_FIXED@3500..35122227 NAME@3500..35122228 IDENT@3500..3512 "manifestToml"2229 PARAMS_DESC@3512..35192230 L_PAREN@3512..3513 "("2231 PARAM@3513..35182232 DESTRUCT_FULL@3513..35182233 NAME@3513..35182234 IDENT@3513..3518 "value"2235 R_PAREN@3518..3519 ")"2236 COLONCOLON@3519..3521 "::"2237 WHITESPACE@3521..3522 " "2238 EXPR_APPLY@3522..35532239 EXPR_INDEX@3522..35402240 EXPR_VAR@3522..35252241 NAME@3522..35252242 IDENT@3522..3525 "std"2243 DOT@3525..3526 "."2244 NAME@3526..35402245 IDENT@3526..3540 "manifestTomlEx"2246 ARGS_DESC@3540..35532247 L_PAREN@3540..3541 "("2248 ARG@3541..35462249 EXPR_VAR@3541..35462250 NAME@3541..35462251 IDENT@3541..3546 "value"2252 COMMA@3546..3547 ","2253 WHITESPACE@3547..3548 " "2254 ARG@3548..35522255 EXPR_STRING@3548..35522256 STRING_SINGLE@3548..3552 "' '"2257 R_PAREN@3552..3553 ")"2258 COMMA@3553..3554 ","2259 WHITESPACE@3554..3558 "\n\n "2260 MEMBER_FIELD_METHOD@3558..36132261 FIELD_NAME_FIXED@3558..35762262 NAME@3558..35762263 IDENT@3558..3576 "escapeStringPython"2264 PARAMS_DESC@3576..35812265 L_PAREN@3576..3577 "("2266 PARAM@3577..35802267 DESTRUCT_FULL@3577..35802268 NAME@3577..35802269 IDENT@3577..3580 "str"2270 R_PAREN@3580..3581 ")"2271 COLONCOLON@3581..3583 "::"2272 WHITESPACE@3583..3588 "\n "2273 EXPR_APPLY@3588..36132274 EXPR_INDEX@3588..36082275 EXPR_VAR@3588..35912276 NAME@3588..35912277 IDENT@3588..3591 "std"2278 DOT@3591..3592 "."2279 NAME@3592..36082280 IDENT@3592..3608 "escapeStringJson"2281 ARGS_DESC@3608..36132282 L_PAREN@3608..3609 "("2283 ARG@3609..36122284 EXPR_VAR@3609..36122285 NAME@3609..36122286 IDENT@3609..3612 "str"2287 R_PAREN@3612..3613 ")"2288 COMMA@3613..3614 ","2289 WHITESPACE@3614..3618 "\n\n "2290 MEMBER_FIELD_METHOD@3618..38352291 FIELD_NAME_FIXED@3618..36342292 NAME@3618..36342293 IDENT@3618..3634 "escapeStringBash"2294 PARAMS_DESC@3634..36402295 L_PAREN@3634..3635 "("2296 PARAM@3635..36392297 DESTRUCT_FULL@3635..36392298 NAME@3635..36392299 IDENT@3635..3639 "str_"2300 R_PAREN@3639..3640 ")"2301 COLONCOLON@3640..3642 "::"2302 WHITESPACE@3642..3647 "\n "2303 STMT_LOCAL@3647..36782304 LOCAL_KW@3647..3652 "local"2305 WHITESPACE@3652..3653 " "2306 BIND_DESTRUCT@3653..36772307 DESTRUCT_FULL@3653..36562308 NAME@3653..36562309 IDENT@3653..3656 "str"2310 WHITESPACE@3656..3657 " "2311 ASSIGN@3657..3658 "="2312 WHITESPACE@3658..3659 " "2313 EXPR_APPLY@3659..36772314 EXPR_INDEX@3659..36712315 EXPR_VAR@3659..36622316 NAME@3659..36622317 IDENT@3659..3662 "std"2318 DOT@3662..3663 "."2319 NAME@3663..36712320 IDENT@3663..3671 "toString"2321 ARGS_DESC@3671..36772322 L_PAREN@3671..3672 "("2323 ARG@3672..36762324 EXPR_VAR@3672..36762325 NAME@3672..36762326 IDENT@3672..3676 "str_"2327 R_PAREN@3676..3677 ")"2328 SEMI@3677..3678 ";"2329 WHITESPACE@3678..3683 "\n "2330 STMT_LOCAL@3683..37652331 LOCAL_KW@3683..3688 "local"2332 WHITESPACE@3688..3689 " "2333 BIND_FUNCTION@3689..37642334 NAME@3689..36942335 IDENT@3689..3694 "trans"2336 PARAMS_DESC@3694..36982337 L_PAREN@3694..3695 "("2338 PARAM@3695..36972339 DESTRUCT_FULL@3695..36972340 NAME@3695..36972341 IDENT@3695..3697 "ch"2342 R_PAREN@3697..3698 ")"2343 WHITESPACE@3698..3699 " "2344 ASSIGN@3699..3700 "="2345 WHITESPACE@3700..3707 "\n "2346 EXPR_IF_THEN_ELSE@3707..37642347 IF_KW@3707..3709 "if"2348 WHITESPACE@3709..3710 " "2349 EXPR_BINARY@3710..37192350 LHS_EXPR@3710..37122351 EXPR_VAR@3710..37122352 NAME@3710..37122353 IDENT@3710..3712 "ch"2354 WHITESPACE@3712..3713 " "2355 EQ@3713..3715 "=="2356 WHITESPACE@3715..3716 " "2357 EXPR_STRING@3716..37192358 STRING_DOUBLE@3716..3719 "\"'\""2359 WHITESPACE@3719..3720 " "2360 THEN_KW@3720..3724 "then"2361 WHITESPACE@3724..3733 "\n "2362 TRUE_EXPR@3733..37422363 EXPR_STRING@3733..37422364 STRING_DOUBLE@3733..3742 "\"'\\\"'\\\"'\""2365 WHITESPACE@3742..3749 "\n "2366 ELSE_KW@3749..3753 "else"2367 WHITESPACE@3753..3762 "\n "2368 FALSE_EXPR@3762..37642369 EXPR_VAR@3762..37642370 NAME@3762..37642371 IDENT@3762..3764 "ch"2372 SEMI@3764..3765 ";"2373 WHITESPACE@3765..3770 "\n "2374 EXPR_BINARY@3770..38352375 LHS_EXPR@3770..37762376 EXPR_STRING@3770..37762377 STRING_DOUBLE@3770..3776 "\"'%s'\""2378 WHITESPACE@3776..3777 " "2379 MODULO@3777..3778 "%"2380 WHITESPACE@3778..3779 " "2381 EXPR_APPLY@3779..38352382 EXPR_INDEX@3779..37872383 EXPR_VAR@3779..37822384 NAME@3779..37822385 IDENT@3779..3782 "std"2386 DOT@3782..3783 "."2387 NAME@3783..37872388 IDENT@3783..3787 "join"2389 ARGS_DESC@3787..38352390 L_PAREN@3787..3788 "("2391 ARG@3788..37902392 EXPR_STRING@3788..37902393 STRING_SINGLE@3788..3790 "''"2394 COMMA@3790..3791 ","2395 WHITESPACE@3791..3792 " "2396 ARG@3792..38342397 EXPR_ARRAY_COMP@3792..38342398 L_BRACK@3792..3793 "["2399 EXPR_APPLY@3793..38022400 EXPR_VAR@3793..37982401 NAME@3793..37982402 IDENT@3793..3798 "trans"2403 ARGS_DESC@3798..38022404 L_PAREN@3798..3799 "("2405 ARG@3799..38012406 EXPR_VAR@3799..38012407 NAME@3799..38012408 IDENT@3799..3801 "ch"2409 R_PAREN@3801..3802 ")"2410 WHITESPACE@3802..3803 " "2411 FOR_SPEC@3803..38332412 FOR_KW@3803..3806 "for"2413 WHITESPACE@3806..3807 " "2414 NAME@3807..38092415 IDENT@3807..3809 "ch"2416 WHITESPACE@3809..3810 " "2417 IN_KW@3810..3812 "in"2418 WHITESPACE@3812..3813 " "2419 EXPR_APPLY@3813..38332420 EXPR_INDEX@3813..38282421 EXPR_VAR@3813..38162422 NAME@3813..38162423 IDENT@3813..3816 "std"2424 DOT@3816..3817 "."2425 NAME@3817..38282426 IDENT@3817..3828 "stringChars"2427 ARGS_DESC@3828..38332428 L_PAREN@3828..3829 "("2429 ARG@3829..38322430 EXPR_VAR@3829..38322431 NAME@3829..38322432 IDENT@3829..3832 "str"2433 R_PAREN@3832..3833 ")"2434 R_BRACK@3833..3834 "]"2435 R_PAREN@3834..3835 ")"2436 COMMA@3835..3836 ","2437 WHITESPACE@3836..3840 "\n\n "2438 MEMBER_FIELD_METHOD@3840..40542439 FIELD_NAME_FIXED@3840..38592440 NAME@3840..38592441 IDENT@3840..3859 "escapeStringDollars"2442 PARAMS_DESC@3859..38652443 L_PAREN@3859..3860 "("2444 PARAM@3860..38642445 DESTRUCT_FULL@3860..38642446 NAME@3860..38642447 IDENT@3860..3864 "str_"2448 R_PAREN@3864..3865 ")"2449 COLONCOLON@3865..3867 "::"2450 WHITESPACE@3867..3872 "\n "2451 STMT_LOCAL@3872..39032452 LOCAL_KW@3872..3877 "local"2453 WHITESPACE@3877..3878 " "2454 BIND_DESTRUCT@3878..39022455 DESTRUCT_FULL@3878..38812456 NAME@3878..38812457 IDENT@3878..3881 "str"2458 WHITESPACE@3881..3882 " "2459 ASSIGN@3882..3883 "="2460 WHITESPACE@3883..3884 " "2461 EXPR_APPLY@3884..39022462 EXPR_INDEX@3884..38962463 EXPR_VAR@3884..38872464 NAME@3884..38872465 IDENT@3884..3887 "std"2466 DOT@3887..3888 "."2467 NAME@3888..38962468 IDENT@3888..3896 "toString"2469 ARGS_DESC@3896..39022470 L_PAREN@3896..3897 "("2471 ARG@3897..39012472 EXPR_VAR@3897..39012473 NAME@3897..39012474 IDENT@3897..3901 "str_"2475 R_PAREN@3901..3902 ")"2476 SEMI@3902..3903 ";"2477 WHITESPACE@3903..3908 "\n "2478 STMT_LOCAL@3908..39852479 LOCAL_KW@3908..3913 "local"2480 WHITESPACE@3913..3914 " "2481 BIND_FUNCTION@3914..39842482 NAME@3914..39192483 IDENT@3914..3919 "trans"2484 PARAMS_DESC@3919..39232485 L_PAREN@3919..3920 "("2486 PARAM@3920..39222487 DESTRUCT_FULL@3920..39222488 NAME@3920..39222489 IDENT@3920..3922 "ch"2490 R_PAREN@3922..3923 ")"2491 WHITESPACE@3923..3924 " "2492 ASSIGN@3924..3925 "="2493 WHITESPACE@3925..3932 "\n "2494 EXPR_IF_THEN_ELSE@3932..39842495 IF_KW@3932..3934 "if"2496 WHITESPACE@3934..3935 " "2497 EXPR_BINARY@3935..39442498 LHS_EXPR@3935..39372499 EXPR_VAR@3935..39372500 NAME@3935..39372501 IDENT@3935..3937 "ch"2502 WHITESPACE@3937..3938 " "2503 EQ@3938..3940 "=="2504 WHITESPACE@3940..3941 " "2505 EXPR_STRING@3941..39442506 STRING_SINGLE@3941..3944 "'$'"2507 WHITESPACE@3944..3945 " "2508 THEN_KW@3945..3949 "then"2509 WHITESPACE@3949..3958 "\n "2510 TRUE_EXPR@3958..39622511 EXPR_STRING@3958..39622512 STRING_SINGLE@3958..3962 "'$$'"2513 WHITESPACE@3962..3969 "\n "2514 ELSE_KW@3969..3973 "else"2515 WHITESPACE@3973..3982 "\n "2516 FALSE_EXPR@3982..39842517 EXPR_VAR@3982..39842518 NAME@3982..39842519 IDENT@3982..3984 "ch"2520 SEMI@3984..3985 ";"2521 WHITESPACE@3985..3990 "\n "2522 EXPR_APPLY@3990..40542523 EXPR_INDEX@3990..39992524 EXPR_VAR@3990..39932525 NAME@3990..39932526 IDENT@3990..3993 "std"2527 DOT@3993..3994 "."2528 NAME@3994..39992529 IDENT@3994..3999 "foldl"2530 ARGS_DESC@3999..40542531 L_PAREN@3999..4000 "("2532 ARG@4000..40272533 EXPR_FUNCTION@4000..40272534 FUNCTION_KW@4000..4008 "function"2535 PARAMS_DESC@4008..40142536 L_PAREN@4008..4009 "("2537 PARAM@4009..40102538 DESTRUCT_FULL@4009..40102539 NAME@4009..40102540 IDENT@4009..4010 "a"2541 COMMA@4010..4011 ","2542 WHITESPACE@4011..4012 " "2543 PARAM@4012..40132544 DESTRUCT_FULL@4012..40132545 NAME@4012..40132546 IDENT@4012..4013 "b"2547 R_PAREN@4013..4014 ")"2548 WHITESPACE@4014..4015 " "2549 EXPR_BINARY@4015..40272550 LHS_EXPR@4015..40162551 EXPR_VAR@4015..40162552 NAME@4015..40162553 IDENT@4015..4016 "a"2554 WHITESPACE@4016..4017 " "2555 PLUS@4017..4018 "+"2556 WHITESPACE@4018..4019 " "2557 EXPR_APPLY@4019..40272558 EXPR_VAR@4019..40242559 NAME@4019..40242560 IDENT@4019..4024 "trans"2561 ARGS_DESC@4024..40272562 L_PAREN@4024..4025 "("2563 ARG@4025..40262564 EXPR_VAR@4025..40262565 NAME@4025..40262566 IDENT@4025..4026 "b"2567 R_PAREN@4026..4027 ")"2568 COMMA@4027..4028 ","2569 WHITESPACE@4028..4029 " "2570 ARG@4029..40492571 EXPR_APPLY@4029..40492572 EXPR_INDEX@4029..40442573 EXPR_VAR@4029..40322574 NAME@4029..40322575 IDENT@4029..4032 "std"2576 DOT@4032..4033 "."2577 NAME@4033..40442578 IDENT@4033..4044 "stringChars"2579 ARGS_DESC@4044..40492580 L_PAREN@4044..4045 "("2581 ARG@4045..40482582 EXPR_VAR@4045..40482583 NAME@4045..40482584 IDENT@4045..4048 "str"2585 R_PAREN@4048..4049 ")"2586 COMMA@4049..4050 ","2587 WHITESPACE@4050..4051 " "2588 ARG@4051..40532589 EXPR_STRING@4051..40532590 STRING_SINGLE@4051..4053 "''"2591 R_PAREN@4053..4054 ")"2592 COMMA@4054..4055 ","2593 WHITESPACE@4055..4059 "\n\n "2594 MEMBER_BIND_STMT@4059..41742595 OBJ_LOCAL@4059..41742596 LOCAL_KW@4059..4064 "local"2597 WHITESPACE@4064..4065 " "2598 BIND_DESTRUCT@4065..41742599 DESTRUCT_FULL@4065..40762600 NAME@4065..40762601 IDENT@4065..4076 "xml_escapes"2602 WHITESPACE@4076..4077 " "2603 ASSIGN@4077..4078 "="2604 WHITESPACE@4078..4079 " "2605 EXPR_OBJECT@4079..41742606 OBJ_BODY_MEMBER_LIST@4079..41742607 L_BRACE@4079..4080 "{"2608 WHITESPACE@4080..4085 "\n "2609 MEMBER_FIELD_NORMAL@4085..40962610 FIELD_NAME_FIXED@4085..40882611 STRING_SINGLE@4085..4088 "'<'"2612 COLON@4088..4089 ":"2613 WHITESPACE@4089..4090 " "2614 EXPR_STRING@4090..40962615 STRING_SINGLE@4090..4096 "'<'"2616 COMMA@4096..4097 ","2617 WHITESPACE@4097..4102 "\n "2618 MEMBER_FIELD_NORMAL@4102..41132619 FIELD_NAME_FIXED@4102..41052620 STRING_SINGLE@4102..4105 "'>'"2621 COLON@4105..4106 ":"2622 WHITESPACE@4106..4107 " "2623 EXPR_STRING@4107..41132624 STRING_SINGLE@4107..4113 "'>'"2625 COMMA@4113..4114 ","2626 WHITESPACE@4114..4119 "\n "2627 MEMBER_FIELD_NORMAL@4119..41312628 FIELD_NAME_FIXED@4119..41222629 STRING_SINGLE@4119..4122 "'&'"2630 COLON@4122..4123 ":"2631 WHITESPACE@4123..4124 " "2632 EXPR_STRING@4124..41312633 STRING_SINGLE@4124..4131 "'&'"2634 COMMA@4131..4132 ","2635 WHITESPACE@4132..4137 "\n "2636 MEMBER_FIELD_NORMAL@4137..41502637 FIELD_NAME_FIXED@4137..41402638 STRING_SINGLE@4137..4140 "'\"'"2639 COLON@4140..4141 ":"2640 WHITESPACE@4141..4142 " "2641 EXPR_STRING@4142..41502642 STRING_SINGLE@4142..4150 "'"'"2643 COMMA@4150..4151 ","2644 WHITESPACE@4151..4156 "\n "2645 MEMBER_FIELD_NORMAL@4156..41692646 FIELD_NAME_FIXED@4156..41592647 STRING_DOUBLE@4156..4159 "\"'\""2648 COLON@4159..4160 ":"2649 WHITESPACE@4160..4161 " "2650 EXPR_STRING@4161..41692651 STRING_SINGLE@4161..4169 "'''"2652 COMMA@4169..4170 ","2653 WHITESPACE@4170..4173 "\n "2654 R_BRACE@4173..4174 "}"2655 COMMA@4174..4175 ","2656 WHITESPACE@4175..4179 "\n\n "2657 MEMBER_FIELD_METHOD@4179..43182658 FIELD_NAME_FIXED@4179..41942659 NAME@4179..41942660 IDENT@4179..4194 "escapeStringXML"2661 PARAMS_DESC@4194..42002662 L_PAREN@4194..4195 "("2663 PARAM@4195..41992664 DESTRUCT_FULL@4195..41992665 NAME@4195..41992666 IDENT@4195..4199 "str_"2667 R_PAREN@4199..4200 ")"2668 COLONCOLON@4200..4202 "::"2669 WHITESPACE@4202..4207 "\n "2670 STMT_LOCAL@4207..42382671 LOCAL_KW@4207..4212 "local"2672 WHITESPACE@4212..4213 " "2673 BIND_DESTRUCT@4213..42372674 DESTRUCT_FULL@4213..42162675 NAME@4213..42162676 IDENT@4213..4216 "str"2677 WHITESPACE@4216..4217 " "2678 ASSIGN@4217..4218 "="2679 WHITESPACE@4218..4219 " "2680 EXPR_APPLY@4219..42372681 EXPR_INDEX@4219..42312682 EXPR_VAR@4219..42222683 NAME@4219..42222684 IDENT@4219..4222 "std"2685 DOT@4222..4223 "."2686 NAME@4223..42312687 IDENT@4223..4231 "toString"2688 ARGS_DESC@4231..42372689 L_PAREN@4231..4232 "("2690 ARG@4232..42362691 EXPR_VAR@4232..42362692 NAME@4232..42362693 IDENT@4232..4236 "str_"2694 R_PAREN@4236..4237 ")"2695 SEMI@4237..4238 ";"2696 WHITESPACE@4238..4243 "\n "2697 EXPR_APPLY@4243..43182698 EXPR_INDEX@4243..42512699 EXPR_VAR@4243..42462700 NAME@4243..42462701 IDENT@4243..4246 "std"2702 DOT@4246..4247 "."2703 NAME@4247..42512704 IDENT@4247..4251 "join"2705 ARGS_DESC@4251..43182706 L_PAREN@4251..4252 "("2707 ARG@4252..42542708 EXPR_STRING@4252..42542709 STRING_SINGLE@4252..4254 "''"2710 COMMA@4254..4255 ","2711 WHITESPACE@4255..4256 " "2712 ARG@4256..43172713 EXPR_ARRAY_COMP@4256..43172714 L_BRACK@4256..4257 "["2715 EXPR_APPLY@4257..42852716 EXPR_INDEX@4257..42642717 EXPR_VAR@4257..42602718 NAME@4257..42602719 IDENT@4257..4260 "std"2720 DOT@4260..4261 "."2721 NAME@4261..42642722 IDENT@4261..4264 "get"2723 ARGS_DESC@4264..42852724 L_PAREN@4264..4265 "("2725 ARG@4265..42762726 EXPR_VAR@4265..42762727 NAME@4265..42762728 IDENT@4265..4276 "xml_escapes"2729 COMMA@4276..4277 ","2730 WHITESPACE@4277..4278 " "2731 ARG@4278..42802732 EXPR_VAR@4278..42802733 NAME@4278..42802734 IDENT@4278..4280 "ch"2735 COMMA@4280..4281 ","2736 WHITESPACE@4281..4282 " "2737 ARG@4282..42842738 EXPR_VAR@4282..42842739 NAME@4282..42842740 IDENT@4282..4284 "ch"2741 R_PAREN@4284..4285 ")"2742 WHITESPACE@4285..4286 " "2743 FOR_SPEC@4286..43162744 FOR_KW@4286..4289 "for"2745 WHITESPACE@4289..4290 " "2746 NAME@4290..42922747 IDENT@4290..4292 "ch"2748 WHITESPACE@4292..4293 " "2749 IN_KW@4293..4295 "in"2750 WHITESPACE@4295..4296 " "2751 EXPR_APPLY@4296..43162752 EXPR_INDEX@4296..43112753 EXPR_VAR@4296..42992754 NAME@4296..42992755 IDENT@4296..4299 "std"2756 DOT@4299..4300 "."2757 NAME@4300..43112758 IDENT@4300..4311 "stringChars"2759 ARGS_DESC@4311..43162760 L_PAREN@4311..4312 "("2761 ARG@4312..43152762 EXPR_VAR@4312..43152763 NAME@4312..43152764 IDENT@4312..4315 "str"2765 R_PAREN@4315..4316 ")"2766 R_BRACK@4316..4317 "]"2767 R_PAREN@4317..4318 ")"2768 COMMA@4318..4319 ","2769 WHITESPACE@4319..4323 "\n\n "2770 MEMBER_FIELD_METHOD@4323..43892771 FIELD_NAME_FIXED@4323..43352772 NAME@4323..43352773 IDENT@4323..4335 "manifestJson"2774 PARAMS_DESC@4335..43422775 L_PAREN@4335..4336 "("2776 PARAM@4336..43412777 DESTRUCT_FULL@4336..43412778 NAME@4336..43412779 IDENT@4336..4341 "value"2780 R_PAREN@4341..4342 ")"2781 COLONCOLON@4342..4344 "::"2782 WHITESPACE@4344..4345 " "2783 EXPR_APPLY@4345..43892784 EXPR_INDEX@4345..43632785 EXPR_VAR@4345..43482786 NAME@4345..43482787 IDENT@4345..4348 "std"2788 DOT@4348..4349 "."2789 NAME@4349..43632790 IDENT@4349..4363 "manifestJsonEx"2791 ARGS_DESC@4363..43892792 L_PAREN@4363..4364 "("2793 ARG@4364..43692794 EXPR_VAR@4364..43692795 NAME@4364..43692796 IDENT@4364..4369 "value"2797 COMMA@4369..4370 ","2798 WHITESPACE@4370..4371 " "2799 ARG@4371..43772800 EXPR_STRING@4371..43772801 STRING_SINGLE@4371..4377 "' '"2802 R_PAREN@4377..4378 ")"2803 WHITESPACE@4378..4379 " "2804 TAILSTRICT_KW@4379..4389 "tailstrict"2805 COMMA@4389..4390 ","2806 WHITESPACE@4390..4394 "\n\n "2807 MEMBER_FIELD_METHOD@4394..44622808 FIELD_NAME_FIXED@4394..44142809 NAME@4394..44142810 IDENT@4394..4414 "manifestJsonMinified"2811 PARAMS_DESC@4414..44212812 L_PAREN@4414..4415 "("2813 PARAM@4415..44202814 DESTRUCT_FULL@4415..44202815 NAME@4415..44202816 IDENT@4415..4420 "value"2817 R_PAREN@4420..4421 ")"2818 COLONCOLON@4421..4423 "::"2819 WHITESPACE@4423..4424 " "2820 EXPR_APPLY@4424..44622821 EXPR_INDEX@4424..44422822 EXPR_VAR@4424..44272823 NAME@4424..44272824 IDENT@4424..4427 "std"2825 DOT@4427..4428 "."2826 NAME@4428..44422827 IDENT@4428..4442 "manifestJsonEx"2828 ARGS_DESC@4442..44622829 L_PAREN@4442..4443 "("2830 ARG@4443..44482831 EXPR_VAR@4443..44482832 NAME@4443..44482833 IDENT@4443..4448 "value"2834 COMMA@4448..4449 ","2835 WHITESPACE@4449..4450 " "2836 ARG@4450..44522837 EXPR_STRING@4450..44522838 STRING_SINGLE@4450..4452 "''"2839 COMMA@4452..4453 ","2840 WHITESPACE@4453..4454 " "2841 ARG@4454..44562842 EXPR_STRING@4454..44562843 STRING_SINGLE@4454..4456 "''"2844 COMMA@4456..4457 ","2845 WHITESPACE@4457..4458 " "2846 ARG@4458..44612847 EXPR_STRING@4458..44612848 STRING_SINGLE@4458..4461 "':'"2849 R_PAREN@4461..4462 ")"2850 COMMA@4462..4463 ","2851 WHITESPACE@4463..4467 "\n\n "2852 MEMBER_FIELD_METHOD@4467..48522853 FIELD_NAME_FIXED@4467..44852854 NAME@4467..44852855 IDENT@4467..4485 "manifestYamlStream"2856 PARAMS_DESC@4485..45602857 L_PAREN@4485..4486 "("2858 PARAM@4486..44912859 DESTRUCT_FULL@4486..44912860 NAME@4486..44912861 IDENT@4486..4491 "value"2862 COMMA@4491..4492 ","2863 WHITESPACE@4492..4493 " "2864 PARAM@4493..45212865 DESTRUCT_FULL@4493..45152866 NAME@4493..45152867 IDENT@4493..4515 "indent_array_in_object"2868 ASSIGN@4515..4516 "="2869 EXPR_LITERAL@4516..45212870 FALSE_KW@4516..4521 "false"2871 COMMA@4521..4522 ","2872 WHITESPACE@4522..4523 " "2873 PARAM@4523..45422874 DESTRUCT_FULL@4523..45372875 NAME@4523..45372876 IDENT@4523..4537 "c_document_end"2877 ASSIGN@4537..4538 "="2878 EXPR_LITERAL@4538..45422879 TRUE_KW@4538..4542 "true"2880 COMMA@4542..4543 ","2881 WHITESPACE@4543..4544 " "2882 PARAM@4544..45592883 DESTRUCT_FULL@4544..45542884 NAME@4544..45542885 IDENT@4544..4554 "quote_keys"2886 ASSIGN@4554..4555 "="2887 EXPR_LITERAL@4555..45592888 TRUE_KW@4555..4559 "true"2889 R_PAREN@4559..4560 ")"2890 COLONCOLON@4560..4562 "::"2891 WHITESPACE@4562..4567 "\n "2892 EXPR_IF_THEN_ELSE@4567..48522893 IF_KW@4567..4569 "if"2894 WHITESPACE@4569..4570 " "2895 EXPR_UNARY@4570..45892896 NOT@4570..4571 "!"2897 EXPR_APPLY@4571..45892898 EXPR_INDEX@4571..45822899 EXPR_VAR@4571..45742900 NAME@4571..45742901 IDENT@4571..4574 "std"2902 DOT@4574..4575 "."2903 NAME@4575..45822904 IDENT@4575..4582 "isArray"2905 ARGS_DESC@4582..45892906 L_PAREN@4582..4583 "("2907 ARG@4583..45882908 EXPR_VAR@4583..45882909 NAME@4583..45882910 IDENT@4583..4588 "value"2911 R_PAREN@4588..4589 ")"2912 WHITESPACE@4589..4590 " "2913 THEN_KW@4590..4594 "then"2914 WHITESPACE@4594..4601 "\n "2915 TRUE_EXPR@4601..46692916 EXPR_ERROR@4601..46692917 ERROR_KW@4601..4606 "error"2918 WHITESPACE@4606..4607 " "2919 EXPR_BINARY@4607..46692920 LHS_EXPR@4607..46512921 EXPR_STRING@4607..46512922 STRING_SINGLE@4607..4651 "'manifestYamlStream o ..."2923 WHITESPACE@4651..4652 " "2924 PLUS@4652..4653 "+"2925 WHITESPACE@4653..4654 " "2926 EXPR_APPLY@4654..46692927 EXPR_INDEX@4654..46622928 EXPR_VAR@4654..46572929 NAME@4654..46572930 IDENT@4654..4657 "std"2931 DOT@4657..4658 "."2932 NAME@4658..46622933 IDENT@4658..4662 "type"2934 ARGS_DESC@4662..46692935 L_PAREN@4662..4663 "("2936 ARG@4663..46682937 EXPR_VAR@4663..46682938 NAME@4663..46682939 IDENT@4663..4668 "value"2940 R_PAREN@4668..4669 ")"2941 WHITESPACE@4669..4674 "\n "2942 ELSE_KW@4674..4678 "else"2943 WHITESPACE@4678..4685 "\n "2944 FALSE_EXPR@4685..48522945 EXPR_BINARY@4685..48522946 LHS_EXPR@4685..48072947 EXPR_BINARY@4685..48072948 LHS_EXPR@4685..46922949 EXPR_STRING@4685..46922950 STRING_SINGLE@4685..4692 "'---\\n'"2951 WHITESPACE@4692..4693 " "2952 PLUS@4693..4694 "+"2953 WHITESPACE@4694..4695 " "2954 EXPR_APPLY@4695..48072955 EXPR_INDEX@4695..47032956 EXPR_VAR@4695..46982957 NAME@4695..46982958 IDENT@4695..4698 "std"2959 DOT@4698..4699 "."2960 NAME@4699..47032961 IDENT@4699..4703 "join"2962 ARGS_DESC@4703..48072963 L_PAREN@4703..4704 "("2964 WHITESPACE@4704..4713 "\n "2965 ARG@4713..47222966 EXPR_STRING@4713..47222967 STRING_SINGLE@4713..4722 "'\\n---\\n'"2968 COMMA@4722..4723 ","2969 WHITESPACE@4723..4724 " "2970 ARG@4724..47992971 EXPR_ARRAY_COMP@4724..47992972 L_BRACK@4724..4725 "["2973 EXPR_APPLY@4725..47832974 EXPR_INDEX@4725..47442975 EXPR_VAR@4725..47282976 NAME@4725..47282977 IDENT@4725..4728 "std"2978 DOT@4728..4729 "."2979 NAME@4729..47442980 IDENT@4729..4744 "manifestYamlDoc"2981 ARGS_DESC@4744..47832982 L_PAREN@4744..4745 "("2983 ARG@4745..47462984 EXPR_VAR@4745..47462985 NAME@4745..47462986 IDENT@4745..4746 "e"2987 COMMA@4746..4747 ","2988 WHITESPACE@4747..4748 " "2989 ARG@4748..47702990 EXPR_VAR@4748..47702991 NAME@4748..47702992 IDENT@4748..4770 "indent_array_in_object"2993 COMMA@4770..4771 ","2994 WHITESPACE@4771..4772 " "2995 ARG@4772..47822996 EXPR_VAR@4772..47822997 NAME@4772..47822998 IDENT@4772..4782 "quote_keys"2999 R_PAREN@4782..4783 ")"3000 WHITESPACE@4783..4784 " "3001 FOR_SPEC@4784..47983002 FOR_KW@4784..4787 "for"3003 WHITESPACE@4787..4788 " "3004 NAME@4788..47893005 IDENT@4788..4789 "e"3006 WHITESPACE@4789..4790 " "3007 IN_KW@4790..4792 "in"3008 WHITESPACE@4792..4793 " "3009 EXPR_VAR@4793..47983010 NAME@4793..47983011 IDENT@4793..4798 "value"3012 R_BRACK@4798..4799 "]"3013 WHITESPACE@4799..4806 "\n "3014 R_PAREN@4806..4807 ")"3015 WHITESPACE@4807..4808 " "3016 PLUS@4808..4809 "+"3017 WHITESPACE@4809..4810 " "3018 EXPR_IF_THEN_ELSE@4810..48523019 IF_KW@4810..4812 "if"3020 WHITESPACE@4812..4813 " "3021 EXPR_VAR@4813..48273022 NAME@4813..48273023 IDENT@4813..4827 "c_document_end"3024 WHITESPACE@4827..4828 " "3025 THEN_KW@4828..4832 "then"3026 WHITESPACE@4832..4833 " "3027 TRUE_EXPR@4833..48423028 EXPR_STRING@4833..48423029 STRING_SINGLE@4833..4842 "'\\n...\\n'"3030 WHITESPACE@4842..4843 " "3031 ELSE_KW@4843..4847 "else"3032 WHITESPACE@4847..4848 " "3033 FALSE_EXPR@4848..48523034 EXPR_STRING@4848..48523035 STRING_SINGLE@4848..4852 "'\\n'"3036 COMMA@4852..4853 ","3037 WHITESPACE@4853..4857 "\n\n "3038 MEMBER_FIELD_METHOD@4857..55133039 FIELD_NAME_FIXED@4857..48713040 NAME@4857..48713041 IDENT@4857..4871 "manifestPython"3042 PARAMS_DESC@4871..48743043 L_PAREN@4871..4872 "("3044 PARAM@4872..48733045 DESTRUCT_FULL@4872..48733046 NAME@4872..48733047 IDENT@4872..4873 "v"3048 R_PAREN@4873..4874 ")"3049 COLONCOLON@4874..4876 "::"3050 WHITESPACE@4876..4881 "\n "3051 EXPR_IF_THEN_ELSE@4881..55133052 IF_KW@4881..4883 "if"3053 WHITESPACE@4883..4884 " "3054 EXPR_APPLY@4884..48993055 EXPR_INDEX@4884..48963056 EXPR_VAR@4884..48873057 NAME@4884..48873058 IDENT@4884..4887 "std"3059 DOT@4887..4888 "."3060 NAME@4888..48963061 IDENT@4888..4896 "isObject"3062 ARGS_DESC@4896..48993063 L_PAREN@4896..4897 "("3064 ARG@4897..48983065 EXPR_VAR@4897..48983066 NAME@4897..48983067 IDENT@4897..4898 "v"3068 R_PAREN@4898..4899 ")"3069 WHITESPACE@4899..4900 " "3070 THEN_KW@4900..4904 "then"3071 WHITESPACE@4904..4911 "\n "3072 STMT_LOCAL@4911..50463073 LOCAL_KW@4911..4916 "local"3074 WHITESPACE@4916..4917 " "3075 BIND_DESTRUCT@4917..50453076 DESTRUCT_FULL@4917..49233077 NAME@4917..49233078 IDENT@4917..4923 "fields"3079 WHITESPACE@4923..4924 " "3080 ASSIGN@4924..4925 "="3081 WHITESPACE@4925..4926 " "3082 EXPR_ARRAY_COMP@4926..50453083 L_BRACK@4926..4927 "["3084 WHITESPACE@4927..4936 "\n "3085 EXPR_BINARY@4936..50003086 LHS_EXPR@4936..49443087 EXPR_STRING@4936..49443088 STRING_SINGLE@4936..4944 "'%s: %s'"3089 WHITESPACE@4944..4945 " "3090 MODULO@4945..4946 "%"3091 WHITESPACE@4946..4947 " "3092 EXPR_ARRAY@4947..50003093 L_BRACK@4947..4948 "["3094 EXPR_APPLY@4948..49733095 EXPR_INDEX@4948..49703096 EXPR_VAR@4948..49513097 NAME@4948..49513098 IDENT@4948..4951 "std"3099 DOT@4951..4952 "."3100 NAME@4952..49703101 IDENT@4952..4970 "escapeStringPython"3102 ARGS_DESC@4970..49733103 L_PAREN@4970..4971 "("3104 ARG@4971..49723105 EXPR_VAR@4971..49723106 NAME@4971..49723107 IDENT@4971..4972 "k"3108 R_PAREN@4972..4973 ")"3109 COMMA@4973..4974 ","3110 WHITESPACE@4974..4975 " "3111 EXPR_APPLY@4975..49993112 EXPR_INDEX@4975..49933113 EXPR_VAR@4975..49783114 NAME@4975..49783115 IDENT@4975..4978 "std"3116 DOT@4978..4979 "."3117 NAME@4979..49933118 IDENT@4979..4993 "manifestPython"3119 ARGS_DESC@4993..49993120 L_PAREN@4993..4994 "("3121 ARG@4994..49983122 EXPR_INDEX_EXPR@4994..49983123 LHS_EXPR@4994..49953124 EXPR_VAR@4994..49953125 NAME@4994..49953126 IDENT@4994..4995 "v"3127 L_BRACK@4995..4996 "["3128 EXPR_VAR@4996..49973129 NAME@4996..49973130 IDENT@4996..4997 "k"3131 R_BRACK@4997..4998 "]"3132 R_PAREN@4998..4999 ")"3133 R_BRACK@4999..5000 "]"3134 WHITESPACE@5000..5009 "\n "3135 FOR_SPEC@5009..50373136 FOR_KW@5009..5012 "for"3137 WHITESPACE@5012..5013 " "3138 NAME@5013..50143139 IDENT@5013..5014 "k"3140 WHITESPACE@5014..5015 " "3141 IN_KW@5015..5017 "in"3142 WHITESPACE@5017..5018 " "3143 EXPR_APPLY@5018..50373144 EXPR_INDEX@5018..50343145 EXPR_VAR@5018..50213146 NAME@5018..50213147 IDENT@5018..5021 "std"3148 DOT@5021..5022 "."3149 NAME@5022..50343150 IDENT@5022..5034 "objectFields"3151 ARGS_DESC@5034..50373152 L_PAREN@5034..5035 "("3153 ARG@5035..50363154 EXPR_VAR@5035..50363155 NAME@5035..50363156 IDENT@5035..5036 "v"3157 R_PAREN@5036..5037 ")"3158 WHITESPACE@5037..5044 "\n "3159 R_BRACK@5044..5045 "]"3160 SEMI@5045..5046 ";"3161 WHITESPACE@5046..5053 "\n "3162 TRUE_EXPR@5053..50863163 EXPR_BINARY@5053..50863164 LHS_EXPR@5053..50593165 EXPR_STRING@5053..50593166 STRING_SINGLE@5053..5059 "'{%s}'"3167 WHITESPACE@5059..5060 " "3168 MODULO@5060..5061 "%"3169 WHITESPACE@5061..5062 " "3170 EXPR_ARRAY@5062..50863171 L_BRACK@5062..5063 "["3172 EXPR_APPLY@5063..50853173 EXPR_INDEX@5063..50713174 EXPR_VAR@5063..50663175 NAME@5063..50663176 IDENT@5063..5066 "std"3177 DOT@5066..5067 "."3178 NAME@5067..50713179 IDENT@5067..5071 "join"3180 ARGS_DESC@5071..50853181 L_PAREN@5071..5072 "("3182 ARG@5072..50763183 EXPR_STRING@5072..50763184 STRING_SINGLE@5072..5076 "', '"3185 COMMA@5076..5077 ","3186 WHITESPACE@5077..5078 " "3187 ARG@5078..50843188 EXPR_VAR@5078..50843189 NAME@5078..50843190 IDENT@5078..5084 "fields"3191 R_PAREN@5084..5085 ")"3192 R_BRACK@5085..5086 "]"3193 WHITESPACE@5086..5091 "\n "3194 ELSE_KW@5091..5095 "else"3195 WHITESPACE@5095..5096 " "3196 FALSE_EXPR@5096..55133197 EXPR_IF_THEN_ELSE@5096..55133198 IF_KW@5096..5098 "if"3199 WHITESPACE@5098..5099 " "3200 EXPR_APPLY@5099..51133201 EXPR_INDEX@5099..51103202 EXPR_VAR@5099..51023203 NAME@5099..51023204 IDENT@5099..5102 "std"3205 DOT@5102..5103 "."3206 NAME@5103..51103207 IDENT@5103..5110 "isArray"3208 ARGS_DESC@5110..51133209 L_PAREN@5110..5111 "("3210 ARG@5111..51123211 EXPR_VAR@5111..51123212 NAME@5111..51123213 IDENT@5111..5112 "v"3214 R_PAREN@5112..5113 ")"3215 WHITESPACE@5113..5114 " "3216 THEN_KW@5114..5118 "then"3217 WHITESPACE@5118..5125 "\n "3218 TRUE_EXPR@5125..51883219 EXPR_BINARY@5125..51883220 LHS_EXPR@5125..51313221 EXPR_STRING@5125..51313222 STRING_SINGLE@5125..5131 "'[%s]'"3223 WHITESPACE@5131..5132 " "3224 MODULO@5132..5133 "%"3225 WHITESPACE@5133..5134 " "3226 EXPR_ARRAY@5134..51883227 L_BRACK@5134..5135 "["3228 EXPR_APPLY@5135..51873229 EXPR_INDEX@5135..51433230 EXPR_VAR@5135..51383231 NAME@5135..51383232 IDENT@5135..5138 "std"3233 DOT@5138..5139 "."3234 NAME@5139..51433235 IDENT@5139..5143 "join"3236 ARGS_DESC@5143..51873237 L_PAREN@5143..5144 "("3238 ARG@5144..51483239 EXPR_STRING@5144..51483240 STRING_SINGLE@5144..5148 "', '"3241 COMMA@5148..5149 ","3242 WHITESPACE@5149..5150 " "3243 ARG@5150..51863244 EXPR_ARRAY_COMP@5150..51863245 L_BRACK@5150..5151 "["3246 EXPR_APPLY@5151..51733247 EXPR_INDEX@5151..51693248 EXPR_VAR@5151..51543249 NAME@5151..51543250 IDENT@5151..5154 "std"3251 DOT@5154..5155 "."3252 NAME@5155..51693253 IDENT@5155..5169 "manifestPython"3254 ARGS_DESC@5169..51733255 L_PAREN@5169..5170 "("3256 ARG@5170..51723257 EXPR_VAR@5170..51723258 NAME@5170..51723259 IDENT@5170..5172 "v2"3260 R_PAREN@5172..5173 ")"3261 WHITESPACE@5173..5174 " "3262 FOR_SPEC@5174..51853263 FOR_KW@5174..5177 "for"3264 WHITESPACE@5177..5178 " "3265 NAME@5178..51803266 IDENT@5178..5180 "v2"3267 WHITESPACE@5180..5181 " "3268 IN_KW@5181..5183 "in"3269 WHITESPACE@5183..5184 " "3270 EXPR_VAR@5184..51853271 NAME@5184..51853272 IDENT@5184..5185 "v"3273 R_BRACK@5185..5186 "]"3274 R_PAREN@5186..5187 ")"3275 R_BRACK@5187..5188 "]"3276 WHITESPACE@5188..5193 "\n "3277 ELSE_KW@5193..5197 "else"3278 WHITESPACE@5197..5198 " "3279 FALSE_EXPR@5198..55133280 EXPR_IF_THEN_ELSE@5198..55133281 IF_KW@5198..5200 "if"3282 WHITESPACE@5200..5201 " "3283 EXPR_APPLY@5201..52163284 EXPR_INDEX@5201..52133285 EXPR_VAR@5201..52043286 NAME@5201..52043287 IDENT@5201..5204 "std"3288 DOT@5204..5205 "."3289 NAME@5205..52133290 IDENT@5205..5213 "isString"3291 ARGS_DESC@5213..52163292 L_PAREN@5213..5214 "("3293 ARG@5214..52153294 EXPR_VAR@5214..52153295 NAME@5214..52153296 IDENT@5214..5215 "v"3297 R_PAREN@5215..5216 ")"3298 WHITESPACE@5216..5217 " "3299 THEN_KW@5217..5221 "then"3300 WHITESPACE@5221..5228 "\n "3301 TRUE_EXPR@5228..52623302 EXPR_BINARY@5228..52623303 LHS_EXPR@5228..52323304 EXPR_STRING@5228..52323305 STRING_SINGLE@5228..5232 "'%s'"3306 WHITESPACE@5232..5233 " "3307 MODULO@5233..5234 "%"3308 WHITESPACE@5234..5235 " "3309 EXPR_ARRAY@5235..52623310 L_BRACK@5235..5236 "["3311 EXPR_APPLY@5236..52613312 EXPR_INDEX@5236..52583313 EXPR_VAR@5236..52393314 NAME@5236..52393315 IDENT@5236..5239 "std"3316 DOT@5239..5240 "."3317 NAME@5240..52583318 IDENT@5240..5258 "escapeStringPython"3319 ARGS_DESC@5258..52613320 L_PAREN@5258..5259 "("3321 ARG@5259..52603322 EXPR_VAR@5259..52603323 NAME@5259..52603324 IDENT@5259..5260 "v"3325 R_PAREN@5260..5261 ")"3326 R_BRACK@5261..5262 "]"3327 WHITESPACE@5262..5267 "\n "3328 ELSE_KW@5267..5271 "else"3329 WHITESPACE@5271..5272 " "3330 FALSE_EXPR@5272..55133331 EXPR_IF_THEN_ELSE@5272..55133332 IF_KW@5272..5274 "if"3333 WHITESPACE@5274..5275 " "3334 EXPR_APPLY@5275..52923335 EXPR_INDEX@5275..52893336 EXPR_VAR@5275..52783337 NAME@5275..52783338 IDENT@5275..5278 "std"3339 DOT@5278..5279 "."3340 NAME@5279..52893341 IDENT@5279..5289 "isFunction"3342 ARGS_DESC@5289..52923343 L_PAREN@5289..5290 "("3344 ARG@5290..52913345 EXPR_VAR@5290..52913346 NAME@5290..52913347 IDENT@5290..5291 "v"3348 R_PAREN@5291..5292 ")"3349 WHITESPACE@5292..5293 " "3350 THEN_KW@5293..5297 "then"3351 WHITESPACE@5297..5304 "\n "3352 TRUE_EXPR@5304..53363353 EXPR_ERROR@5304..53363354 ERROR_KW@5304..5309 "error"3355 WHITESPACE@5309..5310 " "3356 EXPR_STRING@5310..53363357 STRING_SINGLE@5310..5336 "'cannot manifest func ..."3358 WHITESPACE@5336..5341 "\n "3359 ELSE_KW@5341..5345 "else"3360 WHITESPACE@5345..5346 " "3361 FALSE_EXPR@5346..55133362 EXPR_IF_THEN_ELSE@5346..55133363 IF_KW@5346..5348 "if"3364 WHITESPACE@5348..5349 " "3365 EXPR_APPLY@5349..53643366 EXPR_INDEX@5349..53613367 EXPR_VAR@5349..53523368 NAME@5349..53523369 IDENT@5349..5352 "std"3370 DOT@5352..5353 "."3371 NAME@5353..53613372 IDENT@5353..5361 "isNumber"3373 ARGS_DESC@5361..53643374 L_PAREN@5361..5362 "("3375 ARG@5362..53633376 EXPR_VAR@5362..53633377 NAME@5362..53633378 IDENT@5362..5363 "v"3379 R_PAREN@5363..5364 ")"3380 WHITESPACE@5364..5365 " "3381 THEN_KW@5365..5369 "then"3382 WHITESPACE@5369..5376 "\n "3383 TRUE_EXPR@5376..53913384 EXPR_APPLY@5376..53913385 EXPR_INDEX@5376..53883386 EXPR_VAR@5376..53793387 NAME@5376..53793388 IDENT@5376..5379 "std"3389 DOT@5379..5380 "."3390 NAME@5380..53883391 IDENT@5380..5388 "toString"3392 ARGS_DESC@5388..53913393 L_PAREN@5388..5389 "("3394 ARG@5389..53903395 EXPR_VAR@5389..53903396 NAME@5389..53903397 IDENT@5389..5390 "v"3398 R_PAREN@5390..5391 ")"3399 WHITESPACE@5391..5396 "\n "3400 ELSE_KW@5396..5400 "else"3401 WHITESPACE@5400..5401 " "3402 FALSE_EXPR@5401..55133403 EXPR_IF_THEN_ELSE@5401..55133404 IF_KW@5401..5403 "if"3405 WHITESPACE@5403..5404 " "3406 EXPR_BINARY@5404..54133407 LHS_EXPR@5404..54053408 EXPR_VAR@5404..54053409 NAME@5404..54053410 IDENT@5404..5405 "v"3411 WHITESPACE@5405..5406 " "3412 EQ@5406..5408 "=="3413 WHITESPACE@5408..5409 " "3414 EXPR_LITERAL@5409..54133415 TRUE_KW@5409..5413 "true"3416 WHITESPACE@5413..5414 " "3417 THEN_KW@5414..5418 "then"3418 WHITESPACE@5418..5425 "\n "3419 TRUE_EXPR@5425..54313420 EXPR_STRING@5425..54313421 STRING_SINGLE@5425..5431 "'True'"3422 WHITESPACE@5431..5436 "\n "3423 ELSE_KW@5436..5440 "else"3424 WHITESPACE@5440..5441 " "3425 FALSE_EXPR@5441..55133426 EXPR_IF_THEN_ELSE@5441..55133427 IF_KW@5441..5443 "if"3428 WHITESPACE@5443..5444 " "3429 EXPR_BINARY@5444..54543430 LHS_EXPR@5444..54453431 EXPR_VAR@5444..54453432 NAME@5444..54453433 IDENT@5444..5445 "v"3434 WHITESPACE@5445..5446 " "3435 EQ@5446..5448 "=="3436 WHITESPACE@5448..5449 " "3437 EXPR_LITERAL@5449..54543438 FALSE_KW@5449..5454 "false"3439 WHITESPACE@5454..5455 " "3440 THEN_KW@5455..5459 "then"3441 WHITESPACE@5459..5466 "\n "3442 TRUE_EXPR@5466..54733443 EXPR_STRING@5466..54733444 STRING_SINGLE@5466..5473 "'False'"3445 WHITESPACE@5473..5478 "\n "3446 ELSE_KW@5478..5482 "else"3447 WHITESPACE@5482..5483 " "3448 FALSE_EXPR@5483..55133449 EXPR_IF_THEN_ELSE@5483..55133450 IF_KW@5483..5485 "if"3451 WHITESPACE@5485..5486 " "3452 EXPR_BINARY@5486..54953453 LHS_EXPR@5486..54873454 EXPR_VAR@5486..54873455 NAME@5486..54873456 IDENT@5486..5487 "v"3457 WHITESPACE@5487..5488 " "3458 EQ@5488..5490 "=="3459 WHITESPACE@5490..5491 " "3460 EXPR_LITERAL@5491..54953461 NULL_KW@5491..5495 "null"3462 WHITESPACE@5495..5496 " "3463 THEN_KW@5496..5500 "then"3464 WHITESPACE@5500..5507 "\n "3465 TRUE_EXPR@5507..55133466 EXPR_STRING@5507..55133467 STRING_SINGLE@5507..5513 "'None'"3468 COMMA@5513..5514 ","3469 WHITESPACE@5514..5518 "\n\n "3470 MEMBER_FIELD_METHOD@5518..56733471 FIELD_NAME_FIXED@5518..55363472 NAME@5518..55363473 IDENT@5518..5536 "manifestPythonVars"3474 PARAMS_DESC@5536..55423475 L_PAREN@5536..5537 "("3476 PARAM@5537..55413477 DESTRUCT_FULL@5537..55413478 NAME@5537..55413479 IDENT@5537..5541 "conf"3480 R_PAREN@5541..5542 ")"3481 COLONCOLON@5542..5544 "::"3482 WHITESPACE@5544..5549 "\n "3483 STMT_LOCAL@5549..56413484 LOCAL_KW@5549..5554 "local"3485 WHITESPACE@5554..5555 " "3486 BIND_DESTRUCT@5555..56403487 DESTRUCT_FULL@5555..55593488 NAME@5555..55593489 IDENT@5555..5559 "vars"3490 WHITESPACE@5559..5560 " "3491 ASSIGN@5560..5561 "="3492 WHITESPACE@5561..5562 " "3493 EXPR_ARRAY_COMP@5562..56403494 L_BRACK@5562..5563 "["3495 EXPR_BINARY@5563..56073496 LHS_EXPR@5563..55723497 EXPR_STRING@5563..55723498 STRING_SINGLE@5563..5572 "'%s = %s'"3499 WHITESPACE@5572..5573 " "3500 MODULO@5573..5574 "%"3501 WHITESPACE@5574..5575 " "3502 EXPR_ARRAY@5575..56073503 L_BRACK@5575..5576 "["3504 EXPR_VAR@5576..55773505 NAME@5576..55773506 IDENT@5576..5577 "k"3507 COMMA@5577..5578 ","3508 WHITESPACE@5578..5579 " "3509 EXPR_APPLY@5579..56063510 EXPR_INDEX@5579..55973511 EXPR_VAR@5579..55823512 NAME@5579..55823513 IDENT@5579..5582 "std"3514 DOT@5582..5583 "."3515 NAME@5583..55973516 IDENT@5583..5597 "manifestPython"3517 ARGS_DESC@5597..56063518 L_PAREN@5597..5598 "("3519 ARG@5598..56053520 EXPR_INDEX_EXPR@5598..56053521 LHS_EXPR@5598..56023522 EXPR_VAR@5598..56023523 NAME@5598..56023524 IDENT@5598..5602 "conf"3525 L_BRACK@5602..5603 "["3526 EXPR_VAR@5603..56043527 NAME@5603..56043528 IDENT@5603..5604 "k"3529 R_BRACK@5604..5605 "]"3530 R_PAREN@5605..5606 ")"3531 R_BRACK@5606..5607 "]"3532 WHITESPACE@5607..5608 " "3533 FOR_SPEC@5608..56393534 FOR_KW@5608..5611 "for"3535 WHITESPACE@5611..5612 " "3536 NAME@5612..56133537 IDENT@5612..5613 "k"3538 WHITESPACE@5613..5614 " "3539 IN_KW@5614..5616 "in"3540 WHITESPACE@5616..5617 " "3541 EXPR_APPLY@5617..56393542 EXPR_INDEX@5617..56333543 EXPR_VAR@5617..56203544 NAME@5617..56203545 IDENT@5617..5620 "std"3546 DOT@5620..5621 "."3547 NAME@5621..56333548 IDENT@5621..5633 "objectFields"3549 ARGS_DESC@5633..56393550 L_PAREN@5633..5634 "("3551 ARG@5634..56383552 EXPR_VAR@5634..56383553 NAME@5634..56383554 IDENT@5634..5638 "conf"3555 R_PAREN@5638..5639 ")"3556 R_BRACK@5639..5640 "]"3557 SEMI@5640..5641 ";"3558 WHITESPACE@5641..5646 "\n "3559 EXPR_APPLY@5646..56733560 EXPR_INDEX@5646..56543561 EXPR_VAR@5646..56493562 NAME@5646..56493563 IDENT@5646..5649 "std"3564 DOT@5649..5650 "."3565 NAME@5650..56543566 IDENT@5650..5654 "join"3567 ARGS_DESC@5654..56733568 L_PAREN@5654..5655 "("3569 ARG@5655..56593570 EXPR_STRING@5655..56593571 STRING_SINGLE@5655..5659 "'\\n'"3572 COMMA@5659..5660 ","3573 WHITESPACE@5660..5661 " "3574 ARG@5661..56723575 EXPR_BINARY@5661..56723576 LHS_EXPR@5661..56653577 EXPR_VAR@5661..56653578 NAME@5661..56653579 IDENT@5661..5665 "vars"3580 WHITESPACE@5665..5666 " "3581 PLUS@5666..5667 "+"3582 WHITESPACE@5667..5668 " "3583 EXPR_ARRAY@5668..56723584 L_BRACK@5668..5669 "["3585 EXPR_STRING@5669..56713586 STRING_SINGLE@5669..5671 "''"3587 R_BRACK@5671..5672 "]"3588 R_PAREN@5672..5673 ")"3589 COMMA@5673..5674 ","3590 WHITESPACE@5674..5678 "\n\n "3591 MEMBER_FIELD_METHOD@5678..63453592 FIELD_NAME_FIXED@5678..56953593 NAME@5678..56953594 IDENT@5678..5695 "manifestXmlJsonml"3595 PARAMS_DESC@5695..57023596 L_PAREN@5695..5696 "("3597 PARAM@5696..57013598 DESTRUCT_FULL@5696..57013599 NAME@5696..57013600 IDENT@5696..5701 "value"3601 R_PAREN@5701..5702 ")"3602 COLONCOLON@5702..5704 "::"3603 WHITESPACE@5704..5709 "\n "3604 EXPR_IF_THEN_ELSE@5709..63453605 IF_KW@5709..5711 "if"3606 WHITESPACE@5711..5712 " "3607 EXPR_UNARY@5712..57313608 NOT@5712..5713 "!"3609 EXPR_APPLY@5713..57313610 EXPR_INDEX@5713..57243611 EXPR_VAR@5713..57163612 NAME@5713..57163613 IDENT@5713..5716 "std"3614 DOT@5716..5717 "."3615 NAME@5717..57243616 IDENT@5717..5724 "isArray"3617 ARGS_DESC@5724..57313618 L_PAREN@5724..5725 "("3619 ARG@5725..57303620 EXPR_VAR@5725..57303621 NAME@5725..57303622 IDENT@5725..5730 "value"3623 R_PAREN@5730..5731 ")"3624 WHITESPACE@5731..5732 " "3625 THEN_KW@5732..5736 "then"3626 WHITESPACE@5736..5743 "\n "3627 TRUE_EXPR@5743..58113628 EXPR_ERROR@5743..58113629 ERROR_KW@5743..5748 "error"3630 WHITESPACE@5748..5749 " "3631 EXPR_BINARY@5749..58113632 LHS_EXPR@5749..57933633 EXPR_STRING@5749..57933634 STRING_SINGLE@5749..5793 "'Expected a JSONML va ..."3635 WHITESPACE@5793..5794 " "3636 MODULO@5794..5795 "%"3637 WHITESPACE@5795..5796 " "3638 EXPR_APPLY@5796..58113639 EXPR_INDEX@5796..58043640 EXPR_VAR@5796..57993641 NAME@5796..57993642 IDENT@5796..5799 "std"3643 DOT@5799..5800 "."3644 NAME@5800..58043645 IDENT@5800..5804 "type"3646 ARGS_DESC@5804..58113647 L_PAREN@5804..5805 "("3648 ARG@5805..58103649 EXPR_VAR@5805..58103650 NAME@5805..58103651 IDENT@5805..5810 "value"3652 R_PAREN@5810..5811 ")"3653 WHITESPACE@5811..5816 "\n "3654 ELSE_KW@5816..5820 "else"3655 WHITESPACE@5820..5827 "\n "3656 STMT_LOCAL@5827..63273657 LOCAL_KW@5827..5832 "local"3658 WHITESPACE@5832..5833 " "3659 BIND_FUNCTION@5833..63263660 NAME@5833..58363661 IDENT@5833..5836 "aux"3662 PARAMS_DESC@5836..58393663 L_PAREN@5836..5837 "("3664 PARAM@5837..58383665 DESTRUCT_FULL@5837..58383666 NAME@5837..58383667 IDENT@5837..5838 "v"3668 R_PAREN@5838..5839 ")"3669 WHITESPACE@5839..5840 " "3670 ASSIGN@5840..5841 "="3671 WHITESPACE@5841..5850 "\n "3672 EXPR_IF_THEN_ELSE@5850..63263673 IF_KW@5850..5852 "if"3674 WHITESPACE@5852..5853 " "3675 EXPR_APPLY@5853..58683676 EXPR_INDEX@5853..58653677 EXPR_VAR@5853..58563678 NAME@5853..58563679 IDENT@5853..5856 "std"3680 DOT@5856..5857 "."3681 NAME@5857..58653682 IDENT@5857..5865 "isString"3683 ARGS_DESC@5865..58683684 L_PAREN@5865..5866 "("3685 ARG@5866..58673686 EXPR_VAR@5866..58673687 NAME@5866..58673688 IDENT@5866..5867 "v"3689 R_PAREN@5867..5868 ")"3690 WHITESPACE@5868..5869 " "3691 THEN_KW@5869..5873 "then"3692 WHITESPACE@5873..5884 "\n "3693 TRUE_EXPR@5884..58853694 EXPR_VAR@5884..58853695 NAME@5884..58853696 IDENT@5884..5885 "v"3697 WHITESPACE@5885..5894 "\n "3698 ELSE_KW@5894..5898 "else"3699 WHITESPACE@5898..5909 "\n "3700 STMT_LOCAL@5909..59263701 LOCAL_KW@5909..5914 "local"3702 WHITESPACE@5914..5915 " "3703 BIND_DESTRUCT@5915..59253704 DESTRUCT_FULL@5915..59183705 NAME@5915..59183706 IDENT@5915..5918 "tag"3707 WHITESPACE@5918..5919 " "3708 ASSIGN@5919..5920 "="3709 WHITESPACE@5920..5921 " "3710 EXPR_INDEX_EXPR@5921..59253711 LHS_EXPR@5921..59223712 EXPR_VAR@5921..59223713 NAME@5921..59223714 IDENT@5921..5922 "v"3715 L_BRACK@5922..5923 "["3716 EXPR_NUMBER@5923..59243717 FLOAT@5923..5924 "0"3718 R_BRACK@5924..5925 "]"3719 SEMI@5925..5926 ";"3720 WHITESPACE@5926..5937 "\n "3721 STMT_LOCAL@5937..59953722 LOCAL_KW@5937..5942 "local"3723 WHITESPACE@5942..5943 " "3724 BIND_DESTRUCT@5943..59943725 DESTRUCT_FULL@5943..59523726 NAME@5943..59523727 IDENT@5943..5952 "has_attrs"3728 WHITESPACE@5952..5953 " "3729 ASSIGN@5953..5954 "="3730 WHITESPACE@5954..5955 " "3731 EXPR_BINARY@5955..59943732 LHS_EXPR@5955..59723733 EXPR_BINARY@5955..59723734 LHS_EXPR@5955..59683735 EXPR_APPLY@5955..59683736 EXPR_INDEX@5955..59653737 EXPR_VAR@5955..59583738 NAME@5955..59583739 IDENT@5955..5958 "std"3740 DOT@5958..5959 "."3741 NAME@5959..59653742 IDENT@5959..5965 "length"3743 ARGS_DESC@5965..59683744 L_PAREN@5965..5966 "("3745 ARG@5966..59673746 EXPR_VAR@5966..59673747 NAME@5966..59673748 IDENT@5966..5967 "v"3749 R_PAREN@5967..5968 ")"3750 WHITESPACE@5968..5969 " "3751 GT@5969..5970 ">"3752 WHITESPACE@5970..5971 " "3753 EXPR_NUMBER@5971..59723754 FLOAT@5971..5972 "1"3755 WHITESPACE@5972..5973 " "3756 AND@5973..5975 "&&"3757 WHITESPACE@5975..5976 " "3758 EXPR_APPLY@5976..59943759 EXPR_INDEX@5976..59883760 EXPR_VAR@5976..59793761 NAME@5976..59793762 IDENT@5976..5979 "std"3763 DOT@5979..5980 "."3764 NAME@5980..59883765 IDENT@5980..5988 "isObject"3766 ARGS_DESC@5988..59943767 L_PAREN@5988..5989 "("3768 ARG@5989..59933769 EXPR_INDEX_EXPR@5989..59933770 LHS_EXPR@5989..59903771 EXPR_VAR@5989..59903772 NAME@5989..59903773 IDENT@5989..5990 "v"3774 L_BRACK@5990..5991 "["3775 EXPR_NUMBER@5991..59923776 FLOAT@5991..5992 "1"3777 R_BRACK@5992..5993 "]"3778 R_PAREN@5993..5994 ")"3779 SEMI@5994..5995 ";"3780 WHITESPACE@5995..6006 "\n "3781 STMT_LOCAL@6006..60513782 LOCAL_KW@6006..6011 "local"3783 WHITESPACE@6011..6012 " "3784 BIND_DESTRUCT@6012..60503785 DESTRUCT_FULL@6012..60173786 NAME@6012..60173787 IDENT@6012..6017 "attrs"3788 WHITESPACE@6017..6018 " "3789 ASSIGN@6018..6019 "="3790 WHITESPACE@6019..6020 " "3791 EXPR_IF_THEN_ELSE@6020..60503792 IF_KW@6020..6022 "if"3793 WHITESPACE@6022..6023 " "3794 EXPR_VAR@6023..60323795 NAME@6023..60323796 IDENT@6023..6032 "has_attrs"3797 WHITESPACE@6032..6033 " "3798 THEN_KW@6033..6037 "then"3799 WHITESPACE@6037..6038 " "3800 TRUE_EXPR@6038..60423801 EXPR_INDEX_EXPR@6038..60423802 LHS_EXPR@6038..60393803 EXPR_VAR@6038..60393804 NAME@6038..60393805 IDENT@6038..6039 "v"3806 L_BRACK@6039..6040 "["3807 EXPR_NUMBER@6040..60413808 FLOAT@6040..6041 "1"3809 R_BRACK@6041..6042 "]"3810 WHITESPACE@6042..6043 " "3811 ELSE_KW@6043..6047 "else"3812 WHITESPACE@6047..6048 " "3813 FALSE_EXPR@6048..60503814 EXPR_OBJECT@6048..60503815 OBJ_BODY_MEMBER_LIST@6048..60503816 L_BRACE@6048..6049 "{"3817 R_BRACE@6049..6050 "}"3818 SEMI@6050..6051 ";"3819 WHITESPACE@6051..6062 "\n "3820 STMT_LOCAL@6062..61143821 LOCAL_KW@6062..6067 "local"3822 WHITESPACE@6067..6068 " "3823 BIND_DESTRUCT@6068..61133824 DESTRUCT_FULL@6068..60763825 NAME@6068..60763826 IDENT@6068..6076 "children"3827 WHITESPACE@6076..6077 " "3828 ASSIGN@6077..6078 "="3829 WHITESPACE@6078..6079 " "3830 EXPR_IF_THEN_ELSE@6079..61133831 IF_KW@6079..6081 "if"3832 WHITESPACE@6081..6082 " "3833 EXPR_VAR@6082..60913834 NAME@6082..60913835 IDENT@6082..6091 "has_attrs"3836 WHITESPACE@6091..6092 " "3837 THEN_KW@6092..6096 "then"3838 WHITESPACE@6096..6097 " "3839 TRUE_EXPR@6097..61023840 EXPR_SLICE@6097..61023841 EXPR_VAR@6097..60983842 NAME@6097..60983843 IDENT@6097..6098 "v"3844 SLICE_DESC@6098..61023845 L_BRACK@6098..6099 "["3846 EXPR_NUMBER@6099..61003847 FLOAT@6099..6100 "2"3848 COLON@6100..6101 ":"3849 R_BRACK@6101..6102 "]"3850 WHITESPACE@6102..6103 " "3851 ELSE_KW@6103..6107 "else"3852 WHITESPACE@6107..6108 " "3853 FALSE_EXPR@6108..61133854 EXPR_SLICE@6108..61133855 EXPR_VAR@6108..61093856 NAME@6108..61093857 IDENT@6108..6109 "v"3858 SLICE_DESC@6109..61133859 L_BRACK@6109..6110 "["3860 EXPR_NUMBER@6110..61113861 FLOAT@6110..6111 "1"3862 COLON@6111..6112 ":"3863 R_BRACK@6112..6113 "]"3864 SEMI@6113..6114 ";"3865 WHITESPACE@6114..6125 "\n "3866 STMT_LOCAL@6125..62313867 LOCAL_KW@6125..6130 "local"3868 WHITESPACE@6130..6131 " "3869 BIND_DESTRUCT@6131..62303870 DESTRUCT_FULL@6131..61403871 NAME@6131..61403872 IDENT@6131..6140 "attrs_str"3873 WHITESPACE@6140..6141 " "3874 ASSIGN@6141..6142 "="3875 WHITESPACE@6142..6155 "\n "3876 EXPR_APPLY@6155..62303877 EXPR_INDEX@6155..61633878 EXPR_VAR@6155..61583879 NAME@6155..61583880 IDENT@6155..6158 "std"3881 DOT@6158..6159 "."3882 NAME@6159..61633883 IDENT@6159..6163 "join"3884 ARGS_DESC@6163..62303885 L_PAREN@6163..6164 "("3886 ARG@6164..61663887 EXPR_STRING@6164..61663888 STRING_SINGLE@6164..6166 "''"3889 COMMA@6166..6167 ","3890 WHITESPACE@6167..6168 " "3891 ARG@6168..62293892 EXPR_ARRAY_COMP@6168..62293893 L_BRACK@6168..6169 "["3894 EXPR_BINARY@6169..61953895 LHS_EXPR@6169..61793896 EXPR_STRING@6169..61793897 STRING_SINGLE@6169..6179 "' %s=\"%s\"'"3898 WHITESPACE@6179..6180 " "3899 MODULO@6180..6181 "%"3900 WHITESPACE@6181..6182 " "3901 EXPR_ARRAY@6182..61953902 L_BRACK@6182..6183 "["3903 EXPR_VAR@6183..61843904 NAME@6183..61843905 IDENT@6183..6184 "k"3906 COMMA@6184..6185 ","3907 WHITESPACE@6185..6186 " "3908 EXPR_INDEX_EXPR@6186..61943909 LHS_EXPR@6186..61913910 EXPR_VAR@6186..61913911 NAME@6186..61913912 IDENT@6186..6191 "attrs"3913 L_BRACK@6191..6192 "["3914 EXPR_VAR@6192..61933915 NAME@6192..61933916 IDENT@6192..6193 "k"3917 R_BRACK@6193..6194 "]"3918 R_BRACK@6194..6195 "]"3919 WHITESPACE@6195..6196 " "3920 FOR_SPEC@6196..62283921 FOR_KW@6196..6199 "for"3922 WHITESPACE@6199..6200 " "3923 NAME@6200..62013924 IDENT@6200..6201 "k"3925 WHITESPACE@6201..6202 " "3926 IN_KW@6202..6204 "in"3927 WHITESPACE@6204..6205 " "3928 EXPR_APPLY@6205..62283929 EXPR_INDEX@6205..62213930 EXPR_VAR@6205..62083931 NAME@6205..62083932 IDENT@6205..6208 "std"3933 DOT@6208..6209 "."3934 NAME@6209..62213935 IDENT@6209..6221 "objectFields"3936 ARGS_DESC@6221..62283937 L_PAREN@6221..6222 "("3938 ARG@6222..62273939 EXPR_VAR@6222..62273940 NAME@6222..62273941 IDENT@6222..6227 "attrs"3942 R_PAREN@6227..6228 ")"3943 R_BRACK@6228..6229 "]"3944 R_PAREN@6229..6230 ")"3945 SEMI@6230..6231 ";"3946 WHITESPACE@6231..6242 "\n "3947 FALSE_EXPR@6242..63263948 EXPR_APPLY@6242..63263949 EXPR_INDEX@6242..62543950 EXPR_VAR@6242..62453951 NAME@6242..62453952 IDENT@6242..6245 "std"3953 DOT@6245..6246 "."3954 NAME@6246..62543955 IDENT@6246..6254 "deepJoin"3956 ARGS_DESC@6254..63263957 L_PAREN@6254..6255 "("3958 ARG@6255..63253959 EXPR_ARRAY@6255..63253960 L_BRACK@6255..6256 "["3961 EXPR_STRING@6256..62593962 STRING_SINGLE@6256..6259 "'<'"3963 COMMA@6259..6260 ","3964 WHITESPACE@6260..6261 " "3965 EXPR_VAR@6261..62643966 NAME@6261..62643967 IDENT@6261..6264 "tag"3968 COMMA@6264..6265 ","3969 WHITESPACE@6265..6266 " "3970 EXPR_VAR@6266..62753971 NAME@6266..62753972 IDENT@6266..6275 "attrs_str"3973 COMMA@6275..6276 ","3974 WHITESPACE@6276..6277 " "3975 EXPR_STRING@6277..62803976 STRING_SINGLE@6277..6280 "'>'"3977 COMMA@6280..6281 ","3978 WHITESPACE@6281..6282 " "3979 EXPR_ARRAY_COMP@6282..63083980 L_BRACK@6282..6283 "["3981 EXPR_APPLY@6283..62893982 EXPR_VAR@6283..62863983 NAME@6283..62863984 IDENT@6283..6286 "aux"3985 ARGS_DESC@6286..62893986 L_PAREN@6286..6287 "("3987 ARG@6287..62883988 EXPR_VAR@6287..62883989 NAME@6287..62883990 IDENT@6287..6288 "x"3991 R_PAREN@6288..6289 ")"3992 WHITESPACE@6289..6290 " "3993 FOR_SPEC@6290..63073994 FOR_KW@6290..6293 "for"3995 WHITESPACE@6293..6294 " "3996 NAME@6294..62953997 IDENT@6294..6295 "x"3998 WHITESPACE@6295..6296 " "3999 IN_KW@6296..6298 "in"4000 WHITESPACE@6298..6299 " "4001 EXPR_VAR@6299..63074002 NAME@6299..63074003 IDENT@6299..6307 "children"4004 R_BRACK@6307..6308 "]"4005 COMMA@6308..6309 ","4006 WHITESPACE@6309..6310 " "4007 EXPR_STRING@6310..63144008 STRING_SINGLE@6310..6314 "'</'"4009 COMMA@6314..6315 ","4010 WHITESPACE@6315..6316 " "4011 EXPR_VAR@6316..63194012 NAME@6316..63194013 IDENT@6316..6319 "tag"4014 COMMA@6319..6320 ","4015 WHITESPACE@6320..6321 " "4016 EXPR_STRING@6321..63244017 STRING_SINGLE@6321..6324 "'>'"4018 R_BRACK@6324..6325 "]"4019 R_PAREN@6325..6326 ")"4020 SEMI@6326..6327 ";"4021 WHITESPACE@6327..6335 "\n\n "4022 FALSE_EXPR@6335..63454023 EXPR_APPLY@6335..63454024 EXPR_VAR@6335..63384025 NAME@6335..63384026 IDENT@6335..6338 "aux"4027 ARGS_DESC@6338..63454028 L_PAREN@6338..6339 "("4029 ARG@6339..63444030 EXPR_VAR@6339..63444031 NAME@6339..63444032 IDENT@6339..6344 "value"4033 R_PAREN@6344..6345 ")"4034 COMMA@6345..6346 ","4035 WHITESPACE@6346..6350 "\n\n "4036 MEMBER_FIELD_METHOD@6350..68994037 FIELD_NAME_FIXED@6350..63584038 NAME@6350..63584039 IDENT@6350..6358 "setUnion"4040 PARAMS_DESC@6358..63734041 L_PAREN@6358..6359 "("4042 PARAM@6359..63604043 DESTRUCT_FULL@6359..63604044 NAME@6359..63604045 IDENT@6359..6360 "a"4046 COMMA@6360..6361 ","4047 WHITESPACE@6361..6362 " "4048 PARAM@6362..63634049 DESTRUCT_FULL@6362..63634050 NAME@6362..63634051 IDENT@6362..6363 "b"4052 COMMA@6363..6364 ","4053 WHITESPACE@6364..6365 " "4054 PARAM@6365..63724055 DESTRUCT_FULL@6365..63694056 NAME@6365..63694057 IDENT@6365..6369 "keyF"4058 ASSIGN@6369..6370 "="4059 EXPR_VAR@6370..63724060 NAME@6370..63724061 IDENT@6370..6372 "id"4062 R_PAREN@6372..6373 ")"4063 COLONCOLON@6373..6375 "::"4064 WHITESPACE@6375..6380 "\n "4065 SINGLE_LINE_SLASH_COMMENT@6380..6422 "// NOTE: order matter ..."4066 WHITESPACE@6422..6426 " "4067 STMT_LOCAL@6426..68754068 LOCAL_KW@6426..6431 "local"4069 WHITESPACE@6431..6432 " "4070 BIND_FUNCTION@6432..68744071 NAME@6432..64354072 IDENT@6432..6435 "aux"4073 PARAMS_DESC@6435..64524074 L_PAREN@6435..6436 "("4075 PARAM@6436..64374076 DESTRUCT_FULL@6436..64374077 NAME@6436..64374078 IDENT@6436..6437 "a"4079 COMMA@6437..6438 ","4080 WHITESPACE@6438..6439 " "4081 PARAM@6439..64404082 DESTRUCT_FULL@6439..64404083 NAME@6439..64404084 IDENT@6439..6440 "b"4085 COMMA@6440..6441 ","4086 WHITESPACE@6441..6442 " "4087 PARAM@6442..64434088 DESTRUCT_FULL@6442..64434089 NAME@6442..64434090 IDENT@6442..6443 "i"4091 COMMA@6443..6444 ","4092 WHITESPACE@6444..6445 " "4093 PARAM@6445..64464094 DESTRUCT_FULL@6445..64464095 NAME@6445..64464096 IDENT@6445..6446 "j"4097 COMMA@6446..6447 ","4098 WHITESPACE@6447..6448 " "4099 PARAM@6448..64514100 DESTRUCT_FULL@6448..64514101 NAME@6448..64514102 IDENT@6448..6451 "acc"4103 R_PAREN@6451..6452 ")"4104 WHITESPACE@6452..6453 " "4105 ASSIGN@6453..6454 "="4106 WHITESPACE@6454..6461 "\n "4107 EXPR_IF_THEN_ELSE@6461..68744108 IF_KW@6461..6463 "if"4109 WHITESPACE@6463..6464 " "4110 EXPR_BINARY@6464..64824111 LHS_EXPR@6464..64654112 EXPR_VAR@6464..64654113 NAME@6464..64654114 IDENT@6464..6465 "i"4115 WHITESPACE@6465..6466 " "4116 GE@6466..6468 ">="4117 WHITESPACE@6468..6469 " "4118 EXPR_APPLY@6469..64824119 EXPR_INDEX@6469..64794120 EXPR_VAR@6469..64724121 NAME@6469..64724122 IDENT@6469..6472 "std"4123 DOT@6472..6473 "."4124 NAME@6473..64794125 IDENT@6473..6479 "length"4126 ARGS_DESC@6479..64824127 L_PAREN@6479..6480 "("4128 ARG@6480..64814129 EXPR_VAR@6480..64814130 NAME@6480..64814131 IDENT@6480..6481 "a"4132 R_PAREN@6481..6482 ")"4133 WHITESPACE@6482..6483 " "4134 THEN_KW@6483..6487 "then"4135 WHITESPACE@6487..6496 "\n "4136 TRUE_EXPR@6496..65074137 EXPR_BINARY@6496..65074138 LHS_EXPR@6496..64994139 EXPR_VAR@6496..64994140 NAME@6496..64994141 IDENT@6496..6499 "acc"4142 WHITESPACE@6499..6500 " "4143 PLUS@6500..6501 "+"4144 WHITESPACE@6501..6502 " "4145 EXPR_SLICE@6502..65074146 EXPR_VAR@6502..65034147 NAME@6502..65034148 IDENT@6502..6503 "b"4149 SLICE_DESC@6503..65074150 L_BRACK@6503..6504 "["4151 EXPR_VAR@6504..65054152 NAME@6504..65054153 IDENT@6504..6505 "j"4154 COLON@6505..6506 ":"4155 R_BRACK@6506..6507 "]"4156 WHITESPACE@6507..6514 "\n "4157 ELSE_KW@6514..6518 "else"4158 WHITESPACE@6518..6519 " "4159 FALSE_EXPR@6519..68744160 EXPR_IF_THEN_ELSE@6519..68744161 IF_KW@6519..6521 "if"4162 WHITESPACE@6521..6522 " "4163 EXPR_BINARY@6522..65404164 LHS_EXPR@6522..65234165 EXPR_VAR@6522..65234166 NAME@6522..65234167 IDENT@6522..6523 "j"4168 WHITESPACE@6523..6524 " "4169 GE@6524..6526 ">="4170 WHITESPACE@6526..6527 " "4171 EXPR_APPLY@6527..65404172 EXPR_INDEX@6527..65374173 EXPR_VAR@6527..65304174 NAME@6527..65304175 IDENT@6527..6530 "std"4176 DOT@6530..6531 "."4177 NAME@6531..65374178 IDENT@6531..6537 "length"4179 ARGS_DESC@6537..65404180 L_PAREN@6537..6538 "("4181 ARG@6538..65394182 EXPR_VAR@6538..65394183 NAME@6538..65394184 IDENT@6538..6539 "b"4185 R_PAREN@6539..6540 ")"4186 WHITESPACE@6540..6541 " "4187 THEN_KW@6541..6545 "then"4188 WHITESPACE@6545..6554 "\n "4189 TRUE_EXPR@6554..65654190 EXPR_BINARY@6554..65654191 LHS_EXPR@6554..65574192 EXPR_VAR@6554..65574193 NAME@6554..65574194 IDENT@6554..6557 "acc"4195 WHITESPACE@6557..6558 " "4196 PLUS@6558..6559 "+"4197 WHITESPACE@6559..6560 " "4198 EXPR_SLICE@6560..65654199 EXPR_VAR@6560..65614200 NAME@6560..65614201 IDENT@6560..6561 "a"4202 SLICE_DESC@6561..65654203 L_BRACK@6561..6562 "["4204 EXPR_VAR@6562..65634205 NAME@6562..65634206 IDENT@6562..6563 "i"4207 COLON@6563..6564 ":"4208 R_BRACK@6564..6565 "]"4209 WHITESPACE@6565..6572 "\n "4210 ELSE_KW@6572..6576 "else"4211 WHITESPACE@6576..6585 "\n "4212 STMT_LOCAL@6585..66074213 LOCAL_KW@6585..6590 "local"4214 WHITESPACE@6590..6591 " "4215 BIND_DESTRUCT@6591..66064216 DESTRUCT_FULL@6591..65934217 NAME@6591..65934218 IDENT@6591..6593 "ak"4219 WHITESPACE@6593..6594 " "4220 ASSIGN@6594..6595 "="4221 WHITESPACE@6595..6596 " "4222 EXPR_APPLY@6596..66064223 EXPR_VAR@6596..66004224 NAME@6596..66004225 IDENT@6596..6600 "keyF"4226 ARGS_DESC@6600..66064227 L_PAREN@6600..6601 "("4228 ARG@6601..66054229 EXPR_INDEX_EXPR@6601..66054230 LHS_EXPR@6601..66024231 EXPR_VAR@6601..66024232 NAME@6601..66024233 IDENT@6601..6602 "a"4234 L_BRACK@6602..6603 "["4235 EXPR_VAR@6603..66044236 NAME@6603..66044237 IDENT@6603..6604 "i"4238 R_BRACK@6604..6605 "]"4239 R_PAREN@6605..6606 ")"4240 SEMI@6606..6607 ";"4241 WHITESPACE@6607..6616 "\n "4242 STMT_LOCAL@6616..66384243 LOCAL_KW@6616..6621 "local"4244 WHITESPACE@6621..6622 " "4245 BIND_DESTRUCT@6622..66374246 DESTRUCT_FULL@6622..66244247 NAME@6622..66244248 IDENT@6622..6624 "bk"4249 WHITESPACE@6624..6625 " "4250 ASSIGN@6625..6626 "="4251 WHITESPACE@6626..6627 " "4252 EXPR_APPLY@6627..66374253 EXPR_VAR@6627..66314254 NAME@6627..66314255 IDENT@6627..6631 "keyF"4256 ARGS_DESC@6631..66374257 L_PAREN@6631..6632 "("4258 ARG@6632..66364259 EXPR_INDEX_EXPR@6632..66364260 LHS_EXPR@6632..66334261 EXPR_VAR@6632..66334262 NAME@6632..66334263 IDENT@6632..6633 "b"4264 L_BRACK@6633..6634 "["4265 EXPR_VAR@6634..66354266 NAME@6634..66354267 IDENT@6634..6635 "j"4268 R_BRACK@6635..6636 "]"4269 R_PAREN@6636..6637 ")"4270 SEMI@6637..6638 ";"4271 WHITESPACE@6638..6647 "\n "4272 FALSE_EXPR@6647..68744273 EXPR_IF_THEN_ELSE@6647..68744274 IF_KW@6647..6649 "if"4275 WHITESPACE@6649..6650 " "4276 EXPR_BINARY@6650..66584277 LHS_EXPR@6650..66524278 EXPR_VAR@6650..66524279 NAME@6650..66524280 IDENT@6650..6652 "ak"4281 WHITESPACE@6652..6653 " "4282 EQ@6653..6655 "=="4283 WHITESPACE@6655..6656 " "4284 EXPR_VAR@6656..66584285 NAME@6656..66584286 IDENT@6656..6658 "bk"4287 WHITESPACE@6658..6659 " "4288 THEN_KW@6659..6663 "then"4289 WHITESPACE@6663..6674 "\n "4290 TRUE_EXPR@6674..67224291 EXPR_APPLY@6674..67224292 EXPR_VAR@6674..66774293 NAME@6674..66774294 IDENT@6674..6677 "aux"4295 ARGS_DESC@6677..67224296 L_PAREN@6677..6678 "("4297 ARG@6678..66794298 EXPR_VAR@6678..66794299 NAME@6678..66794300 IDENT@6678..6679 "a"4301 COMMA@6679..6680 ","4302 WHITESPACE@6680..6681 " "4303 ARG@6681..66824304 EXPR_VAR@6681..66824305 NAME@6681..66824306 IDENT@6681..6682 "b"4307 COMMA@6682..6683 ","4308 WHITESPACE@6683..6684 " "4309 ARG@6684..66894310 EXPR_BINARY@6684..66894311 LHS_EXPR@6684..66854312 EXPR_VAR@6684..66854313 NAME@6684..66854314 IDENT@6684..6685 "i"4315 WHITESPACE@6685..6686 " "4316 PLUS@6686..6687 "+"4317 WHITESPACE@6687..6688 " "4318 EXPR_NUMBER@6688..66894319 FLOAT@6688..6689 "1"4320 COMMA@6689..6690 ","4321 WHITESPACE@6690..6691 " "4322 ARG@6691..66964323 EXPR_BINARY@6691..66964324 LHS_EXPR@6691..66924325 EXPR_VAR@6691..66924326 NAME@6691..66924327 IDENT@6691..6692 "j"4328 WHITESPACE@6692..6693 " "4329 PLUS@6693..6694 "+"4330 WHITESPACE@6694..6695 " "4331 EXPR_NUMBER@6695..66964332 FLOAT@6695..6696 "1"4333 COMMA@6696..6697 ","4334 WHITESPACE@6697..6698 " "4335 ARG@6698..67104336 EXPR_BINARY@6698..67104337 LHS_EXPR@6698..67014338 EXPR_VAR@6698..67014339 NAME@6698..67014340 IDENT@6698..6701 "acc"4341 WHITESPACE@6701..6702 " "4342 PLUS@6702..6703 "+"4343 WHITESPACE@6703..6704 " "4344 EXPR_ARRAY@6704..67104345 L_BRACK@6704..6705 "["4346 EXPR_INDEX_EXPR@6705..67094347 LHS_EXPR@6705..67064348 EXPR_VAR@6705..67064349 NAME@6705..67064350 IDENT@6705..6706 "a"4351 L_BRACK@6706..6707 "["4352 EXPR_VAR@6707..67084353 NAME@6707..67084354 IDENT@6707..6708 "i"4355 R_BRACK@6708..6709 "]"4356 R_BRACK@6709..6710 "]"4357 R_PAREN@6710..6711 ")"4358 WHITESPACE@6711..6712 " "4359 TAILSTRICT_KW@6712..6722 "tailstrict"4360 WHITESPACE@6722..6731 "\n "4361 ELSE_KW@6731..6735 "else"4362 WHITESPACE@6735..6736 " "4363 FALSE_EXPR@6736..68744364 EXPR_IF_THEN_ELSE@6736..68744365 IF_KW@6736..6738 "if"4366 WHITESPACE@6738..6739 " "4367 EXPR_BINARY@6739..67464368 LHS_EXPR@6739..67414369 EXPR_VAR@6739..67414370 NAME@6739..67414371 IDENT@6739..6741 "ak"4372 WHITESPACE@6741..6742 " "4373 LT@6742..6743 "<"4374 WHITESPACE@6743..6744 " "4375 EXPR_VAR@6744..67464376 NAME@6744..67464377 IDENT@6744..6746 "bk"4378 WHITESPACE@6746..6747 " "4379 THEN_KW@6747..6751 "then"4380 WHITESPACE@6751..6762 "\n "4381 TRUE_EXPR@6762..68064382 EXPR_APPLY@6762..68064383 EXPR_VAR@6762..67654384 NAME@6762..67654385 IDENT@6762..6765 "aux"4386 ARGS_DESC@6765..68064387 L_PAREN@6765..6766 "("4388 ARG@6766..67674389 EXPR_VAR@6766..67674390 NAME@6766..67674391 IDENT@6766..6767 "a"4392 COMMA@6767..6768 ","4393 WHITESPACE@6768..6769 " "4394 ARG@6769..67704395 EXPR_VAR@6769..67704396 NAME@6769..67704397 IDENT@6769..6770 "b"4398 COMMA@6770..6771 ","4399 WHITESPACE@6771..6772 " "4400 ARG@6772..67774401 EXPR_BINARY@6772..67774402 LHS_EXPR@6772..67734403 EXPR_VAR@6772..67734404 NAME@6772..67734405 IDENT@6772..6773 "i"4406 WHITESPACE@6773..6774 " "4407 PLUS@6774..6775 "+"4408 WHITESPACE@6775..6776 " "4409 EXPR_NUMBER@6776..67774410 FLOAT@6776..6777 "1"4411 COMMA@6777..6778 ","4412 WHITESPACE@6778..6779 " "4413 ARG@6779..67804414 EXPR_VAR@6779..67804415 NAME@6779..67804416 IDENT@6779..6780 "j"4417 COMMA@6780..6781 ","4418 WHITESPACE@6781..6782 " "4419 ARG@6782..67944420 EXPR_BINARY@6782..67944421 LHS_EXPR@6782..67854422 EXPR_VAR@6782..67854423 NAME@6782..67854424 IDENT@6782..6785 "acc"4425 WHITESPACE@6785..6786 " "4426 PLUS@6786..6787 "+"4427 WHITESPACE@6787..6788 " "4428 EXPR_ARRAY@6788..67944429 L_BRACK@6788..6789 "["4430 EXPR_INDEX_EXPR@6789..67934431 LHS_EXPR@6789..67904432 EXPR_VAR@6789..67904433 NAME@6789..67904434 IDENT@6789..6790 "a"4435 L_BRACK@6790..6791 "["4436 EXPR_VAR@6791..67924437 NAME@6791..67924438 IDENT@6791..6792 "i"4439 R_BRACK@6792..6793 "]"4440 R_BRACK@6793..6794 "]"4441 R_PAREN@6794..6795 ")"4442 WHITESPACE@6795..6796 " "4443 TAILSTRICT_KW@6796..6806 "tailstrict"4444 WHITESPACE@6806..6815 "\n "4445 ELSE_KW@6815..6819 "else"4446 WHITESPACE@6819..6830 "\n "4447 FALSE_EXPR@6830..68744448 EXPR_APPLY@6830..68744449 EXPR_VAR@6830..68334450 NAME@6830..68334451 IDENT@6830..6833 "aux"4452 ARGS_DESC@6833..68744453 L_PAREN@6833..6834 "("4454 ARG@6834..68354455 EXPR_VAR@6834..68354456 NAME@6834..68354457 IDENT@6834..6835 "a"4458 COMMA@6835..6836 ","4459 WHITESPACE@6836..6837 " "4460 ARG@6837..68384461 EXPR_VAR@6837..68384462 NAME@6837..68384463 IDENT@6837..6838 "b"4464 COMMA@6838..6839 ","4465 WHITESPACE@6839..6840 " "4466 ARG@6840..68414467 EXPR_VAR@6840..68414468 NAME@6840..68414469 IDENT@6840..6841 "i"4470 COMMA@6841..6842 ","4471 WHITESPACE@6842..6843 " "4472 ARG@6843..68484473 EXPR_BINARY@6843..68484474 LHS_EXPR@6843..68444475 EXPR_VAR@6843..68444476 NAME@6843..68444477 IDENT@6843..6844 "j"4478 WHITESPACE@6844..6845 " "4479 PLUS@6845..6846 "+"4480 WHITESPACE@6846..6847 " "4481 EXPR_NUMBER@6847..68484482 FLOAT@6847..6848 "1"4483 COMMA@6848..6849 ","4484 WHITESPACE@6849..6850 " "4485 ARG@6850..68624486 EXPR_BINARY@6850..68624487 LHS_EXPR@6850..68534488 EXPR_VAR@6850..68534489 NAME@6850..68534490 IDENT@6850..6853 "acc"4491 WHITESPACE@6853..6854 " "4492 PLUS@6854..6855 "+"4493 WHITESPACE@6855..6856 " "4494 EXPR_ARRAY@6856..68624495 L_BRACK@6856..6857 "["4496 EXPR_INDEX_EXPR@6857..68614497 LHS_EXPR@6857..68584498 EXPR_VAR@6857..68584499 NAME@6857..68584500 IDENT@6857..6858 "b"4501 L_BRACK@6858..6859 "["4502 EXPR_VAR@6859..68604503 NAME@6859..68604504 IDENT@6859..6860 "j"4505 R_BRACK@6860..6861 "]"4506 R_BRACK@6861..6862 "]"4507 R_PAREN@6862..6863 ")"4508 WHITESPACE@6863..6864 " "4509 TAILSTRICT_KW@6864..6874 "tailstrict"4510 SEMI@6874..6875 ";"4511 WHITESPACE@6875..6880 "\n "4512 EXPR_APPLY@6880..68994513 EXPR_VAR@6880..68834514 NAME@6880..68834515 IDENT@6880..6883 "aux"4516 ARGS_DESC@6883..68994517 L_PAREN@6883..6884 "("4518 ARG@6884..68854519 EXPR_VAR@6884..68854520 NAME@6884..68854521 IDENT@6884..6885 "a"4522 COMMA@6885..6886 ","4523 WHITESPACE@6886..6887 " "4524 ARG@6887..68884525 EXPR_VAR@6887..68884526 NAME@6887..68884527 IDENT@6887..6888 "b"4528 COMMA@6888..6889 ","4529 WHITESPACE@6889..6890 " "4530 ARG@6890..68914531 EXPR_NUMBER@6890..68914532 FLOAT@6890..6891 "0"4533 COMMA@6891..6892 ","4534 WHITESPACE@6892..6893 " "4535 ARG@6893..68944536 EXPR_NUMBER@6893..68944537 FLOAT@6893..6894 "0"4538 COMMA@6894..6895 ","4539 WHITESPACE@6895..6896 " "4540 ARG@6896..68984541 EXPR_ARRAY@6896..68984542 L_BRACK@6896..6897 "["4543 R_BRACK@6897..6898 "]"4544 R_PAREN@6898..6899 ")"4545 COMMA@6899..6900 ","4546 WHITESPACE@6900..6904 "\n\n "4547 MEMBER_FIELD_METHOD@6904..73614548 FIELD_NAME_FIXED@6904..69114549 NAME@6904..69114550 IDENT@6904..6911 "setDiff"4551 PARAMS_DESC@6911..69264552 L_PAREN@6911..6912 "("4553 PARAM@6912..69134554 DESTRUCT_FULL@6912..69134555 NAME@6912..69134556 IDENT@6912..6913 "a"4557 COMMA@6913..6914 ","4558 WHITESPACE@6914..6915 " "4559 PARAM@6915..69164560 DESTRUCT_FULL@6915..69164561 NAME@6915..69164562 IDENT@6915..6916 "b"4563 COMMA@6916..6917 ","4564 WHITESPACE@6917..6918 " "4565 PARAM@6918..69254566 DESTRUCT_FULL@6918..69224567 NAME@6918..69224568 IDENT@6918..6922 "keyF"4569 ASSIGN@6922..6923 "="4570 EXPR_VAR@6923..69254571 NAME@6923..69254572 IDENT@6923..6925 "id"4573 R_PAREN@6925..6926 ")"4574 COLONCOLON@6926..6928 "::"4575 WHITESPACE@6928..6933 "\n "4576 STMT_LOCAL@6933..73264577 LOCAL_KW@6933..6938 "local"4578 WHITESPACE@6938..6939 " "4579 BIND_FUNCTION@6939..73254580 NAME@6939..69424581 IDENT@6939..6942 "aux"4582 PARAMS_DESC@6942..69594583 L_PAREN@6942..6943 "("4584 PARAM@6943..69444585 DESTRUCT_FULL@6943..69444586 NAME@6943..69444587 IDENT@6943..6944 "a"4588 COMMA@6944..6945 ","4589 WHITESPACE@6945..6946 " "4590 PARAM@6946..69474591 DESTRUCT_FULL@6946..69474592 NAME@6946..69474593 IDENT@6946..6947 "b"4594 COMMA@6947..6948 ","4595 WHITESPACE@6948..6949 " "4596 PARAM@6949..69504597 DESTRUCT_FULL@6949..69504598 NAME@6949..69504599 IDENT@6949..6950 "i"4600 COMMA@6950..6951 ","4601 WHITESPACE@6951..6952 " "4602 PARAM@6952..69534603 DESTRUCT_FULL@6952..69534604 NAME@6952..69534605 IDENT@6952..6953 "j"4606 COMMA@6953..6954 ","4607 WHITESPACE@6954..6955 " "4608 PARAM@6955..69584609 DESTRUCT_FULL@6955..69584610 NAME@6955..69584611 IDENT@6955..6958 "acc"4612 R_PAREN@6958..6959 ")"4613 WHITESPACE@6959..6960 " "4614 ASSIGN@6960..6961 "="4615 WHITESPACE@6961..6968 "\n "4616 EXPR_IF_THEN_ELSE@6968..73254617 IF_KW@6968..6970 "if"4618 WHITESPACE@6970..6971 " "4619 EXPR_BINARY@6971..69894620 LHS_EXPR@6971..69724621 EXPR_VAR@6971..69724622 NAME@6971..69724623 IDENT@6971..6972 "i"4624 WHITESPACE@6972..6973 " "4625 GE@6973..6975 ">="4626 WHITESPACE@6975..6976 " "4627 EXPR_APPLY@6976..69894628 EXPR_INDEX@6976..69864629 EXPR_VAR@6976..69794630 NAME@6976..69794631 IDENT@6976..6979 "std"4632 DOT@6979..6980 "."4633 NAME@6980..69864634 IDENT@6980..6986 "length"4635 ARGS_DESC@6986..69894636 L_PAREN@6986..6987 "("4637 ARG@6987..69884638 EXPR_VAR@6987..69884639 NAME@6987..69884640 IDENT@6987..6988 "a"4641 R_PAREN@6988..6989 ")"4642 WHITESPACE@6989..6990 " "4643 THEN_KW@6990..6994 "then"4644 WHITESPACE@6994..7003 "\n "4645 TRUE_EXPR@7003..70064646 EXPR_VAR@7003..70064647 NAME@7003..70064648 IDENT@7003..7006 "acc"4649 WHITESPACE@7006..7013 "\n "4650 ELSE_KW@7013..7017 "else"4651 WHITESPACE@7017..7018 " "4652 FALSE_EXPR@7018..73254653 EXPR_IF_THEN_ELSE@7018..73254654 IF_KW@7018..7020 "if"4655 WHITESPACE@7020..7021 " "4656 EXPR_BINARY@7021..70394657 LHS_EXPR@7021..70224658 EXPR_VAR@7021..70224659 NAME@7021..70224660 IDENT@7021..7022 "j"4661 WHITESPACE@7022..7023 " "4662 GE@7023..7025 ">="4663 WHITESPACE@7025..7026 " "4664 EXPR_APPLY@7026..70394665 EXPR_INDEX@7026..70364666 EXPR_VAR@7026..70294667 NAME@7026..70294668 IDENT@7026..7029 "std"4669 DOT@7029..7030 "."4670 NAME@7030..70364671 IDENT@7030..7036 "length"4672 ARGS_DESC@7036..70394673 L_PAREN@7036..7037 "("4674 ARG@7037..70384675 EXPR_VAR@7037..70384676 NAME@7037..70384677 IDENT@7037..7038 "b"4678 R_PAREN@7038..7039 ")"4679 WHITESPACE@7039..7040 " "4680 THEN_KW@7040..7044 "then"4681 WHITESPACE@7044..7053 "\n "4682 TRUE_EXPR@7053..70644683 EXPR_BINARY@7053..70644684 LHS_EXPR@7053..70564685 EXPR_VAR@7053..70564686 NAME@7053..70564687 IDENT@7053..7056 "acc"4688 WHITESPACE@7056..7057 " "4689 PLUS@7057..7058 "+"4690 WHITESPACE@7058..7059 " "4691 EXPR_SLICE@7059..70644692 EXPR_VAR@7059..70604693 NAME@7059..70604694 IDENT@7059..7060 "a"4695 SLICE_DESC@7060..70644696 L_BRACK@7060..7061 "["4697 EXPR_VAR@7061..70624698 NAME@7061..70624699 IDENT@7061..7062 "i"4700 COLON@7062..7063 ":"4701 R_BRACK@7063..7064 "]"4702 WHITESPACE@7064..7071 "\n "4703 ELSE_KW@7071..7075 "else"4704 WHITESPACE@7075..7084 "\n "4705 FALSE_EXPR@7084..73254706 EXPR_IF_THEN_ELSE@7084..73254707 IF_KW@7084..7086 "if"4708 WHITESPACE@7086..7087 " "4709 EXPR_BINARY@7087..71114710 LHS_EXPR@7087..70974711 EXPR_APPLY@7087..70974712 EXPR_VAR@7087..70914713 NAME@7087..70914714 IDENT@7087..7091 "keyF"4715 ARGS_DESC@7091..70974716 L_PAREN@7091..7092 "("4717 ARG@7092..70964718 EXPR_INDEX_EXPR@7092..70964719 LHS_EXPR@7092..70934720 EXPR_VAR@7092..70934721 NAME@7092..70934722 IDENT@7092..7093 "a"4723 L_BRACK@7093..7094 "["4724 EXPR_VAR@7094..70954725 NAME@7094..70954726 IDENT@7094..7095 "i"4727 R_BRACK@7095..7096 "]"4728 R_PAREN@7096..7097 ")"4729 WHITESPACE@7097..7098 " "4730 EQ@7098..7100 "=="4731 WHITESPACE@7100..7101 " "4732 EXPR_APPLY@7101..71114733 EXPR_VAR@7101..71054734 NAME@7101..71054735 IDENT@7101..7105 "keyF"4736 ARGS_DESC@7105..71114737 L_PAREN@7105..7106 "("4738 ARG@7106..71104739 EXPR_INDEX_EXPR@7106..71104740 LHS_EXPR@7106..71074741 EXPR_VAR@7106..71074742 NAME@7106..71074743 IDENT@7106..7107 "b"4744 L_BRACK@7107..7108 "["4745 EXPR_VAR@7108..71094746 NAME@7108..71094747 IDENT@7108..7109 "j"4748 R_BRACK@7109..7110 "]"4749 R_PAREN@7110..7111 ")"4750 WHITESPACE@7111..7112 " "4751 THEN_KW@7112..7116 "then"4752 WHITESPACE@7116..7127 "\n "4753 TRUE_EXPR@7127..71664754 EXPR_APPLY@7127..71664755 EXPR_VAR@7127..71304756 NAME@7127..71304757 IDENT@7127..7130 "aux"4758 ARGS_DESC@7130..71664759 L_PAREN@7130..7131 "("4760 ARG@7131..71324761 EXPR_VAR@7131..71324762 NAME@7131..71324763 IDENT@7131..7132 "a"4764 COMMA@7132..7133 ","4765 WHITESPACE@7133..7134 " "4766 ARG@7134..71354767 EXPR_VAR@7134..71354768 NAME@7134..71354769 IDENT@7134..7135 "b"4770 COMMA@7135..7136 ","4771 WHITESPACE@7136..7137 " "4772 ARG@7137..71424773 EXPR_BINARY@7137..71424774 LHS_EXPR@7137..71384775 EXPR_VAR@7137..71384776 NAME@7137..71384777 IDENT@7137..7138 "i"4778 WHITESPACE@7138..7139 " "4779 PLUS@7139..7140 "+"4780 WHITESPACE@7140..7141 " "4781 EXPR_NUMBER@7141..71424782 FLOAT@7141..7142 "1"4783 COMMA@7142..7143 ","4784 WHITESPACE@7143..7144 " "4785 ARG@7144..71494786 EXPR_BINARY@7144..71494787 LHS_EXPR@7144..71454788 EXPR_VAR@7144..71454789 NAME@7144..71454790 IDENT@7144..7145 "j"4791 WHITESPACE@7145..7146 " "4792 PLUS@7146..7147 "+"4793 WHITESPACE@7147..7148 " "4794 EXPR_NUMBER@7148..71494795 FLOAT@7148..7149 "1"4796 COMMA@7149..7150 ","4797 WHITESPACE@7150..7151 " "4798 ARG@7151..71544799 EXPR_VAR@7151..71544800 NAME@7151..71544801 IDENT@7151..7154 "acc"4802 R_PAREN@7154..7155 ")"4803 WHITESPACE@7155..7156 " "4804 TAILSTRICT_KW@7156..7166 "tailstrict"4805 WHITESPACE@7166..7175 "\n "4806 ELSE_KW@7175..7179 "else"4807 WHITESPACE@7179..7180 " "4808 FALSE_EXPR@7180..73254809 EXPR_IF_THEN_ELSE@7180..73254810 IF_KW@7180..7182 "if"4811 WHITESPACE@7182..7183 " "4812 EXPR_BINARY@7183..72064813 LHS_EXPR@7183..71934814 EXPR_APPLY@7183..71934815 EXPR_VAR@7183..71874816 NAME@7183..71874817 IDENT@7183..7187 "keyF"4818 ARGS_DESC@7187..71934819 L_PAREN@7187..7188 "("4820 ARG@7188..71924821 EXPR_INDEX_EXPR@7188..71924822 LHS_EXPR@7188..71894823 EXPR_VAR@7188..71894824 NAME@7188..71894825 IDENT@7188..7189 "a"4826 L_BRACK@7189..7190 "["4827 EXPR_VAR@7190..71914828 NAME@7190..71914829 IDENT@7190..7191 "i"4830 R_BRACK@7191..7192 "]"4831 R_PAREN@7192..7193 ")"4832 WHITESPACE@7193..7194 " "4833 LT@7194..7195 "<"4834 WHITESPACE@7195..7196 " "4835 EXPR_APPLY@7196..72064836 EXPR_VAR@7196..72004837 NAME@7196..72004838 IDENT@7196..7200 "keyF"4839 ARGS_DESC@7200..72064840 L_PAREN@7200..7201 "("4841 ARG@7201..72054842 EXPR_INDEX_EXPR@7201..72054843 LHS_EXPR@7201..72024844 EXPR_VAR@7201..72024845 NAME@7201..72024846 IDENT@7201..7202 "b"4847 L_BRACK@7202..7203 "["4848 EXPR_VAR@7203..72044849 NAME@7203..72044850 IDENT@7203..7204 "j"4851 R_BRACK@7204..7205 "]"4852 R_PAREN@7205..7206 ")"4853 WHITESPACE@7206..7207 " "4854 THEN_KW@7207..7211 "then"4855 WHITESPACE@7211..7222 "\n "4856 TRUE_EXPR@7222..72664857 EXPR_APPLY@7222..72664858 EXPR_VAR@7222..72254859 NAME@7222..72254860 IDENT@7222..7225 "aux"4861 ARGS_DESC@7225..72664862 L_PAREN@7225..7226 "("4863 ARG@7226..72274864 EXPR_VAR@7226..72274865 NAME@7226..72274866 IDENT@7226..7227 "a"4867 COMMA@7227..7228 ","4868 WHITESPACE@7228..7229 " "4869 ARG@7229..72304870 EXPR_VAR@7229..72304871 NAME@7229..72304872 IDENT@7229..7230 "b"4873 COMMA@7230..7231 ","4874 WHITESPACE@7231..7232 " "4875 ARG@7232..72374876 EXPR_BINARY@7232..72374877 LHS_EXPR@7232..72334878 EXPR_VAR@7232..72334879 NAME@7232..72334880 IDENT@7232..7233 "i"4881 WHITESPACE@7233..7234 " "4882 PLUS@7234..7235 "+"4883 WHITESPACE@7235..7236 " "4884 EXPR_NUMBER@7236..72374885 FLOAT@7236..7237 "1"4886 COMMA@7237..7238 ","4887 WHITESPACE@7238..7239 " "4888 ARG@7239..72404889 EXPR_VAR@7239..72404890 NAME@7239..72404891 IDENT@7239..7240 "j"4892 COMMA@7240..7241 ","4893 WHITESPACE@7241..7242 " "4894 ARG@7242..72544895 EXPR_BINARY@7242..72544896 LHS_EXPR@7242..72454897 EXPR_VAR@7242..72454898 NAME@7242..72454899 IDENT@7242..7245 "acc"4900 WHITESPACE@7245..7246 " "4901 PLUS@7246..7247 "+"4902 WHITESPACE@7247..7248 " "4903 EXPR_ARRAY@7248..72544904 L_BRACK@7248..7249 "["4905 EXPR_INDEX_EXPR@7249..72534906 LHS_EXPR@7249..72504907 EXPR_VAR@7249..72504908 NAME@7249..72504909 IDENT@7249..7250 "a"4910 L_BRACK@7250..7251 "["4911 EXPR_VAR@7251..72524912 NAME@7251..72524913 IDENT@7251..7252 "i"4914 R_BRACK@7252..7253 "]"4915 R_BRACK@7253..7254 "]"4916 R_PAREN@7254..7255 ")"4917 WHITESPACE@7255..7256 " "4918 TAILSTRICT_KW@7256..7266 "tailstrict"4919 WHITESPACE@7266..7275 "\n "4920 ELSE_KW@7275..7279 "else"4921 WHITESPACE@7279..7290 "\n "4922 FALSE_EXPR@7290..73254923 EXPR_APPLY@7290..73254924 EXPR_VAR@7290..72934925 NAME@7290..72934926 IDENT@7290..7293 "aux"4927 ARGS_DESC@7293..73254928 L_PAREN@7293..7294 "("4929 ARG@7294..72954930 EXPR_VAR@7294..72954931 NAME@7294..72954932 IDENT@7294..7295 "a"4933 COMMA@7295..7296 ","4934 WHITESPACE@7296..7297 " "4935 ARG@7297..72984936 EXPR_VAR@7297..72984937 NAME@7297..72984938 IDENT@7297..7298 "b"4939 COMMA@7298..7299 ","4940 WHITESPACE@7299..7300 " "4941 ARG@7300..73014942 EXPR_VAR@7300..73014943 NAME@7300..73014944 IDENT@7300..7301 "i"4945 COMMA@7301..7302 ","4946 WHITESPACE@7302..7303 " "4947 ARG@7303..73084948 EXPR_BINARY@7303..73084949 LHS_EXPR@7303..73044950 EXPR_VAR@7303..73044951 NAME@7303..73044952 IDENT@7303..7304 "j"4953 WHITESPACE@7304..7305 " "4954 PLUS@7305..7306 "+"4955 WHITESPACE@7306..7307 " "4956 EXPR_NUMBER@7307..73084957 FLOAT@7307..7308 "1"4958 COMMA@7308..7309 ","4959 WHITESPACE@7309..7310 " "4960 ARG@7310..73134961 EXPR_VAR@7310..73134962 NAME@7310..73134963 IDENT@7310..7313 "acc"4964 R_PAREN@7313..7314 ")"4965 WHITESPACE@7314..7315 " "4966 TAILSTRICT_KW@7315..7325 "tailstrict"4967 SEMI@7325..7326 ";"4968 WHITESPACE@7326..7331 "\n "4969 EXPR_APPLY@7331..73614970 EXPR_VAR@7331..73344971 NAME@7331..73344972 IDENT@7331..7334 "aux"4973 ARGS_DESC@7334..73614974 L_PAREN@7334..7335 "("4975 ARG@7335..73364976 EXPR_VAR@7335..73364977 NAME@7335..73364978 IDENT@7335..7336 "a"4979 COMMA@7336..7337 ","4980 WHITESPACE@7337..7338 " "4981 ARG@7338..73394982 EXPR_VAR@7338..73394983 NAME@7338..73394984 IDENT@7338..7339 "b"4985 COMMA@7339..7340 ","4986 WHITESPACE@7340..7341 " "4987 ARG@7341..73424988 EXPR_NUMBER@7341..73424989 FLOAT@7341..7342 "0"4990 COMMA@7342..7343 ","4991 WHITESPACE@7343..7344 " "4992 ARG@7344..73454993 EXPR_NUMBER@7344..73454994 FLOAT@7344..7345 "0"4995 COMMA@7345..7346 ","4996 WHITESPACE@7346..7347 " "4997 ARG@7347..73494998 EXPR_ARRAY@7347..73494999 L_BRACK@7347..7348 "["5000 R_BRACK@7348..7349 "]"5001 R_PAREN@7349..7350 ")"5002 WHITESPACE@7350..7351 " "5003 TAILSTRICT_KW@7351..7361 "tailstrict"5004 COMMA@7361..7362 ","5005 WHITESPACE@7362..7366 "\n\n "5006 MEMBER_FIELD_METHOD@7366..81545007 FIELD_NAME_FIXED@7366..73765008 NAME@7366..73765009 IDENT@7366..7376 "mergePatch"5010 PARAMS_DESC@7376..73915011 L_PAREN@7376..7377 "("5012 PARAM@7377..73835013 DESTRUCT_FULL@7377..73835014 NAME@7377..73835015 IDENT@7377..7383 "target"5016 COMMA@7383..7384 ","5017 WHITESPACE@7384..7385 " "5018 PARAM@7385..73905019 DESTRUCT_FULL@7385..73905020 NAME@7385..73905021 IDENT@7385..7390 "patch"5022 R_PAREN@7390..7391 ")"5023 COLONCOLON@7391..7393 "::"5024 WHITESPACE@7393..7398 "\n "5025 EXPR_IF_THEN_ELSE@7398..81545026 IF_KW@7398..7400 "if"5027 WHITESPACE@7400..7401 " "5028 EXPR_APPLY@7401..74205029 EXPR_INDEX@7401..74135030 EXPR_VAR@7401..74045031 NAME@7401..74045032 IDENT@7401..7404 "std"5033 DOT@7404..7405 "."5034 NAME@7405..74135035 IDENT@7405..7413 "isObject"5036 ARGS_DESC@7413..74205037 L_PAREN@7413..7414 "("5038 ARG@7414..74195039 EXPR_VAR@7414..74195040 NAME@7414..74195041 IDENT@7414..7419 "patch"5042 R_PAREN@7419..7420 ")"5043 WHITESPACE@7420..7421 " "5044 THEN_KW@7421..7425 "then"5045 WHITESPACE@7425..7432 "\n "5046 STMT_LOCAL@7432..75065047 LOCAL_KW@7432..7437 "local"5048 WHITESPACE@7437..7438 " "5049 BIND_DESTRUCT@7438..75055050 DESTRUCT_FULL@7438..74515051 NAME@7438..74515052 IDENT@7438..7451 "target_object"5053 WHITESPACE@7451..7452 " "5054 ASSIGN@7452..7453 "="5055 WHITESPACE@7453..7462 "\n "5056 EXPR_IF_THEN_ELSE@7462..75055057 IF_KW@7462..7464 "if"5058 WHITESPACE@7464..7465 " "5059 EXPR_APPLY@7465..74855060 EXPR_INDEX@7465..74775061 EXPR_VAR@7465..74685062 NAME@7465..74685063 IDENT@7465..7468 "std"5064 DOT@7468..7469 "."5065 NAME@7469..74775066 IDENT@7469..7477 "isObject"5067 ARGS_DESC@7477..74855068 L_PAREN@7477..7478 "("5069 ARG@7478..74845070 EXPR_VAR@7478..74845071 NAME@7478..74845072 IDENT@7478..7484 "target"5073 R_PAREN@7484..7485 ")"5074 WHITESPACE@7485..7486 " "5075 THEN_KW@7486..7490 "then"5076 WHITESPACE@7490..7491 " "5077 TRUE_EXPR@7491..74975078 EXPR_VAR@7491..74975079 NAME@7491..74975080 IDENT@7491..7497 "target"5081 WHITESPACE@7497..7498 " "5082 ELSE_KW@7498..7502 "else"5083 WHITESPACE@7502..7503 " "5084 FALSE_EXPR@7503..75055085 EXPR_OBJECT@7503..75055086 OBJ_BODY_MEMBER_LIST@7503..75055087 L_BRACE@7503..7504 "{"5088 R_BRACE@7504..7505 "}"5089 SEMI@7505..7506 ";"5090 WHITESPACE@7506..7514 "\n\n "5091 STMT_LOCAL@7514..76205092 LOCAL_KW@7514..7519 "local"5093 WHITESPACE@7519..7520 " "5094 BIND_DESTRUCT@7520..76195095 DESTRUCT_FULL@7520..75335096 NAME@7520..75335097 IDENT@7520..7533 "target_fields"5098 WHITESPACE@7533..7534 " "5099 ASSIGN@7534..7535 "="5100 WHITESPACE@7535..7544 "\n "5101 EXPR_IF_THEN_ELSE@7544..76195102 IF_KW@7544..7546 "if"5103 WHITESPACE@7546..7547 " "5104 EXPR_APPLY@7547..75745105 EXPR_INDEX@7547..75595106 EXPR_VAR@7547..75505107 NAME@7547..75505108 IDENT@7547..7550 "std"5109 DOT@7550..7551 "."5110 NAME@7551..75595111 IDENT@7551..7559 "isObject"5112 ARGS_DESC@7559..75745113 L_PAREN@7559..7560 "("5114 ARG@7560..75735115 EXPR_VAR@7560..75735116 NAME@7560..75735117 IDENT@7560..7573 "target_object"5118 R_PAREN@7573..7574 ")"5119 WHITESPACE@7574..7575 " "5120 THEN_KW@7575..7579 "then"5121 WHITESPACE@7579..7580 " "5122 TRUE_EXPR@7580..76115123 EXPR_APPLY@7580..76115124 EXPR_INDEX@7580..75965125 EXPR_VAR@7580..75835126 NAME@7580..75835127 IDENT@7580..7583 "std"5128 DOT@7583..7584 "."5129 NAME@7584..75965130 IDENT@7584..7596 "objectFields"5131 ARGS_DESC@7596..76115132 L_PAREN@7596..7597 "("5133 ARG@7597..76105134 EXPR_VAR@7597..76105135 NAME@7597..76105136 IDENT@7597..7610 "target_object"5137 R_PAREN@7610..7611 ")"5138 WHITESPACE@7611..7612 " "5139 ELSE_KW@7612..7616 "else"5140 WHITESPACE@7616..7617 " "5141 FALSE_EXPR@7617..76195142 EXPR_ARRAY@7617..76195143 L_BRACK@7617..7618 "["5144 R_BRACK@7618..7619 "]"5145 SEMI@7619..7620 ";"5146 WHITESPACE@7620..7628 "\n\n "5147 STMT_LOCAL@7628..77055148 LOCAL_KW@7628..7633 "local"5149 WHITESPACE@7633..7634 " "5150 BIND_DESTRUCT@7634..77045151 DESTRUCT_FULL@7634..76455152 NAME@7634..76455153 IDENT@7634..7645 "null_fields"5154 WHITESPACE@7645..7646 " "5155 ASSIGN@7646..7647 "="5156 WHITESPACE@7647..7648 " "5157 EXPR_ARRAY_COMP@7648..77045158 L_BRACK@7648..7649 "["5159 EXPR_VAR@7649..76505160 NAME@7649..76505161 IDENT@7649..7650 "k"5162 WHITESPACE@7650..7651 " "5163 FOR_SPEC@7651..76835164 FOR_KW@7651..7654 "for"5165 WHITESPACE@7654..7655 " "5166 NAME@7655..76565167 IDENT@7655..7656 "k"5168 WHITESPACE@7656..7657 " "5169 IN_KW@7657..7659 "in"5170 WHITESPACE@7659..7660 " "5171 EXPR_APPLY@7660..76835172 EXPR_INDEX@7660..76765173 EXPR_VAR@7660..76635174 NAME@7660..76635175 IDENT@7660..7663 "std"5176 DOT@7663..7664 "."5177 NAME@7664..76765178 IDENT@7664..7676 "objectFields"5179 ARGS_DESC@7676..76835180 L_PAREN@7676..7677 "("5181 ARG@7677..76825182 EXPR_VAR@7677..76825183 NAME@7677..76825184 IDENT@7677..7682 "patch"5185 R_PAREN@7682..7683 ")"5186 WHITESPACE@7683..7684 " "5187 IF_SPEC@7684..77035188 IF_KW@7684..7686 "if"5189 WHITESPACE@7686..7687 " "5190 EXPR_BINARY@7687..77035191 LHS_EXPR@7687..76955192 EXPR_INDEX_EXPR@7687..76955193 LHS_EXPR@7687..76925194 EXPR_VAR@7687..76925195 NAME@7687..76925196 IDENT@7687..7692 "patch"5197 L_BRACK@7692..7693 "["5198 EXPR_VAR@7693..76945199 NAME@7693..76945200 IDENT@7693..7694 "k"5201 R_BRACK@7694..7695 "]"5202 WHITESPACE@7695..7696 " "5203 EQ@7696..7698 "=="5204 WHITESPACE@7698..7699 " "5205 EXPR_LITERAL@7699..77035206 NULL_KW@7699..7703 "null"5207 R_BRACK@7703..7704 "]"5208 SEMI@7704..7705 ";"5209 WHITESPACE@7705..7712 "\n "5210 STMT_LOCAL@7712..77855211 LOCAL_KW@7712..7717 "local"5212 WHITESPACE@7717..7718 " "5213 BIND_DESTRUCT@7718..77845214 DESTRUCT_FULL@7718..77295215 NAME@7718..77295216 IDENT@7718..7729 "both_fields"5217 WHITESPACE@7729..7730 " "5218 ASSIGN@7730..7731 "="5219 WHITESPACE@7731..7732 " "5220 EXPR_APPLY@7732..77845221 EXPR_INDEX@7732..77445222 EXPR_VAR@7732..77355223 NAME@7732..77355224 IDENT@7732..7735 "std"5225 DOT@7735..7736 "."5226 NAME@7736..77445227 IDENT@7736..7744 "setUnion"5228 ARGS_DESC@7744..77845229 L_PAREN@7744..7745 "("5230 ARG@7745..77585231 EXPR_VAR@7745..77585232 NAME@7745..77585233 IDENT@7745..7758 "target_fields"5234 COMMA@7758..7759 ","5235 WHITESPACE@7759..7760 " "5236 ARG@7760..77835237 EXPR_APPLY@7760..77835238 EXPR_INDEX@7760..77765239 EXPR_VAR@7760..77635240 NAME@7760..77635241 IDENT@7760..7763 "std"5242 DOT@7763..7764 "."5243 NAME@7764..77765244 IDENT@7764..7776 "objectFields"5245 ARGS_DESC@7776..77835246 L_PAREN@7776..7777 "("5247 ARG@7777..77825248 EXPR_VAR@7777..77825249 NAME@7777..77825250 IDENT@7777..7782 "patch"5251 R_PAREN@7782..7783 ")"5252 R_PAREN@7783..7784 ")"5253 SEMI@7784..7785 ";"5254 WHITESPACE@7785..7793 "\n\n "5255 TRUE_EXPR@7793..81335256 EXPR_OBJECT@7793..81335257 OBJ_BODY_COMP@7793..81335258 L_BRACE@7793..7794 "{"5259 WHITESPACE@7794..7803 "\n "5260 MEMBER_FIELD_NORMAL@7803..80705261 FIELD_NAME_DYNAMIC@7803..78065262 L_BRACK@7803..7804 "["5263 EXPR_VAR@7804..78055264 NAME@7804..78055265 IDENT@7804..7805 "k"5266 R_BRACK@7805..7806 "]"5267 COLON@7806..7807 ":"5268 WHITESPACE@7807..7818 "\n "5269 EXPR_IF_THEN_ELSE@7818..80705270 IF_KW@7818..7820 "if"5271 WHITESPACE@7820..7821 " "5272 EXPR_UNARY@7821..78455273 NOT@7821..7822 "!"5274 EXPR_APPLY@7822..78455275 EXPR_INDEX@7822..78355276 EXPR_VAR@7822..78255277 NAME@7822..78255278 IDENT@7822..7825 "std"5279 DOT@7825..7826 "."5280 NAME@7826..78355281 IDENT@7826..7835 "objectHas"5282 ARGS_DESC@7835..78455283 L_PAREN@7835..7836 "("5284 ARG@7836..78415285 EXPR_VAR@7836..78415286 NAME@7836..78415287 IDENT@7836..7841 "patch"5288 COMMA@7841..7842 ","5289 WHITESPACE@7842..7843 " "5290 ARG@7843..78445291 EXPR_VAR@7843..78445292 NAME@7843..78445293 IDENT@7843..7844 "k"5294 R_PAREN@7844..7845 ")"5295 WHITESPACE@7845..7846 " "5296 THEN_KW@7846..7850 "then"5297 WHITESPACE@7850..7863 "\n "5298 TRUE_EXPR@7863..78795299 EXPR_INDEX_EXPR@7863..78795300 LHS_EXPR@7863..78765301 EXPR_VAR@7863..78765302 NAME@7863..78765303 IDENT@7863..7876 "target_object"5304 L_BRACK@7876..7877 "["5305 EXPR_VAR@7877..78785306 NAME@7877..78785307 IDENT@7877..7878 "k"5308 R_BRACK@7878..7879 "]"5309 WHITESPACE@7879..7890 "\n "5310 ELSE_KW@7890..7894 "else"5311 WHITESPACE@7894..7895 " "5312 FALSE_EXPR@7895..80705313 EXPR_IF_THEN_ELSE@7895..80705314 IF_KW@7895..7897 "if"5315 WHITESPACE@7897..7898 " "5316 EXPR_UNARY@7898..79305317 NOT@7898..7899 "!"5318 EXPR_APPLY@7899..79305319 EXPR_INDEX@7899..79125320 EXPR_VAR@7899..79025321 NAME@7899..79025322 IDENT@7899..7902 "std"5323 DOT@7902..7903 "."5324 NAME@7903..79125325 IDENT@7903..7912 "objectHas"5326 ARGS_DESC@7912..79305327 L_PAREN@7912..7913 "("5328 ARG@7913..79265329 EXPR_VAR@7913..79265330 NAME@7913..79265331 IDENT@7913..7926 "target_object"5332 COMMA@7926..7927 ","5333 WHITESPACE@7927..7928 " "5334 ARG@7928..79295335 EXPR_VAR@7928..79295336 NAME@7928..79295337 IDENT@7928..7929 "k"5338 R_PAREN@7929..7930 ")"5339 WHITESPACE@7930..7931 " "5340 THEN_KW@7931..7935 "then"5341 WHITESPACE@7935..7948 "\n "5342 TRUE_EXPR@7948..79895343 EXPR_APPLY@7948..79895344 EXPR_INDEX@7948..79625345 EXPR_VAR@7948..79515346 NAME@7948..79515347 IDENT@7948..7951 "std"5348 DOT@7951..7952 "."5349 NAME@7952..79625350 IDENT@7952..7962 "mergePatch"5351 ARGS_DESC@7962..79895352 L_PAREN@7962..7963 "("5353 ARG@7963..79675354 EXPR_LITERAL@7963..79675355 NULL_KW@7963..7967 "null"5356 COMMA@7967..7968 ","5357 WHITESPACE@7968..7969 " "5358 ARG@7969..79775359 EXPR_INDEX_EXPR@7969..79775360 LHS_EXPR@7969..79745361 EXPR_VAR@7969..79745362 NAME@7969..79745363 IDENT@7969..7974 "patch"5364 L_BRACK@7974..7975 "["5365 EXPR_VAR@7975..79765366 NAME@7975..79765367 IDENT@7975..7976 "k"5368 R_BRACK@7976..7977 "]"5369 R_PAREN@7977..7978 ")"5370 WHITESPACE@7978..7979 " "5371 TAILSTRICT_KW@7979..7989 "tailstrict"5372 WHITESPACE@7989..8000 "\n "5373 ELSE_KW@8000..8004 "else"5374 WHITESPACE@8004..8017 "\n "5375 FALSE_EXPR@8017..80705376 EXPR_APPLY@8017..80705377 EXPR_INDEX@8017..80315378 EXPR_VAR@8017..80205379 NAME@8017..80205380 IDENT@8017..8020 "std"5381 DOT@8020..8021 "."5382 NAME@8021..80315383 IDENT@8021..8031 "mergePatch"5384 ARGS_DESC@8031..80705385 L_PAREN@8031..8032 "("5386 ARG@8032..80485387 EXPR_INDEX_EXPR@8032..80485388 LHS_EXPR@8032..80455389 EXPR_VAR@8032..80455390 NAME@8032..80455391 IDENT@8032..8045 "target_object"5392 L_BRACK@8045..8046 "["5393 EXPR_VAR@8046..80475394 NAME@8046..80475395 IDENT@8046..8047 "k"5396 R_BRACK@8047..8048 "]"5397 COMMA@8048..8049 ","5398 WHITESPACE@8049..8050 " "5399 ARG@8050..80585400 EXPR_INDEX_EXPR@8050..80585401 LHS_EXPR@8050..80555402 EXPR_VAR@8050..80555403 NAME@8050..80555404 IDENT@8050..8055 "patch"5405 L_BRACK@8055..8056 "["5406 EXPR_VAR@8056..80575407 NAME@8056..80575408 IDENT@8056..8057 "k"5409 R_BRACK@8057..8058 "]"5410 R_PAREN@8058..8059 ")"5411 WHITESPACE@8059..8060 " "5412 TAILSTRICT_KW@8060..8070 "tailstrict"5413 WHITESPACE@8070..8079 "\n "5414 FOR_SPEC@8079..81255415 FOR_KW@8079..8082 "for"5416 WHITESPACE@8082..8083 " "5417 NAME@8083..80845418 IDENT@8083..8084 "k"5419 WHITESPACE@8084..8085 " "5420 IN_KW@8085..8087 "in"5421 WHITESPACE@8087..8088 " "5422 EXPR_APPLY@8088..81255423 EXPR_INDEX@8088..80995424 EXPR_VAR@8088..80915425 NAME@8088..80915426 IDENT@8088..8091 "std"5427 DOT@8091..8092 "."5428 NAME@8092..80995429 IDENT@8092..8099 "setDiff"5430 ARGS_DESC@8099..81255431 L_PAREN@8099..8100 "("5432 ARG@8100..81115433 EXPR_VAR@8100..81115434 NAME@8100..81115435 IDENT@8100..8111 "both_fields"5436 COMMA@8111..8112 ","5437 WHITESPACE@8112..8113 " "5438 ARG@8113..81245439 EXPR_VAR@8113..81245440 NAME@8113..81245441 IDENT@8113..8124 "null_fields"5442 R_PAREN@8124..8125 ")"5443 WHITESPACE@8125..8132 "\n "5444 R_BRACE@8132..8133 "}"5445 WHITESPACE@8133..8138 "\n "5446 ELSE_KW@8138..8142 "else"5447 WHITESPACE@8142..8149 "\n "5448 FALSE_EXPR@8149..81545449 EXPR_VAR@8149..81545450 NAME@8149..81545451 IDENT@8149..8154 "patch"5452 COMMA@8154..8155 ","5453 WHITESPACE@8155..8159 "\n\n "5454 MEMBER_FIELD_METHOD@8159..82655455 FIELD_NAME_FIXED@8159..81625456 NAME@8159..81625457 IDENT@8159..8162 "get"5458 PARAMS_DESC@8162..81995459 L_PAREN@8162..8163 "("5460 PARAM@8163..81645461 DESTRUCT_FULL@8163..81645462 NAME@8163..81645463 IDENT@8163..8164 "o"5464 COMMA@8164..8165 ","5465 WHITESPACE@8165..8166 " "5466 PARAM@8166..81675467 DESTRUCT_FULL@8166..81675468 NAME@8166..81675469 IDENT@8166..8167 "f"5470 COMMA@8167..8168 ","5471 WHITESPACE@8168..8169 " "5472 PARAM@8169..81815473 DESTRUCT_FULL@8169..81765474 NAME@8169..81765475 IDENT@8169..8176 "default"5476 ASSIGN@8176..8177 "="5477 EXPR_LITERAL@8177..81815478 NULL_KW@8177..8181 "null"5479 COMMA@8181..8182 ","5480 WHITESPACE@8182..8183 " "5481 PARAM@8183..81985482 DESTRUCT_FULL@8183..81935483 NAME@8183..81935484 IDENT@8183..8193 "inc_hidden"5485 ASSIGN@8193..8194 "="5486 EXPR_LITERAL@8194..81985487 TRUE_KW@8194..8198 "true"5488 R_PAREN@8198..8199 ")"5489 COLONCOLON@8199..8201 "::"5490 WHITESPACE@8201..8206 "\n "5491 EXPR_IF_THEN_ELSE@8206..82655492 IF_KW@8206..8208 "if"5493 WHITESPACE@8208..8209 " "5494 EXPR_APPLY@8209..82425495 EXPR_INDEX@8209..82245496 EXPR_VAR@8209..82125497 NAME@8209..82125498 IDENT@8209..8212 "std"5499 DOT@8212..8213 "."5500 NAME@8213..82245501 IDENT@8213..8224 "objectHasEx"5502 ARGS_DESC@8224..82425503 L_PAREN@8224..8225 "("5504 ARG@8225..82265505 EXPR_VAR@8225..82265506 NAME@8225..82265507 IDENT@8225..8226 "o"5508 COMMA@8226..8227 ","5509 WHITESPACE@8227..8228 " "5510 ARG@8228..82295511 EXPR_VAR@8228..82295512 NAME@8228..82295513 IDENT@8228..8229 "f"5514 COMMA@8229..8230 ","5515 WHITESPACE@8230..8231 " "5516 ARG@8231..82415517 EXPR_VAR@8231..82415518 NAME@8231..82415519 IDENT@8231..8241 "inc_hidden"5520 R_PAREN@8241..8242 ")"5521 WHITESPACE@8242..8243 " "5522 THEN_KW@8243..8247 "then"5523 WHITESPACE@8247..8248 " "5524 TRUE_EXPR@8248..82525525 EXPR_INDEX_EXPR@8248..82525526 LHS_EXPR@8248..82495527 EXPR_VAR@8248..82495528 NAME@8248..82495529 IDENT@8248..8249 "o"5530 L_BRACK@8249..8250 "["5531 EXPR_VAR@8250..82515532 NAME@8250..82515533 IDENT@8250..8251 "f"5534 R_BRACK@8251..8252 "]"5535 WHITESPACE@8252..8253 " "5536 ELSE_KW@8253..8257 "else"5537 WHITESPACE@8257..8258 " "5538 FALSE_EXPR@8258..82655539 EXPR_VAR@8258..82655540 NAME@8258..82655541 IDENT@8258..8265 "default"5542 COMMA@8265..8266 ","5543 WHITESPACE@8266..8270 "\n\n "5544 MEMBER_FIELD_METHOD@8270..83205545 FIELD_NAME_FIXED@8270..82825546 NAME@8270..82825547 IDENT@8270..8282 "objectFields"5548 PARAMS_DESC@8282..82855549 L_PAREN@8282..8283 "("5550 PARAM@8283..82845551 DESTRUCT_FULL@8283..82845552 NAME@8283..82845553 IDENT@8283..8284 "o"5554 R_PAREN@8284..8285 ")"5555 COLONCOLON@8285..8287 "::"5556 WHITESPACE@8287..8292 "\n "5557 EXPR_APPLY@8292..83205558 EXPR_INDEX@8292..83105559 EXPR_VAR@8292..82955560 NAME@8292..82955561 IDENT@8292..8295 "std"5562 DOT@8295..8296 "."5563 NAME@8296..83105564 IDENT@8296..8310 "objectFieldsEx"5565 ARGS_DESC@8310..83205566 L_PAREN@8310..8311 "("5567 ARG@8311..83125568 EXPR_VAR@8311..83125569 NAME@8311..83125570 IDENT@8311..8312 "o"5571 COMMA@8312..8313 ","5572 WHITESPACE@8313..8314 " "5573 ARG@8314..83195574 EXPR_LITERAL@8314..83195575 FALSE_KW@8314..8319 "false"5576 R_PAREN@8319..8320 ")"5577 COMMA@8320..8321 ","5578 WHITESPACE@8321..8325 "\n\n "5579 MEMBER_FIELD_METHOD@8325..83775580 FIELD_NAME_FIXED@8325..83405581 NAME@8325..83405582 IDENT@8325..8340 "objectFieldsAll"5583 PARAMS_DESC@8340..83435584 L_PAREN@8340..8341 "("5585 PARAM@8341..83425586 DESTRUCT_FULL@8341..83425587 NAME@8341..83425588 IDENT@8341..8342 "o"5589 R_PAREN@8342..8343 ")"5590 COLONCOLON@8343..8345 "::"5591 WHITESPACE@8345..8350 "\n "5592 EXPR_APPLY@8350..83775593 EXPR_INDEX@8350..83685594 EXPR_VAR@8350..83535595 NAME@8350..83535596 IDENT@8350..8353 "std"5597 DOT@8353..8354 "."5598 NAME@8354..83685599 IDENT@8354..8368 "objectFieldsEx"5600 ARGS_DESC@8368..83775601 L_PAREN@8368..8369 "("5602 ARG@8369..83705603 EXPR_VAR@8369..83705604 NAME@8369..83705605 IDENT@8369..8370 "o"5606 COMMA@8370..8371 ","5607 WHITESPACE@8371..8372 " "5608 ARG@8372..83765609 EXPR_LITERAL@8372..83765610 TRUE_KW@8372..8376 "true"5611 R_PAREN@8376..8377 ")"5612 COMMA@8377..8378 ","5613 WHITESPACE@8378..8382 "\n\n "5614 MEMBER_FIELD_METHOD@8382..84325615 FIELD_NAME_FIXED@8382..83915616 NAME@8382..83915617 IDENT@8382..8391 "objectHas"5618 PARAMS_DESC@8391..83975619 L_PAREN@8391..8392 "("5620 PARAM@8392..83935621 DESTRUCT_FULL@8392..83935622 NAME@8392..83935623 IDENT@8392..8393 "o"5624 COMMA@8393..8394 ","5625 WHITESPACE@8394..8395 " "5626 PARAM@8395..83965627 DESTRUCT_FULL@8395..83965628 NAME@8395..83965629 IDENT@8395..8396 "f"5630 R_PAREN@8396..8397 ")"5631 COLONCOLON@8397..8399 "::"5632 WHITESPACE@8399..8404 "\n "5633 EXPR_APPLY@8404..84325634 EXPR_INDEX@8404..84195635 EXPR_VAR@8404..84075636 NAME@8404..84075637 IDENT@8404..8407 "std"5638 DOT@8407..8408 "."5639 NAME@8408..84195640 IDENT@8408..8419 "objectHasEx"5641 ARGS_DESC@8419..84325642 L_PAREN@8419..8420 "("5643 ARG@8420..84215644 EXPR_VAR@8420..84215645 NAME@8420..84215646 IDENT@8420..8421 "o"5647 COMMA@8421..8422 ","5648 WHITESPACE@8422..8423 " "5649 ARG@8423..84245650 EXPR_VAR@8423..84245651 NAME@8423..84245652 IDENT@8423..8424 "f"5653 COMMA@8424..8425 ","5654 WHITESPACE@8425..8426 " "5655 ARG@8426..84315656 EXPR_LITERAL@8426..84315657 FALSE_KW@8426..8431 "false"5658 R_PAREN@8431..8432 ")"5659 COMMA@8432..8433 ","5660 WHITESPACE@8433..8437 "\n\n "5661 MEMBER_FIELD_METHOD@8437..84895662 FIELD_NAME_FIXED@8437..84495663 NAME@8437..84495664 IDENT@8437..8449 "objectHasAll"5665 PARAMS_DESC@8449..84555666 L_PAREN@8449..8450 "("5667 PARAM@8450..84515668 DESTRUCT_FULL@8450..84515669 NAME@8450..84515670 IDENT@8450..8451 "o"5671 COMMA@8451..8452 ","5672 WHITESPACE@8452..8453 " "5673 PARAM@8453..84545674 DESTRUCT_FULL@8453..84545675 NAME@8453..84545676 IDENT@8453..8454 "f"5677 R_PAREN@8454..8455 ")"5678 COLONCOLON@8455..8457 "::"5679 WHITESPACE@8457..8462 "\n "5680 EXPR_APPLY@8462..84895681 EXPR_INDEX@8462..84775682 EXPR_VAR@8462..84655683 NAME@8462..84655684 IDENT@8462..8465 "std"5685 DOT@8465..8466 "."5686 NAME@8466..84775687 IDENT@8466..8477 "objectHasEx"5688 ARGS_DESC@8477..84895689 L_PAREN@8477..8478 "("5690 ARG@8478..84795691 EXPR_VAR@8478..84795692 NAME@8478..84795693 IDENT@8478..8479 "o"5694 COMMA@8479..8480 ","5695 WHITESPACE@8480..8481 " "5696 ARG@8481..84825697 EXPR_VAR@8481..84825698 NAME@8481..84825699 IDENT@8481..8482 "f"5700 COMMA@8482..8483 ","5701 WHITESPACE@8483..8484 " "5702 ARG@8484..84885703 EXPR_LITERAL@8484..84885704 TRUE_KW@8484..8488 "true"5705 R_PAREN@8488..8489 ")"5706 COMMA@8489..8490 ","5707 WHITESPACE@8490..8494 "\n\n "5708 MEMBER_FIELD_METHOD@8494..85515709 FIELD_NAME_FIXED@8494..85065710 NAME@8494..85065711 IDENT@8494..8506 "objectValues"5712 PARAMS_DESC@8506..85095713 L_PAREN@8506..8507 "("5714 PARAM@8507..85085715 DESTRUCT_FULL@8507..85085716 NAME@8507..85085717 IDENT@8507..8508 "o"5718 R_PAREN@8508..8509 ")"5719 COLONCOLON@8509..8511 "::"5720 WHITESPACE@8511..8516 "\n "5721 EXPR_ARRAY_COMP@8516..85515722 L_BRACK@8516..8517 "["5723 EXPR_INDEX_EXPR@8517..85215724 LHS_EXPR@8517..85185725 EXPR_VAR@8517..85185726 NAME@8517..85185727 IDENT@8517..8518 "o"5728 L_BRACK@8518..8519 "["5729 EXPR_VAR@8519..85205730 NAME@8519..85205731 IDENT@8519..8520 "k"5732 R_BRACK@8520..8521 "]"5733 WHITESPACE@8521..8522 " "5734 FOR_SPEC@8522..85505735 FOR_KW@8522..8525 "for"5736 WHITESPACE@8525..8526 " "5737 NAME@8526..85275738 IDENT@8526..8527 "k"5739 WHITESPACE@8527..8528 " "5740 IN_KW@8528..8530 "in"5741 WHITESPACE@8530..8531 " "5742 EXPR_APPLY@8531..85505743 EXPR_INDEX@8531..85475744 EXPR_VAR@8531..85345745 NAME@8531..85345746 IDENT@8531..8534 "std"5747 DOT@8534..8535 "."5748 NAME@8535..85475749 IDENT@8535..8547 "objectFields"5750 ARGS_DESC@8547..85505751 L_PAREN@8547..8548 "("5752 ARG@8548..85495753 EXPR_VAR@8548..85495754 NAME@8548..85495755 IDENT@8548..8549 "o"5756 R_PAREN@8549..8550 ")"5757 R_BRACK@8550..8551 "]"5758 COMMA@8551..8552 ","5759 WHITESPACE@8552..8556 "\n\n "5760 MEMBER_FIELD_METHOD@8556..86195761 FIELD_NAME_FIXED@8556..85715762 NAME@8556..85715763 IDENT@8556..8571 "objectValuesAll"5764 PARAMS_DESC@8571..85745765 L_PAREN@8571..8572 "("5766 PARAM@8572..85735767 DESTRUCT_FULL@8572..85735768 NAME@8572..85735769 IDENT@8572..8573 "o"5770 R_PAREN@8573..8574 ")"5771 COLONCOLON@8574..8576 "::"5772 WHITESPACE@8576..8581 "\n "5773 EXPR_ARRAY_COMP@8581..86195774 L_BRACK@8581..8582 "["5775 EXPR_INDEX_EXPR@8582..85865776 LHS_EXPR@8582..85835777 EXPR_VAR@8582..85835778 NAME@8582..85835779 IDENT@8582..8583 "o"5780 L_BRACK@8583..8584 "["5781 EXPR_VAR@8584..85855782 NAME@8584..85855783 IDENT@8584..8585 "k"5784 R_BRACK@8585..8586 "]"5785 WHITESPACE@8586..8587 " "5786 FOR_SPEC@8587..86185787 FOR_KW@8587..8590 "for"5788 WHITESPACE@8590..8591 " "5789 NAME@8591..85925790 IDENT@8591..8592 "k"5791 WHITESPACE@8592..8593 " "5792 IN_KW@8593..8595 "in"5793 WHITESPACE@8595..8596 " "5794 EXPR_APPLY@8596..86185795 EXPR_INDEX@8596..86155796 EXPR_VAR@8596..85995797 NAME@8596..85995798 IDENT@8596..8599 "std"5799 DOT@8599..8600 "."5800 NAME@8600..86155801 IDENT@8600..8615 "objectFieldsAll"5802 ARGS_DESC@8615..86185803 L_PAREN@8615..8616 "("5804 ARG@8616..86175805 EXPR_VAR@8616..86175806 NAME@8616..86175807 IDENT@8616..8617 "o"5808 R_PAREN@8617..8618 ")"5809 R_BRACK@8618..8619 "]"5810 COMMA@8619..8620 ","5811 WHITESPACE@8620..8624 "\n\n "5812 MEMBER_FIELD_METHOD@8624..87585813 FIELD_NAME_FIXED@8624..86355814 NAME@8624..86355815 IDENT@8624..8635 "resolvePath"5816 PARAMS_DESC@8635..86415817 L_PAREN@8635..8636 "("5818 PARAM@8636..86375819 DESTRUCT_FULL@8636..86375820 NAME@8636..86375821 IDENT@8636..8637 "f"5822 COMMA@8637..8638 ","5823 WHITESPACE@8638..8639 " "5824 PARAM@8639..86405825 DESTRUCT_FULL@8639..86405826 NAME@8639..86405827 IDENT@8639..8640 "r"5828 R_PAREN@8640..8641 ")"5829 COLONCOLON@8641..8643 "::"5830 WHITESPACE@8643..8648 "\n "5831 STMT_LOCAL@8648..86785832 LOCAL_KW@8648..8653 "local"5833 WHITESPACE@8653..8654 " "5834 BIND_DESTRUCT@8654..86775835 DESTRUCT_FULL@8654..86575836 NAME@8654..86575837 IDENT@8654..8657 "arr"5838 WHITESPACE@8657..8658 " "5839 ASSIGN@8658..8659 "="5840 WHITESPACE@8659..8660 " "5841 EXPR_APPLY@8660..86775842 EXPR_INDEX@8660..86695843 EXPR_VAR@8660..86635844 NAME@8660..86635845 IDENT@8660..8663 "std"5846 DOT@8663..8664 "."5847 NAME@8664..86695848 IDENT@8664..8669 "split"5849 ARGS_DESC@8669..86775850 L_PAREN@8669..8670 "("5851 ARG@8670..86715852 EXPR_VAR@8670..86715853 NAME@8670..86715854 IDENT@8670..8671 "f"5855 COMMA@8671..8672 ","5856 WHITESPACE@8672..8673 " "5857 ARG@8673..86765858 EXPR_STRING@8673..86765859 STRING_SINGLE@8673..8676 "'/'"5860 R_PAREN@8676..8677 ")"5861 SEMI@8677..8678 ";"5862 WHITESPACE@8678..8683 "\n "5863 EXPR_APPLY@8683..87585864 EXPR_INDEX@8683..86915865 EXPR_VAR@8683..86865866 NAME@8683..86865867 IDENT@8683..8686 "std"5868 DOT@8686..8687 "."5869 NAME@8687..86915870 IDENT@8687..8691 "join"5871 ARGS_DESC@8691..87585872 L_PAREN@8691..8692 "("5873 ARG@8692..86955874 EXPR_STRING@8692..86955875 STRING_SINGLE@8692..8695 "'/'"5876 COMMA@8695..8696 ","5877 WHITESPACE@8696..8697 " "5878 ARG@8697..87575879 EXPR_BINARY@8697..87575880 LHS_EXPR@8697..87515881 EXPR_APPLY@8697..87515882 EXPR_INDEX@8697..87105883 EXPR_VAR@8697..87005884 NAME@8697..87005885 IDENT@8697..8700 "std"5886 DOT@8700..8701 "."5887 NAME@8701..87105888 IDENT@8701..8710 "makeArray"5889 ARGS_DESC@8710..87515890 L_PAREN@8710..8711 "("5891 ARG@8711..87305892 EXPR_BINARY@8711..87305893 LHS_EXPR@8711..87265894 EXPR_APPLY@8711..87265895 EXPR_INDEX@8711..87215896 EXPR_VAR@8711..87145897 NAME@8711..87145898 IDENT@8711..8714 "std"5899 DOT@8714..8715 "."5900 NAME@8715..87215901 IDENT@8715..8721 "length"5902 ARGS_DESC@8721..87265903 L_PAREN@8721..8722 "("5904 ARG@8722..87255905 EXPR_VAR@8722..87255906 NAME@8722..87255907 IDENT@8722..8725 "arr"5908 R_PAREN@8725..8726 ")"5909 WHITESPACE@8726..8727 " "5910 MINUS@8727..8728 "-"5911 WHITESPACE@8728..8729 " "5912 EXPR_NUMBER@8729..87305913 FLOAT@8729..8730 "1"5914 COMMA@8730..8731 ","5915 WHITESPACE@8731..8732 " "5916 ARG@8732..87505917 EXPR_FUNCTION@8732..87505918 FUNCTION_KW@8732..8740 "function"5919 PARAMS_DESC@8740..87435920 L_PAREN@8740..8741 "("5921 PARAM@8741..87425922 DESTRUCT_FULL@8741..87425923 NAME@8741..87425924 IDENT@8741..8742 "i"5925 R_PAREN@8742..8743 ")"5926 WHITESPACE@8743..8744 " "5927 EXPR_INDEX_EXPR@8744..87505928 LHS_EXPR@8744..87475929 EXPR_VAR@8744..87475930 NAME@8744..87475931 IDENT@8744..8747 "arr"5932 L_BRACK@8747..8748 "["5933 EXPR_VAR@8748..87495934 NAME@8748..87495935 IDENT@8748..8749 "i"5936 R_BRACK@8749..8750 "]"5937 R_PAREN@8750..8751 ")"5938 WHITESPACE@8751..8752 " "5939 PLUS@8752..8753 "+"5940 WHITESPACE@8753..8754 " "5941 EXPR_ARRAY@8754..87575942 L_BRACK@8754..8755 "["5943 EXPR_VAR@8755..87565944 NAME@8755..87565945 IDENT@8755..8756 "r"5946 R_BRACK@8756..8757 "]"5947 R_PAREN@8757..8758 ")"5948 COMMA@8758..8759 ","5949 WHITESPACE@8759..8763 "\n\n "5950 MEMBER_FIELD_METHOD@8763..92165951 FIELD_NAME_FIXED@8763..87685952 NAME@8763..87685953 IDENT@8763..8768 "prune"5954 PARAMS_DESC@8768..87715955 L_PAREN@8768..8769 "("5956 PARAM@8769..87705957 DESTRUCT_FULL@8769..87705958 NAME@8769..87705959 IDENT@8769..8770 "a"5960 R_PAREN@8770..8771 ")"5961 COLONCOLON@8771..8773 "::"5962 WHITESPACE@8773..8778 "\n "5963 STMT_LOCAL@8778..89825964 LOCAL_KW@8778..8783 "local"5965 WHITESPACE@8783..8784 " "5966 BIND_FUNCTION@8784..89815967 NAME@8784..87935968 IDENT@8784..8793 "isContent"5969 PARAMS_DESC@8793..87965970 L_PAREN@8793..8794 "("5971 PARAM@8794..87955972 DESTRUCT_FULL@8794..87955973 NAME@8794..87955974 IDENT@8794..8795 "b"5975 R_PAREN@8795..8796 ")"5976 WHITESPACE@8796..8797 " "5977 ASSIGN@8797..8798 "="5978 WHITESPACE@8798..8805 "\n "5979 EXPR_IF_THEN_ELSE@8805..89815980 IF_KW@8805..8807 "if"5981 WHITESPACE@8807..8808 " "5982 EXPR_BINARY@8808..88175983 LHS_EXPR@8808..88095984 EXPR_VAR@8808..88095985 NAME@8808..88095986 IDENT@8808..8809 "b"5987 WHITESPACE@8809..8810 " "5988 EQ@8810..8812 "=="5989 WHITESPACE@8812..8813 " "5990 EXPR_LITERAL@8813..88175991 NULL_KW@8813..8817 "null"5992 WHITESPACE@8817..8818 " "5993 THEN_KW@8818..8822 "then"5994 WHITESPACE@8822..8831 "\n "5995 TRUE_EXPR@8831..88365996 EXPR_LITERAL@8831..88365997 FALSE_KW@8831..8836 "false"5998 WHITESPACE@8836..8843 "\n "5999 ELSE_KW@8843..8847 "else"6000 WHITESPACE@8847..8848 " "6001 FALSE_EXPR@8848..89816002 EXPR_IF_THEN_ELSE@8848..89816003 IF_KW@8848..8850 "if"6004 WHITESPACE@8850..8851 " "6005 EXPR_APPLY@8851..88656006 EXPR_INDEX@8851..88626007 EXPR_VAR@8851..88546008 NAME@8851..88546009 IDENT@8851..8854 "std"6010 DOT@8854..8855 "."6011 NAME@8855..88626012 IDENT@8855..8862 "isArray"6013 ARGS_DESC@8862..88656014 L_PAREN@8862..8863 "("6015 ARG@8863..88646016 EXPR_VAR@8863..88646017 NAME@8863..88646018 IDENT@8863..8864 "b"6019 R_PAREN@8864..8865 ")"6020 WHITESPACE@8865..8866 " "6021 THEN_KW@8866..8870 "then"6022 WHITESPACE@8870..8879 "\n "6023 TRUE_EXPR@8879..88966024 EXPR_BINARY@8879..88966025 LHS_EXPR@8879..88926026 EXPR_APPLY@8879..88926027 EXPR_INDEX@8879..88896028 EXPR_VAR@8879..88826029 NAME@8879..88826030 IDENT@8879..8882 "std"6031 DOT@8882..8883 "."6032 NAME@8883..88896033 IDENT@8883..8889 "length"6034 ARGS_DESC@8889..88926035 L_PAREN@8889..8890 "("6036 ARG@8890..88916037 EXPR_VAR@8890..88916038 NAME@8890..88916039 IDENT@8890..8891 "b"6040 R_PAREN@8891..8892 ")"6041 WHITESPACE@8892..8893 " "6042 GT@8893..8894 ">"6043 WHITESPACE@8894..8895 " "6044 EXPR_NUMBER@8895..88966045 FLOAT@8895..8896 "0"6046 WHITESPACE@8896..8903 "\n "6047 ELSE_KW@8903..8907 "else"6048 WHITESPACE@8907..8908 " "6049 FALSE_EXPR@8908..89816050 EXPR_IF_THEN_ELSE@8908..89816051 IF_KW@8908..8910 "if"6052 WHITESPACE@8910..8911 " "6053 EXPR_APPLY@8911..89266054 EXPR_INDEX@8911..89236055 EXPR_VAR@8911..89146056 NAME@8911..89146057 IDENT@8911..8914 "std"6058 DOT@8914..8915 "."6059 NAME@8915..89236060 IDENT@8915..8923 "isObject"6061 ARGS_DESC@8923..89266062 L_PAREN@8923..8924 "("6063 ARG@8924..89256064 EXPR_VAR@8924..89256065 NAME@8924..89256066 IDENT@8924..8925 "b"6067 R_PAREN@8925..8926 ")"6068 WHITESPACE@8926..8927 " "6069 THEN_KW@8927..8931 "then"6070 WHITESPACE@8931..8940 "\n "6071 TRUE_EXPR@8940..89576072 EXPR_BINARY@8940..89576073 LHS_EXPR@8940..89536074 EXPR_APPLY@8940..89536075 EXPR_INDEX@8940..89506076 EXPR_VAR@8940..89436077 NAME@8940..89436078 IDENT@8940..8943 "std"6079 DOT@8943..8944 "."6080 NAME@8944..89506081 IDENT@8944..8950 "length"6082 ARGS_DESC@8950..89536083 L_PAREN@8950..8951 "("6084 ARG@8951..89526085 EXPR_VAR@8951..89526086 NAME@8951..89526087 IDENT@8951..8952 "b"6088 R_PAREN@8952..8953 ")"6089 WHITESPACE@8953..8954 " "6090 GT@8954..8955 ">"6091 WHITESPACE@8955..8956 " "6092 EXPR_NUMBER@8956..89576093 FLOAT@8956..8957 "0"6094 WHITESPACE@8957..8964 "\n "6095 ELSE_KW@8964..8968 "else"6096 WHITESPACE@8968..8977 "\n "6097 FALSE_EXPR@8977..89816098 EXPR_LITERAL@8977..89816099 TRUE_KW@8977..8981 "true"6100 SEMI@8981..8982 ";"6101 WHITESPACE@8982..8987 "\n "6102 EXPR_IF_THEN_ELSE@8987..92166103 IF_KW@8987..8989 "if"6104 WHITESPACE@8989..8990 " "6105 EXPR_APPLY@8990..90046106 EXPR_INDEX@8990..90016107 EXPR_VAR@8990..89936108 NAME@8990..89936109 IDENT@8990..8993 "std"6110 DOT@8993..8994 "."6111 NAME@8994..90016112 IDENT@8994..9001 "isArray"6113 ARGS_DESC@9001..90046114 L_PAREN@9001..9002 "("6115 ARG@9002..90036116 EXPR_VAR@9002..90036117 NAME@9002..90036118 IDENT@9002..9003 "a"6119 R_PAREN@9003..9004 ")"6120 WHITESPACE@9004..9005 " "6121 THEN_KW@9005..9009 "then"6122 WHITESPACE@9009..9016 "\n "6123 TRUE_EXPR@9016..90666124 EXPR_ARRAY_COMP@9016..90666125 L_BRACK@9016..9017 "["6126 EXPR_APPLY@9017..90296127 EXPR_INDEX@9017..90266128 EXPR_VAR@9017..90206129 NAME@9017..90206130 IDENT@9017..9020 "std"6131 DOT@9020..9021 "."6132 NAME@9021..90266133 IDENT@9021..9026 "prune"6134 ARGS_DESC@9026..90296135 L_PAREN@9026..9027 "("6136 ARG@9027..90286137 EXPR_VAR@9027..90286138 NAME@9027..90286139 IDENT@9027..9028 "x"6140 R_PAREN@9028..9029 ")"6141 WHITESPACE@9029..9030 " "6142 FOR_SPEC@9030..90406143 FOR_KW@9030..9033 "for"6144 WHITESPACE@9033..9034 " "6145 NAME@9034..90356146 IDENT@9034..9035 "x"6147 WHITESPACE@9035..9036 " "6148 IN_KW@9036..9038 "in"6149 WHITESPACE@9038..9039 " "6150 EXPR_VAR@9039..90406151 NAME@9039..90406152 IDENT@9039..9040 "a"6153 WHITESPACE@9040..9041 " "6154 IF_SPEC@9041..90656155 IF_KW@9041..9043 "if"6156 WHITESPACE@9043..9044 " "6157 EXPR_APPLY@9044..90656158 EXPR_VAR@9044..90536159 NAME@9044..90536160 IDENT@9044..9053 "isContent"6161 ARGS_DESC@9053..90656162 L_PAREN@9053..9054 "("6163 ARG@9054..90646164 EXPR_APPLY@9054..90646165 EXPR_INDEX@9054..90616166 EXPR_LITERAL@9054..90556167 DOLLAR@9054..9055 "$"6168 DOT@9055..9056 "."6169 NAME@9056..90616170 IDENT@9056..9061 "prune"6171 ARGS_DESC@9061..90646172 L_PAREN@9061..9062 "("6173 ARG@9062..90636174 EXPR_VAR@9062..90636175 NAME@9062..90636176 IDENT@9062..9063 "x"6177 R_PAREN@9063..9064 ")"6178 R_PAREN@9064..9065 ")"6179 R_BRACK@9065..9066 "]"6180 WHITESPACE@9066..9071 "\n "6181 ELSE_KW@9071..9075 "else"6182 WHITESPACE@9075..9076 " "6183 FALSE_EXPR@9076..92166184 EXPR_IF_THEN_ELSE@9076..92166185 IF_KW@9076..9078 "if"6186 WHITESPACE@9078..9079 " "6187 EXPR_APPLY@9079..90946188 EXPR_INDEX@9079..90916189 EXPR_VAR@9079..90826190 NAME@9079..90826191 IDENT@9079..9082 "std"6192 DOT@9082..9083 "."6193 NAME@9083..90916194 IDENT@9083..9091 "isObject"6195 ARGS_DESC@9091..90946196 L_PAREN@9091..9092 "("6197 ARG@9092..90936198 EXPR_VAR@9092..90936199 NAME@9092..90936200 IDENT@9092..9093 "a"6201 R_PAREN@9093..9094 ")"6202 WHITESPACE@9094..9095 " "6203 THEN_KW@9095..9099 "then"6204 WHITESPACE@9099..9100 " "6205 TRUE_EXPR@9100..92036206 EXPR_OBJECT@9100..92036207 OBJ_BODY_COMP@9100..92036208 L_BRACE@9100..9101 "{"6209 WHITESPACE@9101..9108 "\n "6210 MEMBER_FIELD_NORMAL@9108..91266211 FIELD_NAME_DYNAMIC@9108..91116212 L_BRACK@9108..9109 "["6213 EXPR_VAR@9109..91106214 NAME@9109..91106215 IDENT@9109..9110 "x"6216 R_BRACK@9110..9111 "]"6217 COLON@9111..9112 ":"6218 WHITESPACE@9112..9113 " "6219 EXPR_APPLY@9113..91266220 EXPR_INDEX@9113..91206221 EXPR_LITERAL@9113..91146222 DOLLAR@9113..9114 "$"6223 DOT@9114..9115 "."6224 NAME@9115..91206225 IDENT@9115..9120 "prune"6226 ARGS_DESC@9120..91266227 L_PAREN@9120..9121 "("6228 ARG@9121..91256229 EXPR_INDEX_EXPR@9121..91256230 LHS_EXPR@9121..91226231 EXPR_VAR@9121..91226232 NAME@9121..91226233 IDENT@9121..9122 "a"6234 L_BRACK@9122..9123 "["6235 EXPR_VAR@9123..91246236 NAME@9123..91246237 IDENT@9123..9124 "x"6238 R_BRACK@9124..9125 "]"6239 R_PAREN@9125..9126 ")"6240 WHITESPACE@9126..9133 "\n "6241 FOR_SPEC@9133..91616242 FOR_KW@9133..9136 "for"6243 WHITESPACE@9136..9137 " "6244 NAME@9137..91386245 IDENT@9137..9138 "x"6246 WHITESPACE@9138..9139 " "6247 IN_KW@9139..9141 "in"6248 WHITESPACE@9141..9142 " "6249 EXPR_APPLY@9142..91616250 EXPR_INDEX@9142..91586251 EXPR_VAR@9142..91456252 NAME@9142..91456253 IDENT@9142..9145 "std"6254 DOT@9145..9146 "."6255 NAME@9146..91586256 IDENT@9146..9158 "objectFields"6257 ARGS_DESC@9158..91616258 L_PAREN@9158..9159 "("6259 ARG@9159..91606260 EXPR_VAR@9159..91606261 NAME@9159..91606262 IDENT@9159..9160 "a"6263 R_PAREN@9160..9161 ")"6264 WHITESPACE@9161..9168 "\n "6265 IF_SPEC@9168..91976266 IF_KW@9168..9170 "if"6267 WHITESPACE@9170..9171 " "6268 EXPR_APPLY@9171..91976269 EXPR_VAR@9171..91806270 NAME@9171..91806271 IDENT@9171..9180 "isContent"6272 ARGS_DESC@9180..91976273 L_PAREN@9180..9181 "("6274 ARG@9181..91966275 EXPR_APPLY@9181..91966276 EXPR_INDEX@9181..91906277 EXPR_VAR@9181..91846278 NAME@9181..91846279 IDENT@9181..9184 "std"6280 DOT@9184..9185 "."6281 NAME@9185..91906282 IDENT@9185..9190 "prune"6283 ARGS_DESC@9190..91966284 L_PAREN@9190..9191 "("6285 ARG@9191..91956286 EXPR_INDEX_EXPR@9191..91956287 LHS_EXPR@9191..91926288 EXPR_VAR@9191..91926289 NAME@9191..91926290 IDENT@9191..9192 "a"6291 L_BRACK@9192..9193 "["6292 EXPR_VAR@9193..91946293 NAME@9193..91946294 IDENT@9193..9194 "x"6295 R_BRACK@9194..9195 "]"6296 R_PAREN@9195..9196 ")"6297 R_PAREN@9196..9197 ")"6298 WHITESPACE@9197..9202 "\n "6299 R_BRACE@9202..9203 "}"6300 WHITESPACE@9203..9204 " "6301 ELSE_KW@9204..9208 "else"6302 WHITESPACE@9208..9215 "\n "6303 FALSE_EXPR@9215..92166304 EXPR_VAR@9215..92166305 NAME@9215..92166306 IDENT@9215..9216 "a"6307 COMMA@9216..9217 ","6308 WHITESPACE@9217..9221 "\n\n "6309 MEMBER_FIELD_METHOD@9221..94366310 FIELD_NAME_FIXED@9221..92256311 NAME@9221..92256312 IDENT@9221..9225 "find"6313 PARAMS_DESC@9225..92376314 L_PAREN@9225..9226 "("6315 PARAM@9226..92316316 DESTRUCT_FULL@9226..92316317 NAME@9226..92316318 IDENT@9226..9231 "value"6319 COMMA@9231..9232 ","6320 WHITESPACE@9232..9233 " "6321 PARAM@9233..92366322 DESTRUCT_FULL@9233..92366323 NAME@9233..92366324 IDENT@9233..9236 "arr"6325 R_PAREN@9236..9237 ")"6326 COLONCOLON@9237..9239 "::"6327 WHITESPACE@9239..9244 "\n "6328 EXPR_IF_THEN_ELSE@9244..94366329 IF_KW@9244..9246 "if"6330 WHITESPACE@9246..9247 " "6331 EXPR_UNARY@9247..92646332 NOT@9247..9248 "!"6333 EXPR_APPLY@9248..92646334 EXPR_INDEX@9248..92596335 EXPR_VAR@9248..92516336 NAME@9248..92516337 IDENT@9248..9251 "std"6338 DOT@9251..9252 "."6339 NAME@9252..92596340 IDENT@9252..9259 "isArray"6341 ARGS_DESC@9259..92646342 L_PAREN@9259..9260 "("6343 ARG@9260..92636344 EXPR_VAR@9260..92636345 NAME@9260..92636346 IDENT@9260..9263 "arr"6347 R_PAREN@9263..9264 ")"6348 WHITESPACE@9264..9265 " "6349 THEN_KW@9265..9269 "then"6350 WHITESPACE@9269..9276 "\n "6351 TRUE_EXPR@9276..93466352 EXPR_ERROR@9276..93466353 ERROR_KW@9276..9281 "error"6354 WHITESPACE@9281..9282 " "6355 EXPR_BINARY@9282..93466356 LHS_EXPR@9282..93306357 EXPR_STRING@9282..93306358 STRING_SINGLE@9282..9330 "'find second paramete ..."6359 WHITESPACE@9330..9331 " "6360 PLUS@9331..9332 "+"6361 WHITESPACE@9332..9333 " "6362 EXPR_APPLY@9333..93466363 EXPR_INDEX@9333..93416364 EXPR_VAR@9333..93366365 NAME@9333..93366366 IDENT@9333..9336 "std"6367 DOT@9336..9337 "."6368 NAME@9337..93416369 IDENT@9337..9341 "type"6370 ARGS_DESC@9341..93466371 L_PAREN@9341..9342 "("6372 ARG@9342..93456373 EXPR_VAR@9342..93456374 NAME@9342..93456375 IDENT@9342..9345 "arr"6376 R_PAREN@9345..9346 ")"6377 WHITESPACE@9346..9351 "\n "6378 ELSE_KW@9351..9355 "else"6379 WHITESPACE@9355..9362 "\n "6380 FALSE_EXPR@9362..94366381 EXPR_APPLY@9362..94366382 EXPR_INDEX@9362..93726383 EXPR_VAR@9362..93656384 NAME@9362..93656385 IDENT@9362..9365 "std"6386 DOT@9365..9366 "."6387 NAME@9366..93726388 IDENT@9366..9372 "filter"6389 ARGS_DESC@9372..94366390 L_PAREN@9372..9373 "("6391 ARG@9373..94006392 EXPR_FUNCTION@9373..94006393 FUNCTION_KW@9373..9381 "function"6394 PARAMS_DESC@9381..93846395 L_PAREN@9381..9382 "("6396 PARAM@9382..93836397 DESTRUCT_FULL@9382..93836398 NAME@9382..93836399 IDENT@9382..9383 "i"6400 R_PAREN@9383..9384 ")"6401 WHITESPACE@9384..9385 " "6402 EXPR_BINARY@9385..94006403 LHS_EXPR@9385..93916404 EXPR_INDEX_EXPR@9385..93916405 LHS_EXPR@9385..93886406 EXPR_VAR@9385..93886407 NAME@9385..93886408 IDENT@9385..9388 "arr"6409 L_BRACK@9388..9389 "["6410 EXPR_VAR@9389..93906411 NAME@9389..93906412 IDENT@9389..9390 "i"6413 R_BRACK@9390..9391 "]"6414 WHITESPACE@9391..9392 " "6415 EQ@9392..9394 "=="6416 WHITESPACE@9394..9395 " "6417 EXPR_VAR@9395..94006418 NAME@9395..94006419 IDENT@9395..9400 "value"6420 COMMA@9400..9401 ","6421 WHITESPACE@9401..9402 " "6422 ARG@9402..94356423 EXPR_APPLY@9402..94356424 EXPR_INDEX@9402..94116425 EXPR_VAR@9402..94056426 NAME@9402..94056427 IDENT@9402..9405 "std"6428 DOT@9405..9406 "."6429 NAME@9406..94116430 IDENT@9406..9411 "range"6431 ARGS_DESC@9411..94356432 L_PAREN@9411..9412 "("6433 ARG@9412..94136434 EXPR_NUMBER@9412..94136435 FLOAT@9412..9413 "0"6436 COMMA@9413..9414 ","6437 WHITESPACE@9414..9415 " "6438 ARG@9415..94346439 EXPR_BINARY@9415..94346440 LHS_EXPR@9415..94306441 EXPR_APPLY@9415..94306442 EXPR_INDEX@9415..94256443 EXPR_VAR@9415..94186444 NAME@9415..94186445 IDENT@9415..9418 "std"6446 DOT@9418..9419 "."6447 NAME@9419..94256448 IDENT@9419..9425 "length"6449 ARGS_DESC@9425..94306450 L_PAREN@9425..9426 "("6451 ARG@9426..94296452 EXPR_VAR@9426..94296453 NAME@9426..94296454 IDENT@9426..9429 "arr"6455 R_PAREN@9429..9430 ")"6456 WHITESPACE@9430..9431 " "6457 MINUS@9431..9432 "-"6458 WHITESPACE@9432..9433 " "6459 EXPR_NUMBER@9433..94346460 FLOAT@9433..9434 "1"6461 R_PAREN@9434..9435 ")"6462 R_PAREN@9435..9436 ")"6463 COMMA@9436..9437 ","6464 WHITESPACE@9437..9441 "\n\n "6465 SINGLE_LINE_SLASH_COMMENT@9441..9451 "// Compat\n"6466 WHITESPACE@9451..9453 " "6467 MEMBER_FIELD_METHOD@9453..95636468 FIELD_NAME_FIXED@9453..94686469 NAME@9453..94686470 IDENT@9453..9468 "__compare_array"6471 PARAMS_DESC@9468..94806472 L_PAREN@9468..9469 "("6473 PARAM@9469..94736474 DESTRUCT_FULL@9469..94736475 NAME@9469..94736476 IDENT@9469..9473 "arr1"6477 COMMA@9473..9474 ","6478 WHITESPACE@9474..9475 " "6479 PARAM@9475..94796480 DESTRUCT_FULL@9475..94796481 NAME@9475..94796482 IDENT@9475..9479 "arr2"6483 R_PAREN@9479..9480 ")"6484 COLONCOLON@9480..9482 "::"6485 WHITESPACE@9482..9487 "\n "6486 EXPR_ASSERT@9487..95636487 ASSERTION@9487..95326488 ASSERT_KW@9487..9493 "assert"6489 WHITESPACE@9493..9494 " "6490 LHS_EXPR@9494..95326491 EXPR_BINARY@9494..95326492 LHS_EXPR@9494..95116493 EXPR_APPLY@9494..95116494 EXPR_INDEX@9494..95056495 EXPR_VAR@9494..94976496 NAME@9494..94976497 IDENT@9494..9497 "std"6498 DOT@9497..9498 "."6499 NAME@9498..95056500 IDENT@9498..9505 "isArray"6501 ARGS_DESC@9505..95116502 L_PAREN@9505..9506 "("6503 ARG@9506..95106504 EXPR_VAR@9506..95106505 NAME@9506..95106506 IDENT@9506..9510 "arr1"6507 R_PAREN@9510..9511 ")"6508 WHITESPACE@9511..9512 " "6509 AND@9512..9514 "&&"6510 WHITESPACE@9514..9515 " "6511 EXPR_APPLY@9515..95326512 EXPR_INDEX@9515..95266513 EXPR_VAR@9515..95186514 NAME@9515..95186515 IDENT@9515..9518 "std"6516 DOT@9518..9519 "."6517 NAME@9519..95266518 IDENT@9519..9526 "isArray"6519 ARGS_DESC@9526..95326520 L_PAREN@9526..9527 "("6521 ARG@9527..95316522 EXPR_VAR@9527..95316523 NAME@9527..95316524 IDENT@9527..9531 "arr2"6525 R_PAREN@9531..9532 ")"6526 SEMI@9532..9533 ";"6527 WHITESPACE@9533..9538 "\n "6528 EXPR_APPLY@9538..95636529 EXPR_INDEX@9538..95516530 EXPR_VAR@9538..95416531 NAME@9538..95416532 IDENT@9538..9541 "std"6533 DOT@9541..9542 "."6534 NAME@9542..95516535 IDENT@9542..9551 "__compare"6536 ARGS_DESC@9551..95636537 L_PAREN@9551..9552 "("6538 ARG@9552..95566539 EXPR_VAR@9552..95566540 NAME@9552..95566541 IDENT@9552..9556 "arr1"6542 COMMA@9556..9557 ","6543 WHITESPACE@9557..9558 " "6544 ARG@9558..95626545 EXPR_VAR@9558..95626546 NAME@9558..95626547 IDENT@9558..9562 "arr2"6548 R_PAREN@9562..9563 ")"6549 COMMA@9563..9564 ","6550 WHITESPACE@9564..9567 "\n "6551 MEMBER_FIELD_METHOD@9567..96316552 FIELD_NAME_FIXED@9567..95796553 NAME@9567..95796554 IDENT@9567..9579 "__array_less"6555 PARAMS_DESC@9579..95916556 L_PAREN@9579..9580 "("6557 PARAM@9580..95846558 DESTRUCT_FULL@9580..95846559 NAME@9580..95846560 IDENT@9580..9584 "arr1"6561 COMMA@9584..9585 ","6562 WHITESPACE@9585..9586 " "6563 PARAM@9586..95906564 DESTRUCT_FULL@9586..95906565 NAME@9586..95906566 IDENT@9586..9590 "arr2"6567 R_PAREN@9590..9591 ")"6568 COLONCOLON@9591..9593 "::"6569 WHITESPACE@9593..9594 " "6570 EXPR_BINARY@9594..96316571 LHS_EXPR@9594..96256572 EXPR_APPLY@9594..96256573 EXPR_INDEX@9594..96136574 EXPR_VAR@9594..95976575 NAME@9594..95976576 IDENT@9594..9597 "std"6577 DOT@9597..9598 "."6578 NAME@9598..96136579 IDENT@9598..9613 "__compare_array"6580 ARGS_DESC@9613..96256581 L_PAREN@9613..9614 "("6582 ARG@9614..96186583 EXPR_VAR@9614..96186584 NAME@9614..96186585 IDENT@9614..9618 "arr1"6586 COMMA@9618..9619 ","6587 WHITESPACE@9619..9620 " "6588 ARG@9620..96246589 EXPR_VAR@9620..96246590 NAME@9620..96246591 IDENT@9620..9624 "arr2"6592 R_PAREN@9624..9625 ")"6593 WHITESPACE@9625..9626 " "6594 EQ@9626..9628 "=="6595 WHITESPACE@9628..9629 " "6596 EXPR_UNARY@9629..96316597 MINUS@9629..9630 "-"6598 EXPR_NUMBER@9630..96316599 FLOAT@9630..9631 "1"6600 COMMA@9631..9632 ","6601 WHITESPACE@9632..9635 "\n "6602 MEMBER_FIELD_METHOD@9635..97016603 FIELD_NAME_FIXED@9635..96506604 NAME@9635..96506605 IDENT@9635..9650 "__array_greater"6606 PARAMS_DESC@9650..96626607 L_PAREN@9650..9651 "("6608 PARAM@9651..96556609 DESTRUCT_FULL@9651..96556610 NAME@9651..96556611 IDENT@9651..9655 "arr1"6612 COMMA@9655..9656 ","6613 WHITESPACE@9656..9657 " "6614 PARAM@9657..96616615 DESTRUCT_FULL@9657..96616616 NAME@9657..96616617 IDENT@9657..9661 "arr2"6618 R_PAREN@9661..9662 ")"6619 COLONCOLON@9662..9664 "::"6620 WHITESPACE@9664..9665 " "6621 EXPR_BINARY@9665..97016622 LHS_EXPR@9665..96966623 EXPR_APPLY@9665..96966624 EXPR_INDEX@9665..96846625 EXPR_VAR@9665..96686626 NAME@9665..96686627 IDENT@9665..9668 "std"6628 DOT@9668..9669 "."6629 NAME@9669..96846630 IDENT@9669..9684 "__compare_array"6631 ARGS_DESC@9684..96966632 L_PAREN@9684..9685 "("6633 ARG@9685..96896634 EXPR_VAR@9685..96896635 NAME@9685..96896636 IDENT@9685..9689 "arr1"6637 COMMA@9689..9690 ","6638 WHITESPACE@9690..9691 " "6639 ARG@9691..96956640 EXPR_VAR@9691..96956641 NAME@9691..96956642 IDENT@9691..9695 "arr2"6643 R_PAREN@9695..9696 ")"6644 WHITESPACE@9696..9697 " "6645 EQ@9697..9699 "=="6646 WHITESPACE@9699..9700 " "6647 EXPR_NUMBER@9700..97016648 FLOAT@9700..9701 "1"6649 COMMA@9701..9702 ","6650 WHITESPACE@9702..9705 "\n "6651 MEMBER_FIELD_METHOD@9705..97776652 FIELD_NAME_FIXED@9705..97266653 NAME@9705..97266654 IDENT@9705..9726 "__array_less_or_equal"6655 PARAMS_DESC@9726..97386656 L_PAREN@9726..9727 "("6657 PARAM@9727..97316658 DESTRUCT_FULL@9727..97316659 NAME@9727..97316660 IDENT@9727..9731 "arr1"6661 COMMA@9731..9732 ","6662 WHITESPACE@9732..9733 " "6663 PARAM@9733..97376664 DESTRUCT_FULL@9733..97376665 NAME@9733..97376666 IDENT@9733..9737 "arr2"6667 R_PAREN@9737..9738 ")"6668 COLONCOLON@9738..9740 "::"6669 WHITESPACE@9740..9741 " "6670 EXPR_BINARY@9741..97776671 LHS_EXPR@9741..97726672 EXPR_APPLY@9741..97726673 EXPR_INDEX@9741..97606674 EXPR_VAR@9741..97446675 NAME@9741..97446676 IDENT@9741..9744 "std"6677 DOT@9744..9745 "."6678 NAME@9745..97606679 IDENT@9745..9760 "__compare_array"6680 ARGS_DESC@9760..97726681 L_PAREN@9760..9761 "("6682 ARG@9761..97656683 EXPR_VAR@9761..97656684 NAME@9761..97656685 IDENT@9761..9765 "arr1"6686 COMMA@9765..9766 ","6687 WHITESPACE@9766..9767 " "6688 ARG@9767..97716689 EXPR_VAR@9767..97716690 NAME@9767..97716691 IDENT@9767..9771 "arr2"6692 R_PAREN@9771..9772 ")"6693 WHITESPACE@9772..9773 " "6694 LE@9773..9775 "<="6695 WHITESPACE@9775..9776 " "6696 EXPR_NUMBER@9776..97776697 FLOAT@9776..9777 "0"6698 COMMA@9777..9778 ","6699 WHITESPACE@9778..9781 "\n "6700 MEMBER_FIELD_METHOD@9781..98566701 FIELD_NAME_FIXED@9781..98056702 NAME@9781..98056703 IDENT@9781..9805 "__array_greater_or_equal"6704 PARAMS_DESC@9805..98176705 L_PAREN@9805..9806 "("6706 PARAM@9806..98106707 DESTRUCT_FULL@9806..98106708 NAME@9806..98106709 IDENT@9806..9810 "arr1"6710 COMMA@9810..9811 ","6711 WHITESPACE@9811..9812 " "6712 PARAM@9812..98166713 DESTRUCT_FULL@9812..98166714 NAME@9812..98166715 IDENT@9812..9816 "arr2"6716 R_PAREN@9816..9817 ")"6717 COLONCOLON@9817..9819 "::"6718 WHITESPACE@9819..9820 " "6719 EXPR_BINARY@9820..98566720 LHS_EXPR@9820..98516721 EXPR_APPLY@9820..98516722 EXPR_INDEX@9820..98396723 EXPR_VAR@9820..98236724 NAME@9820..98236725 IDENT@9820..9823 "std"6726 DOT@9823..9824 "."6727 NAME@9824..98396728 IDENT@9824..9839 "__compare_array"6729 ARGS_DESC@9839..98516730 L_PAREN@9839..9840 "("6731 ARG@9840..98446732 EXPR_VAR@9840..98446733 NAME@9840..98446734 IDENT@9840..9844 "arr1"6735 COMMA@9844..9845 ","6736 WHITESPACE@9845..9846 " "6737 ARG@9846..98506738 EXPR_VAR@9846..98506739 NAME@9846..98506740 IDENT@9846..9850 "arr2"6741 R_PAREN@9850..9851 ")"6742 WHITESPACE@9851..9852 " "6743 GE@9852..9854 ">="6744 WHITESPACE@9854..9855 " "6745 EXPR_NUMBER@9855..98566746 FLOAT@9855..9856 "0"6747 COMMA@9856..9857 ","6748 WHITESPACE@9857..9858 "\n"6749 R_BRACE@9858..9859 "}"6750 WHITESPACE@9859..9860 "\n"crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_indent.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_indent.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_indent.snap
@@ -3,6 +3,6 @@
expression: "|||\n"
---
SOURCE_FILE@0..4
- EXPR_STRING@0..4
- ERROR_STRING_BLOCK_MISSING_INDENT@0..4 "|||\n"
-
+ EXPR@0..4
+ EXPR_STRING@0..4
+ ERROR_STRING_BLOCK_MISSING_INDENT@0..4 "|||\n"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_indent_text.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_indent_text.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_indent_text.snap
@@ -3,6 +3,6 @@
expression: "|||\nhello\n"
---
SOURCE_FILE@0..10
- EXPR_STRING@0..10
- ERROR_STRING_BLOCK_MISSING_INDENT@0..10 "|||\nhello\n"
-
+ EXPR@0..10
+ EXPR_STRING@0..10
+ ERROR_STRING_BLOCK_MISSING_INDENT@0..10 "|||\nhello\n"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_newline.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_newline.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_newline.snap
@@ -3,6 +3,6 @@
expression: "|||hello\n"
---
SOURCE_FILE@0..9
- EXPR_STRING@0..9
- ERROR_STRING_BLOCK_MISSING_NEW_LINE@0..9 "|||hello\n"
-
+ EXPR@0..9
+ EXPR_STRING@0..9
+ ERROR_STRING_BLOCK_MISSING_NEW_LINE@0..9 "|||hello\n"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_termination.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_termination.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_termination.snap
@@ -3,6 +3,6 @@
expression: "|||\n\thello\n"
---
SOURCE_FILE@0..11
- EXPR_STRING@0..11
- ERROR_STRING_BLOCK_UNEXPECTED_END@0..11 "|||\n\thello\n"
-
+ EXPR@0..11
+ EXPR_STRING@0..11
+ ERROR_STRING_BLOCK_UNEXPECTED_END@0..11 "|||\n\thello\n"
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__unexpected_destruct.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__unexpected_destruct.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__unexpected_destruct.snap
@@ -3,22 +3,24 @@
expression: "local * = 1;\na\n"
---
SOURCE_FILE@0..15
- STMT_LOCAL@0..12
- LOCAL_KW@0..5 "local"
- WHITESPACE@5..6 " "
- BIND_DESTRUCT@6..11
- ERROR_UNEXPECTED_TOKEN@6..7
- MUL@6..7 "*"
- WHITESPACE@7..8 " "
- ASSIGN@8..9 "="
- WHITESPACE@9..10 " "
- EXPR_NUMBER@10..11
- FLOAT@10..11 "1"
- SEMI@11..12 ";"
- WHITESPACE@12..13 "\n"
- EXPR_VAR@13..14
- NAME@13..14
- IDENT@13..14 "a"
+ EXPR@0..14
+ STMT_LOCAL@0..12
+ LOCAL_KW@0..5 "local"
+ WHITESPACE@5..6 " "
+ BIND_DESTRUCT@6..11
+ ERROR_UNEXPECTED_TOKEN@6..7
+ MUL@6..7 "*"
+ WHITESPACE@7..8 " "
+ ASSIGN@8..9 "="
+ WHITESPACE@9..10 " "
+ EXPR@10..11
+ EXPR_NUMBER@10..11
+ FLOAT@10..11 "1"
+ SEMI@11..12 ";"
+ WHITESPACE@12..13 "\n"
+ EXPR_VAR@13..14
+ NAME@13..14
+ IDENT@13..14 "a"
WHITESPACE@14..15 "\n"
===
LocatedSyntaxError { error: Unexpected { expected: Named("destruction specifier"), found: MUL }, range: 6..7 }
crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__wrong_field_end.snapdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__wrong_field_end.snap
+++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__wrong_field_end.snap
@@ -3,33 +3,36 @@
expression: "{\n\ta: 1;\n\tb: 2;\n}\n"
---
SOURCE_FILE@0..18
- EXPR_OBJECT@0..17
- OBJ_BODY_MEMBER_LIST@0..17
- L_BRACE@0..1 "{"
- WHITESPACE@1..3 "\n\t"
- MEMBER_FIELD_NORMAL@3..7
- FIELD_NAME_FIXED@3..4
- NAME@3..4
- IDENT@3..4 "a"
- COLON@4..5 ":"
- WHITESPACE@5..6 " "
- EXPR_NUMBER@6..7
- FLOAT@6..7 "1"
- ERROR_UNEXPECTED_TOKEN@7..8
- SEMI@7..8 ";"
- WHITESPACE@8..10 "\n\t"
- MEMBER_FIELD_NORMAL@10..14
- FIELD_NAME_FIXED@10..11
- NAME@10..11
- IDENT@10..11 "b"
- COLON@11..12 ":"
- WHITESPACE@12..13 " "
- EXPR_NUMBER@13..14
- FLOAT@13..14 "2"
- ERROR_UNEXPECTED_TOKEN@14..15
- SEMI@14..15 ";"
- WHITESPACE@15..16 "\n"
- R_BRACE@16..17 "}"
+ EXPR@0..17
+ EXPR_OBJECT@0..17
+ OBJ_BODY_MEMBER_LIST@0..17
+ L_BRACE@0..1 "{"
+ WHITESPACE@1..3 "\n\t"
+ MEMBER_FIELD_NORMAL@3..7
+ FIELD_NAME_FIXED@3..4
+ NAME@3..4
+ IDENT@3..4 "a"
+ COLON@4..5 ":"
+ WHITESPACE@5..6 " "
+ EXPR@6..7
+ EXPR_NUMBER@6..7
+ FLOAT@6..7 "1"
+ ERROR_UNEXPECTED_TOKEN@7..8
+ SEMI@7..8 ";"
+ WHITESPACE@8..10 "\n\t"
+ MEMBER_FIELD_NORMAL@10..14
+ FIELD_NAME_FIXED@10..11
+ NAME@10..11
+ IDENT@10..11 "b"
+ COLON@11..12 ":"
+ WHITESPACE@12..13 " "
+ EXPR@13..14
+ EXPR_NUMBER@13..14
+ FLOAT@13..14 "2"
+ ERROR_UNEXPECTED_TOKEN@14..15
+ SEMI@14..15 ";"
+ WHITESPACE@15..16 "\n"
+ R_BRACE@16..17 "}"
WHITESPACE@17..18 "\n"
===
LocatedSyntaxError { error: Unexpected { expected: Named("comma"), found: SEMI }, range: 7..8 }
crates/jrsonnet-rowan-parser/src/tests.rsdiffbeforeafterboth--- a/crates/jrsonnet-rowan-parser/src/tests.rs
+++ b/crates/jrsonnet-rowan-parser/src/tests.rs
@@ -72,7 +72,7 @@
styles: ThemeStyles::none(),
});
- write!(out, "===").unwrap();
+ writeln!(out, "===").unwrap();
handler
.render_report(&mut out, &diag)
.expect("fmt error?..");
xtask/src/sourcegen/ast.rsdiffbeforeafterboth--- a/xtask/src/sourcegen/ast.rs
+++ b/xtask/src/sourcegen/ast.rs
@@ -149,7 +149,7 @@
let mut types = HashMap::new();
for field in fields.iter().filter(|f| f.token_name().is_none()) {
if let Some(old) = types.insert(field.ty(), field.method_name(kinds)) {
- panic!("{name}.{} has same type as {name}.{}, resolve conflict by wrapping one field: {}", old, field.method_name(kinds), field.ty());
+ // panic!("{name}.{} has same type as {name}.{}, resolve conflict by wrapping one field: {}", old, field.method_name(kinds), field.ty());
}
// TODO: check for assignable field types, i.e you can have
// ```
xtask/src/sourcegen/kinds.rsdiffbeforeafterboth--- a/xtask/src/sourcegen/kinds.rs
+++ b/xtask/src/sourcegen/kinds.rs
@@ -212,6 +212,7 @@
let mut kinds = KindsSrc::new();
define_kinds![kinds =
"||" => "OR";
+ "??" => "NULL_COAELSE";
"&&" => "AND";
"|" => "BIT_OR";
"^" => "BIT_XOR";