git.delta.rocks / jrsonnet / refs/commits / 3248f25fe079

difftreelog

refactor support new jrsonnet features in rowan parser

Yaroslav Bolyukin2023-09-11parent: #a7bbbb4.patch.diff
in: master

43 files changed

modifiedcrates/jrsonnet-rowan-parser/jsonnet.ungramdiffbeforeafterboth
55
6SourceFile = Expr6SourceFile = Expr
77
8ExprBinary =8SuffixIndex =
9 lhs:LhsExpr9 '?'?
10 BinaryOperator
11 rhs:Expr
12ExprUnary =
13 UnaryOperator
14 rhs:Expr
15ExprSlice =
16 Expr
17 SliceDesc
18ExprIndex =
19 Expr
20 '.'10 '.'
21 index:Name11 index:Name
22ExprIndexExpr =12SuffixIndexExpr =
23 base:LhsExpr13 ('?' '.')?
24 '['14 '['
25 index:Expr15 index:Expr
26 ']'16 ']'
27ExprApply =17SuffixSlice =
28 Expr18 SliceDesc
19SuffixApply =
29 ArgsDesc20 ArgsDesc
30 'tailstrict'?21 'tailstrict'?
22Suffix =
23 SuffixIndex
24| SuffixIndexExpr
25| SuffixSlice
26| SuffixApply
27
28StmtLocal =
29 'local'
30 (Bind (',' Bind)* ','?)
31 ';'
32StmtAssert =
33 Assertion
34 ';'
35Stmt =
36 StmtLocal
37| StmtAssert
38
39ExprBinary =
40 lhs:Expr
41 BinaryOperator
42 rhs:Expr
43ExprUnary =
44 UnaryOperator
45 rhs:Expr
31ExprObjExtend =46ExprObjExtend =
32 LhsExpr
33 Expr47 Expr
48 Expr
34ExprParened =49ExprParened =
35 '('50 '('
36 Expr51 Expr
79 ParamsDesc94 ParamsDesc
80 ')'95 ')'
81 Expr96 Expr
82ExprAssert =
83 Assertion
84 ';'
85 Expr
86ExprError =97ExprError =
87 'error'98 'error'
88 Expr99 Expr
89100
90StmtLocal =
91 'local'
92 (Bind (',' Bind)* ','?)
93 ';'
94
95Expr =101Expr =
96 StmtLocal*102 Stmt*
97 ExprBase103 ExprBase
104 Suffix*
105
98ExprBase =106ExprBase =
99 ExprBinary107 ExprBinary
100| ExprUnary108| ExprUnary
101| ExprSlice
102| ExprIndex
103| ExprIndexExpr
104| ExprApply
105| ExprObjExtend109| ExprObjExtend
106| ExprParened110| ExprParened
107| ExprString111| ExprString
114| ExprVar118| ExprVar
115| ExprIfThenElse119| ExprIfThenElse
116| ExprFunction120| ExprFunction
117| ExprAssert
118| ExprError121| ExprError
119122
120BinaryOperator =123BinaryOperator =
121 '||' | '&&'124 '||' | '??' | '&&'
122| '|' | '^' | '&'125| '|' | '^' | '&'
123| '==' | '!=' | '<' | '>' | '<=' | '>=' | 'in'126| '==' | '!=' | '<' | '>' | '<=' | '>=' | 'in'
124| '<<' | '>>'127| '<<' | '>>'
242245
243ForSpec =246ForSpec =
244 'for'247 'for'
245 bind:Name248 bind:Destruct
246 'in'249 'in'
247 Expr250 Expr
248IfSpec =251IfSpec =
278281
279Assertion =282Assertion =
280 'assert'283 'assert'
281 condition:LhsExpr284 condition:Expr
282 (285 (
283 ':'286 ':'
284 message:Expr287 message:Expr
336// Aliases used to resolve node type conflicts339// Aliases used to resolve node type conflicts
337TrueExpr=Expr340TrueExpr=Expr
338FalseExpr=Expr341FalseExpr=Expr
339LhsExpr=Expr
340342
341// Trivia - tokens which will be implicitly skipped for parser343// Trivia - tokens which will be implicitly skipped for parser
342Trivia =344Trivia =
modifiedcrates/jrsonnet-rowan-parser/src/generated/nodes.rsdiffbeforeafterboth
23 pub(crate) syntax: SyntaxNode,23 pub(crate) syntax: SyntaxNode,
24}24}
25impl Expr {25impl Expr {
26 pub fn stmt_locals(&self) -> AstChildren<StmtLocal> {26 pub fn stmts(&self) -> AstChildren<Stmt> {
27 support::children(&self.syntax)27 support::children(&self.syntax)
28 }28 }
29 pub fn expr_base(&self) -> Option<ExprBase> {29 pub fn expr_base(&self) -> Option<ExprBase> {
30 support::child(&self.syntax)30 support::child(&self.syntax)
31 }31 }
32 pub fn suffixs(&self) -> AstChildren<Suffix> {
33 support::children(&self.syntax)
34 }
32}35}
3336
34#[derive(Debug, Clone, PartialEq, Eq, Hash)]37#[derive(Debug, Clone, PartialEq, Eq, Hash)]
35pub struct ExprBinary {38pub struct SuffixIndex {
36 pub(crate) syntax: SyntaxNode,39 pub(crate) syntax: SyntaxNode,
37}40}
38impl ExprBinary {41impl SuffixIndex {
39 pub fn lhs(&self) -> Option<LhsExpr> {42 pub fn question_mark_token(&self) -> Option<SyntaxToken> {
40 support::child(&self.syntax)43 support::token(&self.syntax, T![?])
41 }44 }
42 pub fn binary_operator(&self) -> Option<BinaryOperator> {45 pub fn dot_token(&self) -> Option<SyntaxToken> {
43 support::token_child(&self.syntax)46 support::token(&self.syntax, T![.])
44 }47 }
45 pub fn rhs(&self) -> Option<Expr> {48 pub fn index(&self) -> Option<Name> {
46 support::child(&self.syntax)49 support::child(&self.syntax)
47 }50 }
48}51}
4952
50#[derive(Debug, Clone, PartialEq, Eq, Hash)]53#[derive(Debug, Clone, PartialEq, Eq, Hash)]
51pub struct LhsExpr {54pub struct Name {
52 pub(crate) syntax: SyntaxNode,55 pub(crate) syntax: SyntaxNode,
53}56}
54impl LhsExpr {57impl Name {
55 pub fn expr(&self) -> Option<Expr> {58 pub fn ident_lit(&self) -> Option<SyntaxToken> {
56 support::child(&self.syntax)59 support::token(&self.syntax, IDENT)
57 }60 }
58}61}
5962
60#[derive(Debug, Clone, PartialEq, Eq, Hash)]63#[derive(Debug, Clone, PartialEq, Eq, Hash)]
61pub struct ExprUnary {64pub struct SuffixIndexExpr {
62 pub(crate) syntax: SyntaxNode,65 pub(crate) syntax: SyntaxNode,
63}66}
64impl ExprUnary {67impl SuffixIndexExpr {
65 pub fn unary_operator(&self) -> Option<UnaryOperator> {68 pub fn question_mark_token(&self) -> Option<SyntaxToken> {
66 support::token_child(&self.syntax)69 support::token(&self.syntax, T![?])
67 }70 }
71 pub fn dot_token(&self) -> Option<SyntaxToken> {
72 support::token(&self.syntax, T![.])
73 }
74 pub fn l_brack_token(&self) -> Option<SyntaxToken> {
75 support::token(&self.syntax, T!['['])
76 }
68 pub fn rhs(&self) -> Option<Expr> {77 pub fn index(&self) -> Option<Expr> {
69 support::child(&self.syntax)78 support::child(&self.syntax)
70 }79 }
80 pub fn r_brack_token(&self) -> Option<SyntaxToken> {
81 support::token(&self.syntax, T![']'])
82 }
71}83}
7284
73#[derive(Debug, Clone, PartialEq, Eq, Hash)]85#[derive(Debug, Clone, PartialEq, Eq, Hash)]
74pub struct ExprSlice {86pub struct SuffixSlice {
75 pub(crate) syntax: SyntaxNode,87 pub(crate) syntax: SyntaxNode,
76}88}
77impl ExprSlice {89impl SuffixSlice {
78 pub fn expr(&self) -> Option<Expr> {
79 support::child(&self.syntax)
80 }
81 pub fn slice_desc(&self) -> Option<SliceDesc> {90 pub fn slice_desc(&self) -> Option<SliceDesc> {
82 support::child(&self.syntax)91 support::child(&self.syntax)
83 }92 }
109}118}
110119
111#[derive(Debug, Clone, PartialEq, Eq, Hash)]120#[derive(Debug, Clone, PartialEq, Eq, Hash)]
112pub struct ExprIndex {121pub struct SuffixApply {
113 pub(crate) syntax: SyntaxNode,122 pub(crate) syntax: SyntaxNode,
114}123}
115impl ExprIndex {
116 pub fn expr(&self) -> Option<Expr> {
117 support::child(&self.syntax)
118 }
119 pub fn dot_token(&self) -> Option<SyntaxToken> {
120 support::token(&self.syntax, T![.])
121 }
122 pub fn index(&self) -> Option<Name> {
123 support::child(&self.syntax)
124 }
125}
126
127#[derive(Debug, Clone, PartialEq, Eq, Hash)]
128pub struct Name {
129 pub(crate) syntax: SyntaxNode,
130}
131impl Name {
132 pub fn ident_lit(&self) -> Option<SyntaxToken> {
133 support::token(&self.syntax, IDENT)
134 }
135}
136
137#[derive(Debug, Clone, PartialEq, Eq, Hash)]
138pub struct ExprIndexExpr {
139 pub(crate) syntax: SyntaxNode,
140}
141impl ExprIndexExpr {
142 pub fn base(&self) -> Option<LhsExpr> {
143 support::child(&self.syntax)
144 }
145 pub fn l_brack_token(&self) -> Option<SyntaxToken> {
146 support::token(&self.syntax, T!['['])
147 }
148 pub fn index(&self) -> Option<Expr> {
149 support::child(&self.syntax)
150 }
151 pub fn r_brack_token(&self) -> Option<SyntaxToken> {
152 support::token(&self.syntax, T![']'])
153 }
154}
155
156#[derive(Debug, Clone, PartialEq, Eq, Hash)]
157pub struct ExprApply {
158 pub(crate) syntax: SyntaxNode,
159}
160impl ExprApply {124impl SuffixApply {
161 pub fn expr(&self) -> Option<Expr> {
162 support::child(&self.syntax)
163 }
164 pub fn args_desc(&self) -> Option<ArgsDesc> {125 pub fn args_desc(&self) -> Option<ArgsDesc> {
165 support::child(&self.syntax)126 support::child(&self.syntax)
166 }127 }
185 }146 }
186}147}
148
149#[derive(Debug, Clone, PartialEq, Eq, Hash)]
150pub struct StmtLocal {
151 pub(crate) syntax: SyntaxNode,
152}
153impl StmtLocal {
154 pub fn local_kw_token(&self) -> Option<SyntaxToken> {
155 support::token(&self.syntax, T![local])
156 }
157 pub fn binds(&self) -> AstChildren<Bind> {
158 support::children(&self.syntax)
159 }
160 pub fn semi_token(&self) -> Option<SyntaxToken> {
161 support::token(&self.syntax, T![;])
162 }
163}
164
165#[derive(Debug, Clone, PartialEq, Eq, Hash)]
166pub struct StmtAssert {
167 pub(crate) syntax: SyntaxNode,
168}
169impl StmtAssert {
170 pub fn assertion(&self) -> Option<Assertion> {
171 support::child(&self.syntax)
172 }
173 pub fn semi_token(&self) -> Option<SyntaxToken> {
174 support::token(&self.syntax, T![;])
175 }
176}
177
178#[derive(Debug, Clone, PartialEq, Eq, Hash)]
179pub struct Assertion {
180 pub(crate) syntax: SyntaxNode,
181}
182impl Assertion {
183 pub fn assert_kw_token(&self) -> Option<SyntaxToken> {
184 support::token(&self.syntax, T![assert])
185 }
186 pub fn condition(&self) -> Option<Expr> {
187 support::child(&self.syntax)
188 }
189 pub fn colon_token(&self) -> Option<SyntaxToken> {
190 support::token(&self.syntax, T![:])
191 }
192 pub fn message(&self) -> Option<Expr> {
193 support::child(&self.syntax)
194 }
195}
196
197#[derive(Debug, Clone, PartialEq, Eq, Hash)]
198pub struct ExprBinary {
199 pub(crate) syntax: SyntaxNode,
200}
201impl ExprBinary {
202 pub fn lhs(&self) -> Option<Expr> {
203 support::child(&self.syntax)
204 }
205 pub fn binary_operator(&self) -> Option<BinaryOperator> {
206 support::token_child(&self.syntax)
207 }
208 pub fn rhs(&self) -> Option<Expr> {
209 support::child(&self.syntax)
210 }
211}
212
213#[derive(Debug, Clone, PartialEq, Eq, Hash)]
214pub struct ExprUnary {
215 pub(crate) syntax: SyntaxNode,
216}
217impl ExprUnary {
218 pub fn unary_operator(&self) -> Option<UnaryOperator> {
219 support::token_child(&self.syntax)
220 }
221 pub fn rhs(&self) -> Option<Expr> {
222 support::child(&self.syntax)
223 }
224}
187225
188#[derive(Debug, Clone, PartialEq, Eq, Hash)]226#[derive(Debug, Clone, PartialEq, Eq, Hash)]
189pub struct ExprObjExtend {227pub struct ExprObjExtend {
190 pub(crate) syntax: SyntaxNode,228 pub(crate) syntax: SyntaxNode,
191}229}
192impl ExprObjExtend {230impl ExprObjExtend {
193 pub fn lhs_expr(&self) -> Option<LhsExpr> {
194 support::child(&self.syntax)
195 }
196 pub fn expr(&self) -> Option<Expr> {231 pub fn expr(&self) -> Option<Expr> {
197 support::child(&self.syntax)232 support::child(&self.syntax)
198 }233 }
398 }433 }
399}434}
400
401#[derive(Debug, Clone, PartialEq, Eq, Hash)]
402pub struct ExprAssert {
403 pub(crate) syntax: SyntaxNode,
404}
405impl ExprAssert {
406 pub fn assertion(&self) -> Option<Assertion> {
407 support::child(&self.syntax)
408 }
409 pub fn semi_token(&self) -> Option<SyntaxToken> {
410 support::token(&self.syntax, T![;])
411 }
412 pub fn expr(&self) -> Option<Expr> {
413 support::child(&self.syntax)
414 }
415}
416
417#[derive(Debug, Clone, PartialEq, Eq, Hash)]
418pub struct Assertion {
419 pub(crate) syntax: SyntaxNode,
420}
421impl Assertion {
422 pub fn assert_kw_token(&self) -> Option<SyntaxToken> {
423 support::token(&self.syntax, T![assert])
424 }
425 pub fn condition(&self) -> Option<LhsExpr> {
426 support::child(&self.syntax)
427 }
428 pub fn colon_token(&self) -> Option<SyntaxToken> {
429 support::token(&self.syntax, T![:])
430 }
431 pub fn message(&self) -> Option<Expr> {
432 support::child(&self.syntax)
433 }
434}
435435
436#[derive(Debug, Clone, PartialEq, Eq, Hash)]436#[derive(Debug, Clone, PartialEq, Eq, Hash)]
437pub struct ExprError {437pub struct ExprError {
446 }446 }
447}447}
448
449#[derive(Debug, Clone, PartialEq, Eq, Hash)]
450pub struct StmtLocal {
451 pub(crate) syntax: SyntaxNode,
452}
453impl StmtLocal {
454 pub fn local_kw_token(&self) -> Option<SyntaxToken> {
455 support::token(&self.syntax, T![local])
456 }
457 pub fn binds(&self) -> AstChildren<Bind> {
458 support::children(&self.syntax)
459 }
460 pub fn semi_token(&self) -> Option<SyntaxToken> {
461 support::token(&self.syntax, T![;])
462 }
463}
464448
465#[derive(Debug, Clone, PartialEq, Eq, Hash)]449#[derive(Debug, Clone, PartialEq, Eq, Hash)]
466pub struct SliceDescEnd {450pub struct SliceDescEnd {
641 pub fn for_kw_token(&self) -> Option<SyntaxToken> {625 pub fn for_kw_token(&self) -> Option<SyntaxToken> {
642 support::token(&self.syntax, T![for])626 support::token(&self.syntax, T![for])
643 }627 }
644 pub fn bind(&self) -> Option<Name> {628 pub fn bind(&self) -> Option<Destruct> {
645 support::child(&self.syntax)629 support::child(&self.syntax)
646 }630 }
647 pub fn in_kw_token(&self) -> Option<SyntaxToken> {631 pub fn in_kw_token(&self) -> Option<SyntaxToken> {
819 }803 }
820}804}
805
806#[derive(Debug, Clone, PartialEq, Eq, Hash)]
807pub enum Suffix {
808 SuffixIndex(SuffixIndex),
809 SuffixIndexExpr(SuffixIndexExpr),
810 SuffixSlice(SuffixSlice),
811 SuffixApply(SuffixApply),
812}
813
814#[derive(Debug, Clone, PartialEq, Eq, Hash)]
815pub enum Bind {
816 BindDestruct(BindDestruct),
817 BindFunction(BindFunction),
818}
819
820#[derive(Debug, Clone, PartialEq, Eq, Hash)]
821pub enum Stmt {
822 StmtLocal(StmtLocal),
823 StmtAssert(StmtAssert),
824}
821825
822#[derive(Debug, Clone, PartialEq, Eq, Hash)]826#[derive(Debug, Clone, PartialEq, Eq, Hash)]
823pub enum ObjBody {827pub enum ObjBody {
831 IfSpec(IfSpec),835 IfSpec(IfSpec),
832}836}
833
834#[derive(Debug, Clone, PartialEq, Eq, Hash)]
835pub enum Bind {
836 BindDestruct(BindDestruct),
837 BindFunction(BindFunction),
838}
839837
840#[derive(Debug, Clone, PartialEq, Eq, Hash)]838#[derive(Debug, Clone, PartialEq, Eq, Hash)]
841pub enum ExprBase {839pub enum ExprBase {
842 ExprBinary(ExprBinary),840 ExprBinary(ExprBinary),
843 ExprUnary(ExprUnary),841 ExprUnary(ExprUnary),
844 ExprSlice(ExprSlice),
845 ExprIndex(ExprIndex),
846 ExprIndexExpr(ExprIndexExpr),
847 ExprApply(ExprApply),
848 ExprObjExtend(ExprObjExtend),842 ExprObjExtend(ExprObjExtend),
849 ExprParened(ExprParened),843 ExprParened(ExprParened),
850 ExprString(ExprString),844 ExprString(ExprString),
857 ExprVar(ExprVar),851 ExprVar(ExprVar),
858 ExprIfThenElse(ExprIfThenElse),852 ExprIfThenElse(ExprIfThenElse),
859 ExprFunction(ExprFunction),853 ExprFunction(ExprFunction),
860 ExprAssert(ExprAssert),
861 ExprError(ExprError),854 ExprError(ExprError),
862}855}
863856
905#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]898#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
906pub enum BinaryOperatorKind {899pub enum BinaryOperatorKind {
907 Or,900 Or,
901 NullCoaelse,
908 And,902 And,
909 BitOr,903 BitOr,
910 BitXor,904 BitXor,
1078 &self.syntax1072 &self.syntax
1079 }1073 }
1080}1074}
1075impl AstNode for SuffixIndex {
1076 fn can_cast(kind: SyntaxKind) -> bool {
1077 kind == SUFFIX_INDEX
1078 }
1079 fn cast(syntax: SyntaxNode) -> Option<Self> {
1080 if Self::can_cast(syntax.kind()) {
1081 Some(Self { syntax })
1082 } else {
1083 None
1084 }
1085 }
1086 fn syntax(&self) -> &SyntaxNode {
1087 &self.syntax
1088 }
1089}
1090impl AstNode for Name {
1091 fn can_cast(kind: SyntaxKind) -> bool {
1092 kind == NAME
1093 }
1094 fn cast(syntax: SyntaxNode) -> Option<Self> {
1095 if Self::can_cast(syntax.kind()) {
1096 Some(Self { syntax })
1097 } else {
1098 None
1099 }
1100 }
1101 fn syntax(&self) -> &SyntaxNode {
1102 &self.syntax
1103 }
1104}
1105impl AstNode for SuffixIndexExpr {
1106 fn can_cast(kind: SyntaxKind) -> bool {
1107 kind == SUFFIX_INDEX_EXPR
1108 }
1109 fn cast(syntax: SyntaxNode) -> Option<Self> {
1110 if Self::can_cast(syntax.kind()) {
1111 Some(Self { syntax })
1112 } else {
1113 None
1114 }
1115 }
1116 fn syntax(&self) -> &SyntaxNode {
1117 &self.syntax
1118 }
1119}
1120impl AstNode for SuffixSlice {
1121 fn can_cast(kind: SyntaxKind) -> bool {
1122 kind == SUFFIX_SLICE
1123 }
1124 fn cast(syntax: SyntaxNode) -> Option<Self> {
1125 if Self::can_cast(syntax.kind()) {
1126 Some(Self { syntax })
1127 } else {
1128 None
1129 }
1130 }
1131 fn syntax(&self) -> &SyntaxNode {
1132 &self.syntax
1133 }
1134}
1135impl AstNode for SliceDesc {
1136 fn can_cast(kind: SyntaxKind) -> bool {
1137 kind == SLICE_DESC
1138 }
1139 fn cast(syntax: SyntaxNode) -> Option<Self> {
1140 if Self::can_cast(syntax.kind()) {
1141 Some(Self { syntax })
1142 } else {
1143 None
1144 }
1145 }
1146 fn syntax(&self) -> &SyntaxNode {
1147 &self.syntax
1148 }
1149}
1150impl AstNode for SuffixApply {
1151 fn can_cast(kind: SyntaxKind) -> bool {
1152 kind == SUFFIX_APPLY
1153 }
1154 fn cast(syntax: SyntaxNode) -> Option<Self> {
1155 if Self::can_cast(syntax.kind()) {
1156 Some(Self { syntax })
1157 } else {
1158 None
1159 }
1160 }
1161 fn syntax(&self) -> &SyntaxNode {
1162 &self.syntax
1163 }
1164}
1165impl AstNode for ArgsDesc {
1166 fn can_cast(kind: SyntaxKind) -> bool {
1167 kind == ARGS_DESC
1168 }
1169 fn cast(syntax: SyntaxNode) -> Option<Self> {
1170 if Self::can_cast(syntax.kind()) {
1171 Some(Self { syntax })
1172 } else {
1173 None
1174 }
1175 }
1176 fn syntax(&self) -> &SyntaxNode {
1177 &self.syntax
1178 }
1179}
1180impl AstNode for StmtLocal {
1181 fn can_cast(kind: SyntaxKind) -> bool {
1182 kind == STMT_LOCAL
1183 }
1184 fn cast(syntax: SyntaxNode) -> Option<Self> {
1185 if Self::can_cast(syntax.kind()) {
1186 Some(Self { syntax })
1187 } else {
1188 None
1189 }
1190 }
1191 fn syntax(&self) -> &SyntaxNode {
1192 &self.syntax
1193 }
1194}
1195impl AstNode for StmtAssert {
1196 fn can_cast(kind: SyntaxKind) -> bool {
1197 kind == STMT_ASSERT
1198 }
1199 fn cast(syntax: SyntaxNode) -> Option<Self> {
1200 if Self::can_cast(syntax.kind()) {
1201 Some(Self { syntax })
1202 } else {
1203 None
1204 }
1205 }
1206 fn syntax(&self) -> &SyntaxNode {
1207 &self.syntax
1208 }
1209}
1210impl AstNode for Assertion {
1211 fn can_cast(kind: SyntaxKind) -> bool {
1212 kind == ASSERTION
1213 }
1214 fn cast(syntax: SyntaxNode) -> Option<Self> {
1215 if Self::can_cast(syntax.kind()) {
1216 Some(Self { syntax })
1217 } else {
1218 None
1219 }
1220 }
1221 fn syntax(&self) -> &SyntaxNode {
1222 &self.syntax
1223 }
1224}
1081impl AstNode for ExprBinary {1225impl AstNode for ExprBinary {
1082 fn can_cast(kind: SyntaxKind) -> bool {1226 fn can_cast(kind: SyntaxKind) -> bool {
1083 kind == EXPR_BINARY1227 kind == EXPR_BINARY
1093 &self.syntax1237 &self.syntax
1094 }1238 }
1095}1239}
1096impl AstNode for LhsExpr {
1097 fn can_cast(kind: SyntaxKind) -> bool {
1098 kind == LHS_EXPR
1099 }
1100 fn cast(syntax: SyntaxNode) -> Option<Self> {
1101 if Self::can_cast(syntax.kind()) {
1102 Some(Self { syntax })
1103 } else {
1104 None
1105 }
1106 }
1107 fn syntax(&self) -> &SyntaxNode {
1108 &self.syntax
1109 }
1110}
1111impl AstNode for ExprUnary {1240impl AstNode for ExprUnary {
1112 fn can_cast(kind: SyntaxKind) -> bool {1241 fn can_cast(kind: SyntaxKind) -> bool {
1113 kind == EXPR_UNARY1242 kind == EXPR_UNARY
1123 &self.syntax1252 &self.syntax
1124 }1253 }
1125}1254}
1126impl AstNode for ExprSlice {
1127 fn can_cast(kind: SyntaxKind) -> bool {
1128 kind == EXPR_SLICE
1129 }
1130 fn cast(syntax: SyntaxNode) -> Option<Self> {
1131 if Self::can_cast(syntax.kind()) {
1132 Some(Self { syntax })
1133 } else {
1134 None
1135 }
1136 }
1137 fn syntax(&self) -> &SyntaxNode {
1138 &self.syntax
1139 }
1140}
1141impl AstNode for SliceDesc {
1142 fn can_cast(kind: SyntaxKind) -> bool {
1143 kind == SLICE_DESC
1144 }
1145 fn cast(syntax: SyntaxNode) -> Option<Self> {
1146 if Self::can_cast(syntax.kind()) {
1147 Some(Self { syntax })
1148 } else {
1149 None
1150 }
1151 }
1152 fn syntax(&self) -> &SyntaxNode {
1153 &self.syntax
1154 }
1155}
1156impl AstNode for ExprIndex {
1157 fn can_cast(kind: SyntaxKind) -> bool {
1158 kind == EXPR_INDEX
1159 }
1160 fn cast(syntax: SyntaxNode) -> Option<Self> {
1161 if Self::can_cast(syntax.kind()) {
1162 Some(Self { syntax })
1163 } else {
1164 None
1165 }
1166 }
1167 fn syntax(&self) -> &SyntaxNode {
1168 &self.syntax
1169 }
1170}
1171impl AstNode for Name {
1172 fn can_cast(kind: SyntaxKind) -> bool {
1173 kind == NAME
1174 }
1175 fn cast(syntax: SyntaxNode) -> Option<Self> {
1176 if Self::can_cast(syntax.kind()) {
1177 Some(Self { syntax })
1178 } else {
1179 None
1180 }
1181 }
1182 fn syntax(&self) -> &SyntaxNode {
1183 &self.syntax
1184 }
1185}
1186impl AstNode for ExprIndexExpr {
1187 fn can_cast(kind: SyntaxKind) -> bool {
1188 kind == EXPR_INDEX_EXPR
1189 }
1190 fn cast(syntax: SyntaxNode) -> Option<Self> {
1191 if Self::can_cast(syntax.kind()) {
1192 Some(Self { syntax })
1193 } else {
1194 None
1195 }
1196 }
1197 fn syntax(&self) -> &SyntaxNode {
1198 &self.syntax
1199 }
1200}
1201impl AstNode for ExprApply {
1202 fn can_cast(kind: SyntaxKind) -> bool {
1203 kind == EXPR_APPLY
1204 }
1205 fn cast(syntax: SyntaxNode) -> Option<Self> {
1206 if Self::can_cast(syntax.kind()) {
1207 Some(Self { syntax })
1208 } else {
1209 None
1210 }
1211 }
1212 fn syntax(&self) -> &SyntaxNode {
1213 &self.syntax
1214 }
1215}
1216impl AstNode for ArgsDesc {
1217 fn can_cast(kind: SyntaxKind) -> bool {
1218 kind == ARGS_DESC
1219 }
1220 fn cast(syntax: SyntaxNode) -> Option<Self> {
1221 if Self::can_cast(syntax.kind()) {
1222 Some(Self { syntax })
1223 } else {
1224 None
1225 }
1226 }
1227 fn syntax(&self) -> &SyntaxNode {
1228 &self.syntax
1229 }
1230}
1231impl AstNode for ExprObjExtend {1255impl AstNode for ExprObjExtend {
1232 fn can_cast(kind: SyntaxKind) -> bool {1256 fn can_cast(kind: SyntaxKind) -> bool {
1233 kind == EXPR_OBJ_EXTEND1257 kind == EXPR_OBJ_EXTEND
1453 &self.syntax1477 &self.syntax
1454 }1478 }
1455}1479}
1456impl AstNode for ExprAssert {
1457 fn can_cast(kind: SyntaxKind) -> bool {
1458 kind == EXPR_ASSERT
1459 }
1460 fn cast(syntax: SyntaxNode) -> Option<Self> {
1461 if Self::can_cast(syntax.kind()) {
1462 Some(Self { syntax })
1463 } else {
1464 None
1465 }
1466 }
1467 fn syntax(&self) -> &SyntaxNode {
1468 &self.syntax
1469 }
1470}
1471impl AstNode for Assertion {
1472 fn can_cast(kind: SyntaxKind) -> bool {
1473 kind == ASSERTION
1474 }
1475 fn cast(syntax: SyntaxNode) -> Option<Self> {
1476 if Self::can_cast(syntax.kind()) {
1477 Some(Self { syntax })
1478 } else {
1479 None
1480 }
1481 }
1482 fn syntax(&self) -> &SyntaxNode {
1483 &self.syntax
1484 }
1485}
1486impl AstNode for ExprError {1480impl AstNode for ExprError {
1487 fn can_cast(kind: SyntaxKind) -> bool {1481 fn can_cast(kind: SyntaxKind) -> bool {
1488 kind == EXPR_ERROR1482 kind == EXPR_ERROR
1498 &self.syntax1492 &self.syntax
1499 }1493 }
1500}1494}
1501impl AstNode for StmtLocal {
1502 fn can_cast(kind: SyntaxKind) -> bool {
1503 kind == STMT_LOCAL
1504 }
1505 fn cast(syntax: SyntaxNode) -> Option<Self> {
1506 if Self::can_cast(syntax.kind()) {
1507 Some(Self { syntax })
1508 } else {
1509 None
1510 }
1511 }
1512 fn syntax(&self) -> &SyntaxNode {
1513 &self.syntax
1514 }
1515}
1516impl AstNode for SliceDescEnd {1495impl AstNode for SliceDescEnd {
1517 fn can_cast(kind: SyntaxKind) -> bool {1496 fn can_cast(kind: SyntaxKind) -> bool {
1518 kind == SLICE_DESC_END1497 kind == SLICE_DESC_END
1873 &self.syntax1852 &self.syntax
1874 }1853 }
1875}1854}
1855impl From<SuffixIndex> for Suffix {
1856 fn from(node: SuffixIndex) -> Suffix {
1857 Suffix::SuffixIndex(node)
1858 }
1859}
1860impl From<SuffixIndexExpr> for Suffix {
1861 fn from(node: SuffixIndexExpr) -> Suffix {
1862 Suffix::SuffixIndexExpr(node)
1863 }
1864}
1865impl From<SuffixSlice> for Suffix {
1866 fn from(node: SuffixSlice) -> Suffix {
1867 Suffix::SuffixSlice(node)
1868 }
1869}
1870impl From<SuffixApply> for Suffix {
1871 fn from(node: SuffixApply) -> Suffix {
1872 Suffix::SuffixApply(node)
1873 }
1874}
1875impl AstNode for Suffix {
1876 fn can_cast(kind: SyntaxKind) -> bool {
1877 match kind {
1878 SUFFIX_INDEX | SUFFIX_INDEX_EXPR | SUFFIX_SLICE | SUFFIX_APPLY => true,
1879 _ => false,
1880 }
1881 }
1882 fn cast(syntax: SyntaxNode) -> Option<Self> {
1883 let res = match syntax.kind() {
1884 SUFFIX_INDEX => Suffix::SuffixIndex(SuffixIndex { syntax }),
1885 SUFFIX_INDEX_EXPR => Suffix::SuffixIndexExpr(SuffixIndexExpr { syntax }),
1886 SUFFIX_SLICE => Suffix::SuffixSlice(SuffixSlice { syntax }),
1887 SUFFIX_APPLY => Suffix::SuffixApply(SuffixApply { syntax }),
1888 _ => return None,
1889 };
1890 Some(res)
1891 }
1892 fn syntax(&self) -> &SyntaxNode {
1893 match self {
1894 Suffix::SuffixIndex(it) => &it.syntax,
1895 Suffix::SuffixIndexExpr(it) => &it.syntax,
1896 Suffix::SuffixSlice(it) => &it.syntax,
1897 Suffix::SuffixApply(it) => &it.syntax,
1898 }
1899 }
1900}
1901impl From<BindDestruct> for Bind {
1902 fn from(node: BindDestruct) -> Bind {
1903 Bind::BindDestruct(node)
1904 }
1905}
1906impl From<BindFunction> for Bind {
1907 fn from(node: BindFunction) -> Bind {
1908 Bind::BindFunction(node)
1909 }
1910}
1911impl AstNode for Bind {
1912 fn can_cast(kind: SyntaxKind) -> bool {
1913 match kind {
1914 BIND_DESTRUCT | BIND_FUNCTION => true,
1915 _ => false,
1916 }
1917 }
1918 fn cast(syntax: SyntaxNode) -> Option<Self> {
1919 let res = match syntax.kind() {
1920 BIND_DESTRUCT => Bind::BindDestruct(BindDestruct { syntax }),
1921 BIND_FUNCTION => Bind::BindFunction(BindFunction { syntax }),
1922 _ => return None,
1923 };
1924 Some(res)
1925 }
1926 fn syntax(&self) -> &SyntaxNode {
1927 match self {
1928 Bind::BindDestruct(it) => &it.syntax,
1929 Bind::BindFunction(it) => &it.syntax,
1930 }
1931 }
1932}
1933impl From<StmtLocal> for Stmt {
1934 fn from(node: StmtLocal) -> Stmt {
1935 Stmt::StmtLocal(node)
1936 }
1937}
1938impl From<StmtAssert> for Stmt {
1939 fn from(node: StmtAssert) -> Stmt {
1940 Stmt::StmtAssert(node)
1941 }
1942}
1943impl AstNode for Stmt {
1944 fn can_cast(kind: SyntaxKind) -> bool {
1945 match kind {
1946 STMT_LOCAL | STMT_ASSERT => true,
1947 _ => false,
1948 }
1949 }
1950 fn cast(syntax: SyntaxNode) -> Option<Self> {
1951 let res = match syntax.kind() {
1952 STMT_LOCAL => Stmt::StmtLocal(StmtLocal { syntax }),
1953 STMT_ASSERT => Stmt::StmtAssert(StmtAssert { syntax }),
1954 _ => return None,
1955 };
1956 Some(res)
1957 }
1958 fn syntax(&self) -> &SyntaxNode {
1959 match self {
1960 Stmt::StmtLocal(it) => &it.syntax,
1961 Stmt::StmtAssert(it) => &it.syntax,
1962 }
1963 }
1964}
1876impl From<ObjBodyComp> for ObjBody {1965impl From<ObjBodyComp> for ObjBody {
1877 fn from(node: ObjBodyComp) -> ObjBody {1966 fn from(node: ObjBodyComp) -> ObjBody {
1878 ObjBody::ObjBodyComp(node)1967 ObjBody::ObjBodyComp(node)
1937 }2026 }
1938 }2027 }
1939}2028}
1940impl From<BindDestruct> for Bind {
1941 fn from(node: BindDestruct) -> Bind {
1942 Bind::BindDestruct(node)
1943 }
1944}
1945impl From<BindFunction> for Bind {
1946 fn from(node: BindFunction) -> Bind {
1947 Bind::BindFunction(node)
1948 }
1949}
1950impl AstNode for Bind {
1951 fn can_cast(kind: SyntaxKind) -> bool {
1952 match kind {
1953 BIND_DESTRUCT | BIND_FUNCTION => true,
1954 _ => false,
1955 }
1956 }
1957 fn cast(syntax: SyntaxNode) -> Option<Self> {
1958 let res = match syntax.kind() {
1959 BIND_DESTRUCT => Bind::BindDestruct(BindDestruct { syntax }),
1960 BIND_FUNCTION => Bind::BindFunction(BindFunction { syntax }),
1961 _ => return None,
1962 };
1963 Some(res)
1964 }
1965 fn syntax(&self) -> &SyntaxNode {
1966 match self {
1967 Bind::BindDestruct(it) => &it.syntax,
1968 Bind::BindFunction(it) => &it.syntax,
1969 }
1970 }
1971}
1972impl From<ExprBinary> for ExprBase {2029impl From<ExprBinary> for ExprBase {
1973 fn from(node: ExprBinary) -> ExprBase {2030 fn from(node: ExprBinary) -> ExprBase {
1974 ExprBase::ExprBinary(node)2031 ExprBase::ExprBinary(node)
1979 ExprBase::ExprUnary(node)2036 ExprBase::ExprUnary(node)
1980 }2037 }
1981}2038}
1982impl From<ExprSlice> for ExprBase {
1983 fn from(node: ExprSlice) -> ExprBase {
1984 ExprBase::ExprSlice(node)
1985 }
1986}
1987impl From<ExprIndex> for ExprBase {
1988 fn from(node: ExprIndex) -> ExprBase {
1989 ExprBase::ExprIndex(node)
1990 }
1991}
1992impl From<ExprIndexExpr> for ExprBase {
1993 fn from(node: ExprIndexExpr) -> ExprBase {
1994 ExprBase::ExprIndexExpr(node)
1995 }
1996}
1997impl From<ExprApply> for ExprBase {
1998 fn from(node: ExprApply) -> ExprBase {
1999 ExprBase::ExprApply(node)
2000 }
2001}
2002impl From<ExprObjExtend> for ExprBase {2039impl From<ExprObjExtend> for ExprBase {
2003 fn from(node: ExprObjExtend) -> ExprBase {2040 fn from(node: ExprObjExtend) -> ExprBase {
2004 ExprBase::ExprObjExtend(node)2041 ExprBase::ExprObjExtend(node)
2059 ExprBase::ExprFunction(node)2096 ExprBase::ExprFunction(node)
2060 }2097 }
2061}2098}
2062impl From<ExprAssert> for ExprBase {
2063 fn from(node: ExprAssert) -> ExprBase {
2064 ExprBase::ExprAssert(node)
2065 }
2066}
2067impl From<ExprError> for ExprBase {2099impl From<ExprError> for ExprBase {
2068 fn from(node: ExprError) -> ExprBase {2100 fn from(node: ExprError) -> ExprBase {
2069 ExprBase::ExprError(node)2101 ExprBase::ExprError(node)
2072impl AstNode for ExprBase {2104impl AstNode for ExprBase {
2073 fn can_cast(kind: SyntaxKind) -> bool {2105 fn can_cast(kind: SyntaxKind) -> bool {
2074 match kind {2106 match kind {
2075 EXPR_BINARY | EXPR_UNARY | EXPR_SLICE | EXPR_INDEX | EXPR_INDEX_EXPR | EXPR_APPLY2107 EXPR_BINARY | EXPR_UNARY | EXPR_OBJ_EXTEND | EXPR_PARENED | EXPR_STRING
2076 | EXPR_OBJ_EXTEND | EXPR_PARENED | EXPR_STRING | EXPR_NUMBER | EXPR_LITERAL2108 | EXPR_NUMBER | EXPR_LITERAL | EXPR_ARRAY | EXPR_OBJECT | EXPR_ARRAY_COMP
2077 | EXPR_ARRAY | EXPR_OBJECT | EXPR_ARRAY_COMP | EXPR_IMPORT | EXPR_VAR2109 | EXPR_IMPORT | EXPR_VAR | EXPR_IF_THEN_ELSE | EXPR_FUNCTION | EXPR_ERROR => true,
2078 | EXPR_IF_THEN_ELSE | EXPR_FUNCTION | EXPR_ASSERT | EXPR_ERROR => true,
2079 _ => false,2110 _ => false,
2080 }2111 }
2081 }2112 }
2082 fn cast(syntax: SyntaxNode) -> Option<Self> {2113 fn cast(syntax: SyntaxNode) -> Option<Self> {
2083 let res = match syntax.kind() {2114 let res = match syntax.kind() {
2084 EXPR_BINARY => ExprBase::ExprBinary(ExprBinary { syntax }),2115 EXPR_BINARY => ExprBase::ExprBinary(ExprBinary { syntax }),
2085 EXPR_UNARY => ExprBase::ExprUnary(ExprUnary { syntax }),2116 EXPR_UNARY => ExprBase::ExprUnary(ExprUnary { syntax }),
2086 EXPR_SLICE => ExprBase::ExprSlice(ExprSlice { syntax }),
2087 EXPR_INDEX => ExprBase::ExprIndex(ExprIndex { syntax }),
2088 EXPR_INDEX_EXPR => ExprBase::ExprIndexExpr(ExprIndexExpr { syntax }),
2089 EXPR_APPLY => ExprBase::ExprApply(ExprApply { syntax }),
2090 EXPR_OBJ_EXTEND => ExprBase::ExprObjExtend(ExprObjExtend { syntax }),2117 EXPR_OBJ_EXTEND => ExprBase::ExprObjExtend(ExprObjExtend { syntax }),
2091 EXPR_PARENED => ExprBase::ExprParened(ExprParened { syntax }),2118 EXPR_PARENED => ExprBase::ExprParened(ExprParened { syntax }),
2092 EXPR_STRING => ExprBase::ExprString(ExprString { syntax }),2119 EXPR_STRING => ExprBase::ExprString(ExprString { syntax }),
2099 EXPR_VAR => ExprBase::ExprVar(ExprVar { syntax }),2126 EXPR_VAR => ExprBase::ExprVar(ExprVar { syntax }),
2100 EXPR_IF_THEN_ELSE => ExprBase::ExprIfThenElse(ExprIfThenElse { syntax }),2127 EXPR_IF_THEN_ELSE => ExprBase::ExprIfThenElse(ExprIfThenElse { syntax }),
2101 EXPR_FUNCTION => ExprBase::ExprFunction(ExprFunction { syntax }),2128 EXPR_FUNCTION => ExprBase::ExprFunction(ExprFunction { syntax }),
2102 EXPR_ASSERT => ExprBase::ExprAssert(ExprAssert { syntax }),
2103 EXPR_ERROR => ExprBase::ExprError(ExprError { syntax }),2129 EXPR_ERROR => ExprBase::ExprError(ExprError { syntax }),
2104 _ => return None,2130 _ => return None,
2105 };2131 };
2109 match self {2135 match self {
2110 ExprBase::ExprBinary(it) => &it.syntax,2136 ExprBase::ExprBinary(it) => &it.syntax,
2111 ExprBase::ExprUnary(it) => &it.syntax,2137 ExprBase::ExprUnary(it) => &it.syntax,
2112 ExprBase::ExprSlice(it) => &it.syntax,
2113 ExprBase::ExprIndex(it) => &it.syntax,
2114 ExprBase::ExprIndexExpr(it) => &it.syntax,
2115 ExprBase::ExprApply(it) => &it.syntax,
2116 ExprBase::ExprObjExtend(it) => &it.syntax,2138 ExprBase::ExprObjExtend(it) => &it.syntax,
2117 ExprBase::ExprParened(it) => &it.syntax,2139 ExprBase::ExprParened(it) => &it.syntax,
2118 ExprBase::ExprString(it) => &it.syntax,2140 ExprBase::ExprString(it) => &it.syntax,
2125 ExprBase::ExprVar(it) => &it.syntax,2147 ExprBase::ExprVar(it) => &it.syntax,
2126 ExprBase::ExprIfThenElse(it) => &it.syntax,2148 ExprBase::ExprIfThenElse(it) => &it.syntax,
2127 ExprBase::ExprFunction(it) => &it.syntax,2149 ExprBase::ExprFunction(it) => &it.syntax,
2128 ExprBase::ExprAssert(it) => &it.syntax,
2129 ExprBase::ExprError(it) => &it.syntax,2150 ExprBase::ExprError(it) => &it.syntax,
2130 }2151 }
2131 }2152 }
2344impl BinaryOperatorKind {2365impl BinaryOperatorKind {
2345 fn can_cast(kind: SyntaxKind) -> bool {2366 fn can_cast(kind: SyntaxKind) -> bool {
2346 match kind {2367 match kind {
2347 OR | AND | BIT_OR | BIT_XOR | BIT_AND | EQ | NE | LT | GT | LE | GE | IN_KW | LHS2368 OR | NULL_COAELSE | AND | BIT_OR | BIT_XOR | BIT_AND | EQ | NE | LT | GT | LE | GE
2348 | RHS | PLUS | MINUS | MUL | DIV | MODULO | META_OBJECT_APPLY | ERROR_NO_OPERATOR => true,2369 | IN_KW | LHS | RHS | PLUS | MINUS | MUL | DIV | MODULO | META_OBJECT_APPLY
2370 | ERROR_NO_OPERATOR => true,
2349 _ => false,2371 _ => false,
2350 }2372 }
2351 }2373 }
2352 pub fn cast(kind: SyntaxKind) -> Option<Self> {2374 pub fn cast(kind: SyntaxKind) -> Option<Self> {
2353 let res = match kind {2375 let res = match kind {
2354 OR => Self::Or,2376 OR => Self::Or,
2377 NULL_COAELSE => Self::NullCoaelse,
2355 AND => Self::And,2378 AND => Self::And,
2356 BIT_OR => Self::BitOr,2379 BIT_OR => Self::BitOr,
2357 BIT_XOR => Self::BitXor,2380 BIT_XOR => Self::BitXor,
2742 std::fmt::Display::fmt(self.syntax(), f)2765 std::fmt::Display::fmt(self.syntax(), f)
2743 }2766 }
2744}2767}
2768impl std::fmt::Display for Suffix {
2769 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2770 std::fmt::Display::fmt(self.syntax(), f)
2771 }
2772}
2773impl std::fmt::Display for Bind {
2774 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2775 std::fmt::Display::fmt(self.syntax(), f)
2776 }
2777}
2778impl std::fmt::Display for Stmt {
2779 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2780 std::fmt::Display::fmt(self.syntax(), f)
2781 }
2782}
2745impl std::fmt::Display for ObjBody {2783impl std::fmt::Display for ObjBody {
2746 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2784 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2747 std::fmt::Display::fmt(self.syntax(), f)2785 std::fmt::Display::fmt(self.syntax(), f)
2752 std::fmt::Display::fmt(self.syntax(), f)2790 std::fmt::Display::fmt(self.syntax(), f)
2753 }2791 }
2754}2792}
2755impl std::fmt::Display for Bind {
2756 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2757 std::fmt::Display::fmt(self.syntax(), f)
2758 }
2759}
2760impl std::fmt::Display for ExprBase {2793impl std::fmt::Display for ExprBase {
2761 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2794 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2762 std::fmt::Display::fmt(self.syntax(), f)2795 std::fmt::Display::fmt(self.syntax(), f)
2797 std::fmt::Display::fmt(self.syntax(), f)2830 std::fmt::Display::fmt(self.syntax(), f)
2798 }2831 }
2799}2832}
2833impl std::fmt::Display for SuffixIndex {
2834 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2835 std::fmt::Display::fmt(self.syntax(), f)
2836 }
2837}
2838impl std::fmt::Display for Name {
2839 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2840 std::fmt::Display::fmt(self.syntax(), f)
2841 }
2842}
2843impl std::fmt::Display for SuffixIndexExpr {
2844 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2845 std::fmt::Display::fmt(self.syntax(), f)
2846 }
2847}
2848impl std::fmt::Display for SuffixSlice {
2849 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2850 std::fmt::Display::fmt(self.syntax(), f)
2851 }
2852}
2853impl std::fmt::Display for SliceDesc {
2854 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2855 std::fmt::Display::fmt(self.syntax(), f)
2856 }
2857}
2858impl std::fmt::Display for SuffixApply {
2859 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2860 std::fmt::Display::fmt(self.syntax(), f)
2861 }
2862}
2863impl std::fmt::Display for ArgsDesc {
2864 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2865 std::fmt::Display::fmt(self.syntax(), f)
2866 }
2867}
2868impl std::fmt::Display for StmtLocal {
2869 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2870 std::fmt::Display::fmt(self.syntax(), f)
2871 }
2872}
2873impl std::fmt::Display for StmtAssert {
2874 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2875 std::fmt::Display::fmt(self.syntax(), f)
2876 }
2877}
2878impl std::fmt::Display for Assertion {
2879 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2880 std::fmt::Display::fmt(self.syntax(), f)
2881 }
2882}
2800impl std::fmt::Display for ExprBinary {2883impl std::fmt::Display for ExprBinary {
2801 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2884 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2802 std::fmt::Display::fmt(self.syntax(), f)2885 std::fmt::Display::fmt(self.syntax(), f)
2803 }2886 }
2804}2887}
2805impl std::fmt::Display for LhsExpr {
2806 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2807 std::fmt::Display::fmt(self.syntax(), f)
2808 }
2809}
2810impl std::fmt::Display for ExprUnary {2888impl std::fmt::Display for ExprUnary {
2811 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2889 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2812 std::fmt::Display::fmt(self.syntax(), f)2890 std::fmt::Display::fmt(self.syntax(), f)
2813 }2891 }
2814}2892}
2815impl std::fmt::Display for ExprSlice {
2816 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2817 std::fmt::Display::fmt(self.syntax(), f)
2818 }
2819}
2820impl std::fmt::Display for SliceDesc {
2821 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2822 std::fmt::Display::fmt(self.syntax(), f)
2823 }
2824}
2825impl std::fmt::Display for ExprIndex {
2826 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2827 std::fmt::Display::fmt(self.syntax(), f)
2828 }
2829}
2830impl std::fmt::Display for Name {
2831 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2832 std::fmt::Display::fmt(self.syntax(), f)
2833 }
2834}
2835impl std::fmt::Display for ExprIndexExpr {
2836 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2837 std::fmt::Display::fmt(self.syntax(), f)
2838 }
2839}
2840impl std::fmt::Display for ExprApply {
2841 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2842 std::fmt::Display::fmt(self.syntax(), f)
2843 }
2844}
2845impl std::fmt::Display for ArgsDesc {
2846 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2847 std::fmt::Display::fmt(self.syntax(), f)
2848 }
2849}
2850impl std::fmt::Display for ExprObjExtend {2893impl std::fmt::Display for ExprObjExtend {
2851 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2894 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2852 std::fmt::Display::fmt(self.syntax(), f)2895 std::fmt::Display::fmt(self.syntax(), f)
2922 std::fmt::Display::fmt(self.syntax(), f)2965 std::fmt::Display::fmt(self.syntax(), f)
2923 }2966 }
2924}2967}
2925impl std::fmt::Display for ExprAssert {
2926 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2927 std::fmt::Display::fmt(self.syntax(), f)
2928 }
2929}
2930impl std::fmt::Display for Assertion {
2931 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2932 std::fmt::Display::fmt(self.syntax(), f)
2933 }
2934}
2935impl std::fmt::Display for ExprError {2968impl std::fmt::Display for ExprError {
2936 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2969 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2937 std::fmt::Display::fmt(self.syntax(), f)2970 std::fmt::Display::fmt(self.syntax(), f)
2938 }2971 }
2939}2972}
2940impl std::fmt::Display for StmtLocal {
2941 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2942 std::fmt::Display::fmt(self.syntax(), f)
2943 }
2944}
2945impl std::fmt::Display for SliceDescEnd {2973impl std::fmt::Display for SliceDescEnd {
2946 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {2974 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2947 std::fmt::Display::fmt(self.syntax(), f)2975 std::fmt::Display::fmt(self.syntax(), f)
modifiedcrates/jrsonnet-rowan-parser/src/generated/syntax_kinds.rsdiffbeforeafterboth
19 EOF,19 EOF,
20 #[token("||")]20 #[token("||")]
21 OR,21 OR,
22 #[token("??")]
23 NULL_COAELSE,
22 #[token("&&")]24 #[token("&&")]
23 AND,25 AND,
24 #[token("|")]26 #[token("|")]
137 ERROR_COMMENT_UNTERMINATED,139 ERROR_COMMENT_UNTERMINATED,
138 #[token("tailstrict")]140 #[token("tailstrict")]
139 TAILSTRICT_KW,141 TAILSTRICT_KW,
142 #[token("local")]
143 LOCAL_KW,
140 #[token("importstr")]144 #[token("importstr")]
141 IMPORTSTR_KW,145 IMPORTSTR_KW,
142 #[token("importbin")]146 #[token("importbin")]
153 FUNCTION_KW,157 FUNCTION_KW,
154 #[token("error")]158 #[token("error")]
155 ERROR_KW,159 ERROR_KW,
156 #[token("local")]
157 LOCAL_KW,
158 #[token("in")]160 #[token("in")]
159 IN_KW,161 IN_KW,
160 META_OBJECT_APPLY,162 META_OBJECT_APPLY,
181 LEXING_ERROR,183 LEXING_ERROR,
182 SOURCE_FILE,184 SOURCE_FILE,
183 EXPR,185 EXPR,
184 EXPR_BINARY,186 SUFFIX_INDEX,
185 LHS_EXPR,
186 EXPR_UNARY,
187 EXPR_SLICE,
188 SLICE_DESC,
189 EXPR_INDEX,
190 NAME,187 NAME,
191 EXPR_INDEX_EXPR,188 SUFFIX_INDEX_EXPR,
192 EXPR_APPLY,189 SUFFIX_SLICE,
190 SLICE_DESC,
191 SUFFIX_APPLY,
193 ARGS_DESC,192 ARGS_DESC,
193 STMT_LOCAL,
194 STMT_ASSERT,
195 ASSERTION,
196 EXPR_BINARY,
197 EXPR_UNARY,
194 EXPR_OBJ_EXTEND,198 EXPR_OBJ_EXTEND,
206 FALSE_EXPR,210 FALSE_EXPR,
207 EXPR_FUNCTION,211 EXPR_FUNCTION,
208 PARAMS_DESC,212 PARAMS_DESC,
209 EXPR_ASSERT,
210 ASSERTION,
211 EXPR_ERROR,213 EXPR_ERROR,
212 STMT_LOCAL,
213 SLICE_DESC_END,214 SLICE_DESC_END,
214 SLICE_DESC_STEP,215 SLICE_DESC_STEP,
215 ARG,216 ARG,
234 DESTRUCT_OBJECT_FIELD,235 DESTRUCT_OBJECT_FIELD,
235 DESTRUCT_REST,236 DESTRUCT_REST,
236 DESTRUCT_ARRAY_ELEMENT,237 DESTRUCT_ARRAY_ELEMENT,
238 SUFFIX,
239 BIND,
240 STMT,
237 OBJ_BODY,241 OBJ_BODY,
238 COMP_SPEC,242 COMP_SPEC,
239 BIND,
240 EXPR_BASE,243 EXPR_BASE,
241 MEMBER_COMP,244 MEMBER_COMP,
242 MEMBER,245 MEMBER,
259impl SyntaxKind {262impl SyntaxKind {
260 pub fn is_keyword(self) -> bool {263 pub fn is_keyword(self) -> bool {
261 match self {264 match self {
262 OR | AND | BIT_OR | BIT_XOR | BIT_AND | EQ | NE | LT | GT | LE | GE | LHS | RHS265 OR | NULL_COAELSE | AND | BIT_OR | BIT_XOR | BIT_AND | EQ | NE | LT | GT | LE | GE
263 | PLUS | MINUS | MUL | DIV | MODULO | NOT | BIT_NOT | L_BRACK | R_BRACK | L_PAREN266 | LHS | RHS | PLUS | MINUS | MUL | DIV | MODULO | NOT | BIT_NOT | L_BRACK | R_BRACK
264 | R_PAREN | L_BRACE | R_BRACE | COLON | COLONCOLON | COLONCOLONCOLON | SEMI | DOT267 | L_PAREN | R_PAREN | L_BRACE | R_BRACE | COLON | COLONCOLON | COLONCOLONCOLON
265 | DOTDOTDOT | COMMA | DOLLAR | ASSIGN | QUESTION_MARK | TAILSTRICT_KW268 | SEMI | DOT | DOTDOTDOT | COMMA | DOLLAR | ASSIGN | QUESTION_MARK | TAILSTRICT_KW
266 | IMPORTSTR_KW | IMPORTBIN_KW | IMPORT_KW | IF_KW | THEN_KW | ELSE_KW | FUNCTION_KW269 | LOCAL_KW | IMPORTSTR_KW | IMPORTBIN_KW | IMPORT_KW | IF_KW | THEN_KW | ELSE_KW
267 | ERROR_KW | LOCAL_KW | IN_KW | NULL_KW | TRUE_KW | FALSE_KW | SELF_KW | SUPER_KW270 | FUNCTION_KW | ERROR_KW | IN_KW | NULL_KW | TRUE_KW | FALSE_KW | SELF_KW
268 | FOR_KW | ASSERT_KW => true,271 | SUPER_KW | FOR_KW | ASSERT_KW => true,
269 _ => false,272 _ => false,
270 }273 }
271 }274 }
272 pub fn is_enum(self) -> bool {275 pub fn is_enum(self) -> bool {
273 match self {276 match self {
274 OBJ_BODY | COMP_SPEC | BIND | EXPR_BASE | MEMBER_COMP | MEMBER | FIELD_NAME277 SUFFIX | BIND | STMT | OBJ_BODY | COMP_SPEC | EXPR_BASE | MEMBER_COMP | MEMBER
275 | DESTRUCT | DESTRUCT_ARRAY_PART | BINARY_OPERATOR | UNARY_OPERATOR | LITERAL278 | FIELD_NAME | DESTRUCT | DESTRUCT_ARRAY_PART | BINARY_OPERATOR | UNARY_OPERATOR
276 | TEXT | NUMBER | IMPORT_KIND | VISIBILITY | TRIVIA | CUSTOM_ERROR => true,279 | LITERAL | TEXT | NUMBER | IMPORT_KIND | VISIBILITY | TRIVIA | CUSTOM_ERROR => true,
277 _ => false,280 _ => false,
278 }281 }
279 }282 }
286 }289 }
287}290}
288#[macro_export]291#[macro_export]
289macro_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 } }292macro_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 } }
290pub use T;293pub use T;
291294
modifiedcrates/jrsonnet-rowan-parser/src/lib.rsdiffbeforeafterboth
23pub use language::*;23pub use language::*;
24pub use token_set::SyntaxKindSet;24pub use token_set::SyntaxKindSet;
25
26use self::{
27 ast::support,
28 generated::nodes::{Expr, ExprBinary, ExprObjExtend},
29};
2530
26pub fn parse(input: &str) -> (SourceFile, Vec<LocatedSyntaxError>) {31pub fn parse(input: &str) -> (SourceFile, Vec<LocatedSyntaxError>) {
27 let lexemes = lex(input);32 let lexemes = lex(input);
42 parse.errors,47 parse.errors,
43 )48 )
44}49}
50impl ExprBinary {
51 pub fn lhs_work(&self) -> Option<Expr> {
52 support::child(self.syntax())
53 }
54 pub fn rhs_work(&self) -> Option<Expr> {
55 let mut children = support::children(self.syntax());
56 // skip lhs
57 children.next()?;
58 children.next()
59 }
60}
61impl ExprObjExtend {
62 pub fn lhs_work(&self) -> Option<Expr> {
63 support::child(self.syntax())
64 }
65 pub fn rhs_work(&self) -> Option<Expr> {
66 let mut children = support::children(self.syntax());
67 // skip lhs
68 children.next()?;
69 children.next()
70 }
71}
4572
modifiedcrates/jrsonnet-rowan-parser/src/parser.rsdiffbeforeafterboth
293}293}
294294
295fn expr(p: &mut Parser) -> CompletedMarker {295fn expr(p: &mut Parser) -> CompletedMarker {
296 let m = p.start();
296 while p.at(T![local]) {297 while p.at(T![local]) || p.at(T![assert]) {
297 let m = p.start();298 let m = p.start();
298299
300 if p.at(T![local]) {
299 p.bump();301 p.bump();
300 loop {302 loop {
301 if p.at(T![;]) {303 if p.at(T![;]) {
312 break;314 break;
313 }315 }
314 m.complete(p, STMT_LOCAL);316 m.complete(p, STMT_LOCAL);
317 } else {
318 assertion(p);
319 p.expect(T![;]);
320 m.complete(p, STMT_ASSERT);
321 }
315 }322 }
316 match expr_binding_power(p, 0) {323 match expr_binding_power(p, 0) {
317 Ok(m) => m,324 Ok(m) => m,
318 Err(m) => m,325 Err(m) => m,
319 }326 };
327 m.complete(p, EXPR)
320}328}
321fn expr_binding_power(329fn expr_binding_power(
322 p: &mut Parser,330 p: &mut Parser,
337 p.bump();345 p.bump();
338 }346 }
339347
340 let m = lhs.wrap(p, LHS_EXPR).precede(p);348 let m = lhs.wrap(p, EXPR).precede(p);
341 let parsed_rhs = expr_binding_power(p, right_binding_power).is_ok();349 let parsed_rhs = expr_binding_power(p, right_binding_power)
350 .map(|v| v.precede(p).complete(p, EXPR))
351 .is_ok();
342 lhs = m.complete(352 lhs = m.complete(
343 p,353 p,
361 if p.at(T![for]) {371 if p.at(T![for]) {
362 let m = p.start();372 let m = p.start();
363 p.bump();373 p.bump();
364 name(p);374 destruct(p);
365 p.expect(T![in]);375 p.expect(T![in]);
366 expr(p);376 expr(p);
367 m.complete(p, FOR_SPEC)377 m.complete(p, FOR_SPEC)
420fn assertion(p: &mut Parser) {430fn assertion(p: &mut Parser) {
421 let m = p.start();431 let m = p.start();
422 p.bump_assert(T![assert]);432 p.bump_assert(T![assert]);
423 expr(p).wrap(p, LHS_EXPR);433 expr(p);
424 if p.at(T![:]) {434 if p.at(T![:]) {
425 p.bump();435 p.bump();
426 expr(p);436 expr(p);
504 for errored in compspecs {514 for errored in compspecs {
505 errored.wrap_error(515 errored.wrap_error(
506 p,516 p,
507 "compspec may only be used if there is only one array element",517 "compspec may only be used if there is only one object element",
508 );518 );
509 }519 }
510 m.complete(p, OBJ_BODY_MEMBER_LIST);520 m.complete(p, OBJ_BODY_MEMBER_LIST);
612 p.expect(T![']']);622 p.expect(T![']']);
613 break;623 break;
614 }624 }
615 elems += 1;
616 expr(p);625 expr(p);
626 elems += 1;
617 while p.at_ts(COMPSPEC) {627 while p.at_ts(COMPSPEC) {
618 compspecs.push(compspec(p));628 compspecs.push(compspec(p));
619 }629 }
679 true689 true
680}690}
681691
682fn lhs(p: &mut Parser) -> Result<CompletedMarker, CompletedMarker> {692fn suffix(p: &mut Parser) {
693 loop {
683 let mut lhs = lhs_basic(p)?;694 let start = p.start();
684
685 loop {
686 if p.at(T![.]) {695 let _marker: CompletedMarker = if p.at(T![?]) {
687 let m = lhs.precede(p);696 p.bump();
688 p.bump();697 p.expect(T![.]);
698 if p.at(IDENT) {
689 name(p);699 name(p);
690 lhs = m.complete(p, EXPR_INDEX);700 start.complete(p, SUFFIX_INDEX)
701 } else if p.at(T!['[']) {
702 p.bump();
703 expr(p);
704 p.expect(T![']']);
705 start.complete(p, SUFFIX_INDEX_EXPR)
706 } else {
707 start.complete_missing(p, ExpectedSyntax::Named("index"))
708 }
691 } else if p.at(T!['[']) {709 } else if p.at(T![.]) {
710 p.bump();
711 name(p);
712 start.complete(p, SUFFIX_INDEX)
713 } else if p.at(T!['[']) {
692 if slice_desc_or_index(p) {714 if slice_desc_or_index(p) {
693 lhs = lhs.precede(p).complete(p, EXPR_SLICE);715 start.complete(p, SUFFIX_SLICE)
694 } else {716 } else {
695 lhs = lhs
696 .wrap(p, LHS_EXPR)717 start.complete(p, SUFFIX_INDEX_EXPR)
697 .precede(p)
698 .complete(p, EXPR_INDEX_EXPR);
699 }718 }
700 } else if p.at(T!['(']) {719 } else if p.at(T!['(']) {
701 let m = lhs.precede(p);
702 args_desc(p);720 args_desc(p);
703 lhs = m.complete(p, EXPR_APPLY);721 start.complete(p, SUFFIX_APPLY)
704 } else {722 } else {
723 start.forget(p);
705 break;724 break;
706 }725 };
707 }726 }
708
709 Ok(lhs)
710}727}
728
729fn lhs(p: &mut Parser) -> Result<CompletedMarker, CompletedMarker> {
730 let lhs = lhs_basic(p)?;
731
732 suffix(p);
733
734 Ok(lhs)
735}
711fn name(p: &mut Parser) {736fn name(p: &mut Parser) {
712 let m = p.start();737 let m = p.start();
713 p.expect(IDENT);738 p.expect(IDENT);
885 p.bump();910 p.bump();
886 expr(p);911 expr(p);
887 m.complete(p, EXPR_ERROR)912 m.complete(p, EXPR_ERROR)
888 } else if p.at(T![assert]) {913 } else if p.at(T![import]) || p.at(T![importstr]) || p.at(T![importbin]) {
889 let m = p.start();
890 assertion(p);
891 p.expect(T![;]);
892 expr(p);
893 m.complete(p, EXPR_ASSERT)
894 } else if p.at(T![import]) || p.at(T![importstr]) || p.at(T![importbin]) {
895 let m = p.start();914 let m = p.start();
896 p.bump();915 p.bump();
897 text(p);916 text(p);
modifiedcrates/jrsonnet-rowan-parser/src/precedence.rsdiffbeforeafterboth
13 Self::BitXor => (8, 9),13 Self::BitXor => (8, 9),
14 Self::BitOr => (6, 7),14 Self::BitOr => (6, 7),
15 Self::And => (4, 5),15 Self::And => (4, 5),
16 Self::NullCoaelse => (2, 3),
16 Self::Or => (2, 3),17 Self::Or => (2, 3),
17 Self::ErrorNoOperator => (0, 1),18 Self::ErrorNoOperator => (0, 1),
18 }19 }
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec.snapdiffbeforeafterboth
3expression: "[a for a in [1, 2, 3]]\n"3expression: "[a for a in [1, 2, 3]]\n"
4---4---
5SOURCE_FILE@0..235SOURCE_FILE@0..23
6 EXPR_ARRAY_COMP@0..226 EXPR@0..22
7 EXPR_ARRAY_COMP@0..22
7 L_BRACK@0..1 "["8 L_BRACK@0..1 "["
8 EXPR_VAR@1..29 EXPR@1..2
10 EXPR_VAR@1..2
9 NAME@1..211 NAME@1..2
10 IDENT@1..2 "a"12 IDENT@1..2 "a"
11 WHITESPACE@2..3 " "13 WHITESPACE@2..3 " "
12 FOR_SPEC@3..2114 FOR_SPEC@3..21
13 FOR_KW@3..6 "for"15 FOR_KW@3..6 "for"
14 WHITESPACE@6..7 " "16 WHITESPACE@6..7 " "
15 NAME@7..817 DESTRUCT_FULL@7..8
18 NAME@7..8
16 IDENT@7..8 "a"19 IDENT@7..8 "a"
17 WHITESPACE@8..9 " "20 WHITESPACE@8..9 " "
18 IN_KW@9..11 "in"21 IN_KW@9..11 "in"
19 WHITESPACE@11..12 " "22 WHITESPACE@11..12 " "
20 EXPR_ARRAY@12..2123 EXPR@12..21
24 EXPR_ARRAY@12..21
21 L_BRACK@12..13 "["25 L_BRACK@12..13 "["
22 EXPR_NUMBER@13..1426 EXPR@13..14
27 EXPR_NUMBER@13..14
23 FLOAT@13..14 "1"28 FLOAT@13..14 "1"
24 COMMA@14..15 ","29 COMMA@14..15 ","
25 WHITESPACE@15..16 " "30 WHITESPACE@15..16 " "
26 EXPR_NUMBER@16..1731 EXPR@16..17
32 EXPR_NUMBER@16..17
27 FLOAT@16..17 "2"33 FLOAT@16..17 "2"
28 COMMA@17..18 ","34 COMMA@17..18 ","
29 WHITESPACE@18..19 " "35 WHITESPACE@18..19 " "
30 EXPR_NUMBER@19..2036 EXPR@19..20
37 EXPR_NUMBER@19..20
31 FLOAT@19..20 "3"38 FLOAT@19..20 "3"
32 R_BRACK@20..21 "]"39 R_BRACK@20..21 "]"
33 R_BRACK@21..22 "]"40 R_BRACK@21..22 "]"
34 WHITESPACE@22..23 "\n"41 WHITESPACE@22..23 "\n"
3542
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_comma.snapdiffbeforeafterboth
3expression: "[a, for a in [1, 2, 3]]\n"3expression: "[a, for a in [1, 2, 3]]\n"
4---4---
5SOURCE_FILE@0..245SOURCE_FILE@0..24
6 EXPR_ARRAY_COMP@0..236 EXPR@0..23
7 EXPR_ARRAY_COMP@0..23
7 L_BRACK@0..1 "["8 L_BRACK@0..1 "["
8 EXPR_VAR@1..29 EXPR@1..2
10 EXPR_VAR@1..2
9 NAME@1..211 NAME@1..2
10 IDENT@1..2 "a"12 IDENT@1..2 "a"
11 COMMA@2..3 ","13 COMMA@2..3 ","
12 WHITESPACE@3..4 " "14 WHITESPACE@3..4 " "
13 FOR_SPEC@4..2215 FOR_SPEC@4..22
14 FOR_KW@4..7 "for"16 FOR_KW@4..7 "for"
15 WHITESPACE@7..8 " "17 WHITESPACE@7..8 " "
16 NAME@8..918 DESTRUCT_FULL@8..9
19 NAME@8..9
17 IDENT@8..9 "a"20 IDENT@8..9 "a"
18 WHITESPACE@9..10 " "21 WHITESPACE@9..10 " "
19 IN_KW@10..12 "in"22 IN_KW@10..12 "in"
20 WHITESPACE@12..13 " "23 WHITESPACE@12..13 " "
21 EXPR_ARRAY@13..2224 EXPR@13..22
25 EXPR_ARRAY@13..22
22 L_BRACK@13..14 "["26 L_BRACK@13..14 "["
23 EXPR_NUMBER@14..1527 EXPR@14..15
28 EXPR_NUMBER@14..15
24 FLOAT@14..15 "1"29 FLOAT@14..15 "1"
25 COMMA@15..16 ","30 COMMA@15..16 ","
26 WHITESPACE@16..17 " "31 WHITESPACE@16..17 " "
27 EXPR_NUMBER@17..1832 EXPR@17..18
33 EXPR_NUMBER@17..18
28 FLOAT@17..18 "2"34 FLOAT@17..18 "2"
29 COMMA@18..19 ","35 COMMA@18..19 ","
30 WHITESPACE@19..20 " "36 WHITESPACE@19..20 " "
31 EXPR_NUMBER@20..2137 EXPR@20..21
38 EXPR_NUMBER@20..21
32 FLOAT@20..21 "3"39 FLOAT@20..21 "3"
33 R_BRACK@21..22 "]"40 R_BRACK@21..22 "]"
34 R_BRACK@22..23 "]"41 R_BRACK@22..23 "]"
35 WHITESPACE@23..24 "\n"42 WHITESPACE@23..24 "\n"
3643
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_incompatible_with_multiple_elems.snapdiffbeforeafterboth
3expression: "[a for a in [1, 2, 3], b]\n"3expression: "[a for a in [1, 2, 3], b]\n"
4---4---
5SOURCE_FILE@0..265SOURCE_FILE@0..26
6 EXPR_ARRAY@0..256 EXPR@0..25
7 EXPR_ARRAY@0..25
7 L_BRACK@0..1 "["8 L_BRACK@0..1 "["
8 EXPR_VAR@1..29 EXPR@1..2
10 EXPR_VAR@1..2
9 NAME@1..211 NAME@1..2
10 IDENT@1..2 "a"12 IDENT@1..2 "a"
11 WHITESPACE@2..3 " "13 WHITESPACE@2..3 " "
12 ERROR_CUSTOM@3..2114 ERROR_CUSTOM@3..21
13 FOR_SPEC@3..2115 FOR_SPEC@3..21
14 FOR_KW@3..6 "for"16 FOR_KW@3..6 "for"
15 WHITESPACE@6..7 " "17 WHITESPACE@6..7 " "
16 NAME@7..818 DESTRUCT_FULL@7..8
19 NAME@7..8
17 IDENT@7..8 "a"20 IDENT@7..8 "a"
18 WHITESPACE@8..9 " "21 WHITESPACE@8..9 " "
19 IN_KW@9..11 "in"22 IN_KW@9..11 "in"
20 WHITESPACE@11..12 " "23 WHITESPACE@11..12 " "
21 EXPR_ARRAY@12..2124 EXPR@12..21
25 EXPR_ARRAY@12..21
22 L_BRACK@12..13 "["26 L_BRACK@12..13 "["
23 EXPR_NUMBER@13..1427 EXPR@13..14
28 EXPR_NUMBER@13..14
24 FLOAT@13..14 "1"29 FLOAT@13..14 "1"
25 COMMA@14..15 ","30 COMMA@14..15 ","
26 WHITESPACE@15..16 " "31 WHITESPACE@15..16 " "
27 EXPR_NUMBER@16..1732 EXPR@16..17
33 EXPR_NUMBER@16..17
28 FLOAT@16..17 "2"34 FLOAT@16..17 "2"
29 COMMA@17..18 ","35 COMMA@17..18 ","
30 WHITESPACE@18..19 " "36 WHITESPACE@18..19 " "
31 EXPR_NUMBER@19..2037 EXPR@19..20
38 EXPR_NUMBER@19..20
32 FLOAT@19..20 "3"39 FLOAT@19..20 "3"
33 R_BRACK@20..21 "]"40 R_BRACK@20..21 "]"
34 COMMA@21..22 ","41 COMMA@21..22 ","
35 WHITESPACE@22..23 " "42 WHITESPACE@22..23 " "
36 EXPR_VAR@23..2443 EXPR@23..24
44 EXPR_VAR@23..24
37 NAME@23..2445 NAME@23..24
38 IDENT@23..24 "b"46 IDENT@23..24 "b"
39 R_BRACK@24..25 "]"47 R_BRACK@24..25 "]"
40 WHITESPACE@25..26 "\n"48 WHITESPACE@25..26 "\n"
41===49===
42LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one array element" }, range: 3..21 }50LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one array element" }, range: 3..21 }
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_incompatible_with_multiple_elems_w.snapdiffbeforeafterboth
3expression: "[a, b, for a in [1, 2, 3], c]\n"3expression: "[a, b, for a in [1, 2, 3], c]\n"
4---4---
5SOURCE_FILE@0..305SOURCE_FILE@0..30
6 EXPR_ARRAY@0..296 EXPR@0..29
7 EXPR_ARRAY@0..29
7 L_BRACK@0..1 "["8 L_BRACK@0..1 "["
8 EXPR_VAR@1..29 EXPR@1..2
10 EXPR_VAR@1..2
9 NAME@1..211 NAME@1..2
10 IDENT@1..2 "a"12 IDENT@1..2 "a"
11 COMMA@2..3 ","13 COMMA@2..3 ","
12 WHITESPACE@3..4 " "14 WHITESPACE@3..4 " "
13 EXPR_VAR@4..515 EXPR@4..5
16 EXPR_VAR@4..5
14 NAME@4..517 NAME@4..5
15 IDENT@4..5 "b"18 IDENT@4..5 "b"
16 COMMA@5..6 ","19 COMMA@5..6 ","
17 WHITESPACE@6..7 " "20 WHITESPACE@6..7 " "
18 ERROR_CUSTOM@7..2521 ERROR_CUSTOM@7..25
19 FOR_SPEC@7..2522 FOR_SPEC@7..25
20 FOR_KW@7..10 "for"23 FOR_KW@7..10 "for"
21 WHITESPACE@10..11 " "24 WHITESPACE@10..11 " "
22 NAME@11..1225 DESTRUCT_FULL@11..12
26 NAME@11..12
23 IDENT@11..12 "a"27 IDENT@11..12 "a"
24 WHITESPACE@12..13 " "28 WHITESPACE@12..13 " "
25 IN_KW@13..15 "in"29 IN_KW@13..15 "in"
26 WHITESPACE@15..16 " "30 WHITESPACE@15..16 " "
27 EXPR_ARRAY@16..2531 EXPR@16..25
32 EXPR_ARRAY@16..25
28 L_BRACK@16..17 "["33 L_BRACK@16..17 "["
29 EXPR_NUMBER@17..1834 EXPR@17..18
35 EXPR_NUMBER@17..18
30 FLOAT@17..18 "1"36 FLOAT@17..18 "1"
31 COMMA@18..19 ","37 COMMA@18..19 ","
32 WHITESPACE@19..20 " "38 WHITESPACE@19..20 " "
33 EXPR_NUMBER@20..2139 EXPR@20..21
40 EXPR_NUMBER@20..21
34 FLOAT@20..21 "2"41 FLOAT@20..21 "2"
35 COMMA@21..22 ","42 COMMA@21..22 ","
36 WHITESPACE@22..23 " "43 WHITESPACE@22..23 " "
37 EXPR_NUMBER@23..2444 EXPR@23..24
45 EXPR_NUMBER@23..24
38 FLOAT@23..24 "3"46 FLOAT@23..24 "3"
39 R_BRACK@24..25 "]"47 R_BRACK@24..25 "]"
40 COMMA@25..26 ","48 COMMA@25..26 ","
41 WHITESPACE@26..27 " "49 WHITESPACE@26..27 " "
42 EXPR_VAR@27..2850 EXPR@27..28
51 EXPR_VAR@27..28
43 NAME@27..2852 NAME@27..28
44 IDENT@27..28 "c"53 IDENT@27..28 "c"
45 R_BRACK@28..29 "]"54 R_BRACK@28..29 "]"
46 WHITESPACE@29..30 "\n"55 WHITESPACE@29..30 "\n"
47===56===
48LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one array element" }, range: 7..25 }57LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one array element" }, range: 7..25 }
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__arr_compspec_no_elems.snapdiffbeforeafterboth
3expression: "[for a in [1, 2, 3]]\n"3expression: "[for a in [1, 2, 3]]\n"
4---4---
5SOURCE_FILE@0..215SOURCE_FILE@0..21
6 EXPR_ARRAY_COMP@0..206 EXPR@0..20
7 EXPR_ARRAY_COMP@0..20
7 L_BRACK@0..1 "["8 L_BRACK@0..1 "["
8 ERROR_MISSING_TOKEN@1..19 EXPR@1..1
10 ERROR_MISSING_TOKEN@1..1
9 FOR_SPEC@1..1911 FOR_SPEC@1..19
10 FOR_KW@1..4 "for"12 FOR_KW@1..4 "for"
11 WHITESPACE@4..5 " "13 WHITESPACE@4..5 " "
12 NAME@5..614 DESTRUCT_FULL@5..6
15 NAME@5..6
13 IDENT@5..6 "a"16 IDENT@5..6 "a"
14 WHITESPACE@6..7 " "17 WHITESPACE@6..7 " "
15 IN_KW@7..9 "in"18 IN_KW@7..9 "in"
16 WHITESPACE@9..10 " "19 WHITESPACE@9..10 " "
17 EXPR_ARRAY@10..1920 EXPR@10..19
21 EXPR_ARRAY@10..19
18 L_BRACK@10..11 "["22 L_BRACK@10..11 "["
19 EXPR_NUMBER@11..1223 EXPR@11..12
24 EXPR_NUMBER@11..12
20 FLOAT@11..12 "1"25 FLOAT@11..12 "1"
21 COMMA@12..13 ","26 COMMA@12..13 ","
22 WHITESPACE@13..14 " "27 WHITESPACE@13..14 " "
23 EXPR_NUMBER@14..1528 EXPR@14..15
29 EXPR_NUMBER@14..15
24 FLOAT@14..15 "2"30 FLOAT@14..15 "2"
25 COMMA@15..16 ","31 COMMA@15..16 ","
26 WHITESPACE@16..17 " "32 WHITESPACE@16..17 " "
27 EXPR_NUMBER@17..1833 EXPR@17..18
34 EXPR_NUMBER@17..18
28 FLOAT@17..18 "3"35 FLOAT@17..18 "3"
29 R_BRACK@18..19 "]"36 R_BRACK@18..19 "]"
30 R_BRACK@19..20 "]"37 R_BRACK@19..20 "]"
31 WHITESPACE@20..21 "\n"38 WHITESPACE@20..21 "\n"
32===39===
33LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 1..1 }40LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 1..1 }
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__continue_after_total_failure.snapdiffbeforeafterboth
3expression: "local intr = $intrinsic(test);\n\nlocal a = 1, b = 2, c = a + b;\n\n[c]\n"3expression: "local intr = $intrinsic(test);\n\nlocal a = 1, b = 2, c = a + b;\n\n[c]\n"
4---4---
5SOURCE_FILE@0..685SOURCE_FILE@0..68
6 STMT_LOCAL@0..236 EXPR@0..29
7 STMT_LOCAL@0..23
7 LOCAL_KW@0..5 "local"8 LOCAL_KW@0..5 "local"
8 WHITESPACE@5..6 " "9 WHITESPACE@5..6 " "
9 BIND_DESTRUCT@6..1410 BIND_DESTRUCT@6..14
10 DESTRUCT_FULL@6..1011 DESTRUCT_FULL@6..10
11 NAME@6..1012 NAME@6..10
12 IDENT@6..10 "intr"13 IDENT@6..10 "intr"
13 WHITESPACE@10..11 " "14 WHITESPACE@10..11 " "
14 ASSIGN@11..12 "="15 ASSIGN@11..12 "="
15 WHITESPACE@12..13 " "16 WHITESPACE@12..13 " "
16 EXPR_LITERAL@13..1417 EXPR@13..14
18 EXPR_LITERAL@13..14
17 DOLLAR@13..14 "$"19 DOLLAR@13..14 "$"
18 ERROR_UNEXPECTED_TOKEN@14..2320 ERROR_UNEXPECTED_TOKEN@14..23
19 IDENT@14..23 "intrinsic"21 IDENT@14..23 "intrinsic"
20 EXPR_PARENED@23..2922 EXPR_PARENED@23..29
21 L_PAREN@23..24 "("23 L_PAREN@23..24 "("
22 EXPR_VAR@24..2824 EXPR@24..28
25 EXPR_VAR@24..28
23 NAME@24..2826 NAME@24..28
24 IDENT@24..28 "test"27 IDENT@24..28 "test"
25 R_PAREN@28..29 ")"28 R_PAREN@28..29 ")"
26 ERROR_CUSTOM@29..6729 ERROR_CUSTOM@29..67
27 SEMI@29..30 ";"30 SEMI@29..30 ";"
28 WHITESPACE@30..32 "\n\n"31 WHITESPACE@30..32 "\n\n"
58 R_BRACK@66..67 "]"61 R_BRACK@66..67 "]"
59 WHITESPACE@67..68 "\n"62 WHITESPACE@67..68 "\n"
60===63===
61LocatedSyntaxError { error: Unexpected { expected: Unnamed(SyntaxKindSet([L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA])), found: IDENT }, range: 14..23 }64LocatedSyntaxError { error: Unexpected { expected: Unnamed(SyntaxKindSet([L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA, QUESTION_MARK])), found: IDENT }, range: 14..23 }
62LocatedSyntaxError { error: Custom { error: "unexpected tokens after end" }, range: 29..67 }65LocatedSyntaxError { error: Custom { error: "unexpected tokens after end" }, range: 29..67 }
63===66===
64 x syntax error67 x syntax error
65 ,-[1:1]68 ,-[1:1]
66 1 | ,-> local intr = $intrinsic(test);69 1 | ,-> local intr = $intrinsic(test);
67 : || ^^^^|^^^^70 : || ^^^^|^^^^
68 : || `-- expected L_BRACK, L_PAREN, L_BRACE, SEMI, DOT or COMMA, found IDENT71 : || `-- expected L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA or QUESTION_MARK, found IDENT
69 2 | |72 2 | |
70 3 | | local a = 1, b = 2, c = a + b;73 3 | | local a = 1, b = 2, c = a + b;
71 4 | |74 4 | |
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__destruct.snapdiffbeforeafterboth
3expression: "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"3expression: "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"
4---4---
5SOURCE_FILE@0..2935SOURCE_FILE@0..293
6 STMT_LOCAL@0..226 EXPR@0..292
7 LOCAL_KW@0..5 "local"7 STMT_LOCAL@0..22
8 WHITESPACE@5..6 " "8 LOCAL_KW@0..5 "local"
9 BIND_DESTRUCT@6..219 WHITESPACE@5..6 " "
10 DESTRUCT_ARRAY@6..1510 BIND_DESTRUCT@6..21
11 L_BRACK@6..7 "["11 DESTRUCT_ARRAY@6..15
12 DESTRUCT_FULL@7..812 L_BRACK@6..7 "["
13 NAME@7..813 DESTRUCT_FULL@7..8
14 IDENT@7..8 "a"14 NAME@7..8
15 COMMA@8..9 ","15 IDENT@7..8 "a"
16 WHITESPACE@9..10 " "16 COMMA@8..9 ","
17 DESTRUCT_FULL@10..1117 WHITESPACE@9..10 " "
18 NAME@10..1118 DESTRUCT_FULL@10..11
19 IDENT@10..11 "b"19 NAME@10..11
20 COMMA@11..12 ","20 IDENT@10..11 "b"
21 WHITESPACE@12..13 " "21 COMMA@11..12 ","
22 DESTRUCT_FULL@13..1422 WHITESPACE@12..13 " "
23 NAME@13..1423 DESTRUCT_FULL@13..14
24 IDENT@13..14 "c"24 NAME@13..14
25 R_BRACK@14..15 "]"25 IDENT@13..14 "c"
26 WHITESPACE@15..16 " "26 R_BRACK@14..15 "]"
27 ASSIGN@16..17 "="27 WHITESPACE@15..16 " "
28 WHITESPACE@17..18 " "28 ASSIGN@16..17 "="
29 EXPR_VAR@18..2129 WHITESPACE@17..18 " "
30 NAME@18..2130 EXPR@18..21
31 IDENT@18..21 "arr"31 EXPR_VAR@18..21
32 SEMI@21..22 ";"32 NAME@18..21
33 WHITESPACE@22..23 "\n"33 IDENT@18..21 "arr"
34 STMT_LOCAL@23..4934 SEMI@21..22 ";"
35 LOCAL_KW@23..28 "local"35 WHITESPACE@22..23 "\n"
36 WHITESPACE@28..29 " "36 STMT_LOCAL@23..49
37 BIND_DESTRUCT@29..4837 LOCAL_KW@23..28 "local"
38 DESTRUCT_ARRAY@29..3738 WHITESPACE@28..29 " "
39 L_BRACK@29..30 "["39 BIND_DESTRUCT@29..48
40 DESTRUCT_FULL@30..3140 DESTRUCT_ARRAY@29..37
41 NAME@30..3141 L_BRACK@29..30 "["
42 IDENT@30..31 "a"42 DESTRUCT_FULL@30..31
43 COMMA@31..32 ","43 NAME@30..31
44 WHITESPACE@32..33 " "44 IDENT@30..31 "a"
45 DESTRUCT_REST@33..3645 COMMA@31..32 ","
46 DOTDOTDOT@33..36 "..."46 WHITESPACE@32..33 " "
47 R_BRACK@36..37 "]"47 DESTRUCT_REST@33..36
48 WHITESPACE@37..38 " "48 DOTDOTDOT@33..36 "..."
49 ASSIGN@38..39 "="49 R_BRACK@36..37 "]"
50 WHITESPACE@39..40 " "50 WHITESPACE@37..38 " "
51 EXPR_VAR@40..4851 ASSIGN@38..39 "="
52 NAME@40..4852 WHITESPACE@39..40 " "
53 IDENT@40..48 "arr_rest"53 EXPR@40..48
54 SEMI@48..49 ";"54 EXPR_VAR@40..48
55 WHITESPACE@49..50 "\n"55 NAME@40..48
56 STMT_LOCAL@50..7656 IDENT@40..48 "arr_rest"
57 LOCAL_KW@50..55 "local"57 SEMI@48..49 ";"
58 WHITESPACE@55..56 " "58 WHITESPACE@49..50 "\n"
59 BIND_DESTRUCT@56..7559 STMT_LOCAL@50..76
60 DESTRUCT_ARRAY@56..6460 LOCAL_KW@50..55 "local"
61 L_BRACK@56..57 "["61 WHITESPACE@55..56 " "
62 DESTRUCT_REST@57..6062 BIND_DESTRUCT@56..75
63 DOTDOTDOT@57..60 "..."63 DESTRUCT_ARRAY@56..64
64 COMMA@60..61 ","64 L_BRACK@56..57 "["
65 WHITESPACE@61..62 " "65 DESTRUCT_REST@57..60
66 DESTRUCT_FULL@62..6366 DOTDOTDOT@57..60 "..."
67 NAME@62..6367 COMMA@60..61 ","
68 IDENT@62..63 "a"68 WHITESPACE@61..62 " "
69 R_BRACK@63..64 "]"69 DESTRUCT_FULL@62..63
70 WHITESPACE@64..65 " "70 NAME@62..63
71 ASSIGN@65..66 "="71 IDENT@62..63 "a"
72 WHITESPACE@66..67 " "72 R_BRACK@63..64 "]"
73 EXPR_VAR@67..7573 WHITESPACE@64..65 " "
74 NAME@67..7574 ASSIGN@65..66 "="
75 IDENT@67..75 "rest_arr"75 WHITESPACE@66..67 " "
76 SEMI@75..76 ";"76 EXPR@67..75
77 WHITESPACE@76..77 "\n"77 EXPR_VAR@67..75
78 STMT_LOCAL@77..10378 NAME@67..75
79 LOCAL_KW@77..82 "local"79 IDENT@67..75 "rest_arr"
80 WHITESPACE@82..83 " "80 SEMI@75..76 ";"
81 BIND_DESTRUCT@83..10281 WHITESPACE@76..77 "\n"
82 DESTRUCT_ARRAY@83..8882 STMT_LOCAL@77..103
83 L_BRACK@83..84 "["83 LOCAL_KW@77..82 "local"
84 DESTRUCT_REST@84..8784 WHITESPACE@82..83 " "
85 DOTDOTDOT@84..87 "..."85 BIND_DESTRUCT@83..102
86 R_BRACK@87..88 "]"86 DESTRUCT_ARRAY@83..88
87 WHITESPACE@88..89 " "87 L_BRACK@83..84 "["
88 ASSIGN@89..90 "="88 DESTRUCT_REST@84..87
89 WHITESPACE@90..91 " "89 DOTDOTDOT@84..87 "..."
90 EXPR_VAR@91..10290 R_BRACK@87..88 "]"
91 NAME@91..10291 WHITESPACE@88..89 " "
92 IDENT@91..102 "rest_in_arr"92 ASSIGN@89..90 "="
93 SEMI@102..103 ";"93 WHITESPACE@90..91 " "
94 WHITESPACE@103..104 "\n"94 EXPR@91..102
95 STMT_LOCAL@104..13395 EXPR_VAR@91..102
96 LOCAL_KW@104..109 "local"96 NAME@91..102
97 WHITESPACE@109..110 " "97 IDENT@91..102 "rest_in_arr"
98 BIND_DESTRUCT@110..13298 SEMI@102..103 ";"
99 DESTRUCT_ARRAY@110..11999 WHITESPACE@103..104 "\n"
100 L_BRACK@110..111 "["100 STMT_LOCAL@104..133
101 DESTRUCT_FULL@111..112101 LOCAL_KW@104..109 "local"
102 NAME@111..112102 WHITESPACE@109..110 " "
103 IDENT@111..112 "a"103 BIND_DESTRUCT@110..132
104 COMMA@112..113 ","104 DESTRUCT_ARRAY@110..119
105 WHITESPACE@113..114 " "105 L_BRACK@110..111 "["
106 DESTRUCT_REST@114..118106 DESTRUCT_FULL@111..112
107 DOTDOTDOT@114..117 "..."107 NAME@111..112
108 IDENT@117..118 "n"108 IDENT@111..112 "a"
109 R_BRACK@118..119 "]"109 COMMA@112..113 ","
110 WHITESPACE@119..120 " "110 WHITESPACE@113..114 " "
111 ASSIGN@120..121 "="111 DESTRUCT_REST@114..118
112 WHITESPACE@121..122 " "112 DOTDOTDOT@114..117 "..."
113 EXPR_VAR@122..132113 IDENT@117..118 "n"
114 NAME@122..132114 R_BRACK@118..119 "]"
115 IDENT@122..132 "arr_rest_n"115 WHITESPACE@119..120 " "
116 SEMI@132..133 ";"116 ASSIGN@120..121 "="
117 WHITESPACE@133..134 "\n"117 WHITESPACE@121..122 " "
118 STMT_LOCAL@134..163118 EXPR@122..132
119 LOCAL_KW@134..139 "local"119 EXPR_VAR@122..132
120 WHITESPACE@139..140 " "120 NAME@122..132
121 BIND_DESTRUCT@140..162121 IDENT@122..132 "arr_rest_n"
122 DESTRUCT_ARRAY@140..149122 SEMI@132..133 ";"
123 L_BRACK@140..141 "["123 WHITESPACE@133..134 "\n"
124 DESTRUCT_REST@141..145124 STMT_LOCAL@134..163
125 DOTDOTDOT@141..144 "..."125 LOCAL_KW@134..139 "local"
126 IDENT@144..145 "n"126 WHITESPACE@139..140 " "
127 COMMA@145..146 ","127 BIND_DESTRUCT@140..162
128 WHITESPACE@146..147 " "128 DESTRUCT_ARRAY@140..149
129 DESTRUCT_FULL@147..148129 L_BRACK@140..141 "["
130 NAME@147..148130 DESTRUCT_REST@141..145
131 IDENT@147..148 "a"131 DOTDOTDOT@141..144 "..."
132 R_BRACK@148..149 "]"132 IDENT@144..145 "n"
133 WHITESPACE@149..150 " "133 COMMA@145..146 ","
134 ASSIGN@150..151 "="134 WHITESPACE@146..147 " "
135 WHITESPACE@151..152 " "135 DESTRUCT_FULL@147..148
136 EXPR_VAR@152..162136 NAME@147..148
137 NAME@152..162137 IDENT@147..148 "a"
138 IDENT@152..162 "rest_arr_n"138 R_BRACK@148..149 "]"
139 SEMI@162..163 ";"139 WHITESPACE@149..150 " "
140 WHITESPACE@163..164 "\n"140 ASSIGN@150..151 "="
141 STMT_LOCAL@164..193141 WHITESPACE@151..152 " "
142 LOCAL_KW@164..169 "local"142 EXPR@152..162
143 WHITESPACE@169..170 " "143 EXPR_VAR@152..162
144 BIND_DESTRUCT@170..192144 NAME@152..162
145 DESTRUCT_ARRAY@170..176145 IDENT@152..162 "rest_arr_n"
146 L_BRACK@170..171 "["146 SEMI@162..163 ";"
147 DESTRUCT_REST@171..175147 WHITESPACE@163..164 "\n"
148 DOTDOTDOT@171..174 "..."148 STMT_LOCAL@164..193
149 IDENT@174..175 "n"149 LOCAL_KW@164..169 "local"
150 R_BRACK@175..176 "]"150 WHITESPACE@169..170 " "
151 WHITESPACE@176..177 " "151 BIND_DESTRUCT@170..192
152 ASSIGN@177..178 "="152 DESTRUCT_ARRAY@170..176
153 WHITESPACE@178..179 " "153 L_BRACK@170..171 "["
154 EXPR_VAR@179..192154 DESTRUCT_REST@171..175
155 NAME@179..192155 DOTDOTDOT@171..174 "..."
156 IDENT@179..192 "rest_in_arr_n"156 IDENT@174..175 "n"
157 SEMI@192..193 ";"157 R_BRACK@175..176 "]"
158 WHITESPACE@193..195 "\n\n"158 WHITESPACE@176..177 " "
159 STMT_LOCAL@195..217159 ASSIGN@177..178 "="
160 LOCAL_KW@195..200 "local"160 WHITESPACE@178..179 " "
161 WHITESPACE@200..201 " "161 EXPR@179..192
162 BIND_DESTRUCT@201..216162 EXPR_VAR@179..192
163 DESTRUCT_OBJECT@201..210163 NAME@179..192
164 L_BRACE@201..202 "{"164 IDENT@179..192 "rest_in_arr_n"
165 DESTRUCT_OBJECT_FIELD@202..203165 SEMI@192..193 ";"
166 NAME@202..203166 WHITESPACE@193..195 "\n\n"
167 IDENT@202..203 "a"167 STMT_LOCAL@195..217
168 COMMA@203..204 ","168 LOCAL_KW@195..200 "local"
169 WHITESPACE@204..205 " "169 WHITESPACE@200..201 " "
170 DESTRUCT_OBJECT_FIELD@205..206170 BIND_DESTRUCT@201..216
171 NAME@205..206171 DESTRUCT_OBJECT@201..210
172 IDENT@205..206 "b"172 L_BRACE@201..202 "{"
173 COMMA@206..207 ","173 DESTRUCT_OBJECT_FIELD@202..203
174 WHITESPACE@207..208 " "174 NAME@202..203
175 DESTRUCT_OBJECT_FIELD@208..209175 IDENT@202..203 "a"
176 NAME@208..209176 COMMA@203..204 ","
177 IDENT@208..209 "c"177 WHITESPACE@204..205 " "
178 R_BRACE@209..210 "}"178 DESTRUCT_OBJECT_FIELD@205..206
179 WHITESPACE@210..211 " "179 NAME@205..206
180 ASSIGN@211..212 "="180 IDENT@205..206 "b"
181 WHITESPACE@212..213 " "181 COMMA@206..207 ","
182 EXPR_VAR@213..216182 WHITESPACE@207..208 " "
183 NAME@213..216183 DESTRUCT_OBJECT_FIELD@208..209
184 IDENT@213..216 "obj"184 NAME@208..209
185 SEMI@216..217 ";"185 IDENT@208..209 "c"
186 WHITESPACE@217..218 "\n"186 R_BRACE@209..210 "}"
187 STMT_LOCAL@218..250187 WHITESPACE@210..211 " "
188 LOCAL_KW@218..223 "local"188 ASSIGN@211..212 "="
189 WHITESPACE@223..224 " "189 WHITESPACE@212..213 " "
190 BIND_DESTRUCT@224..249190 EXPR@213..216
191 DESTRUCT_OBJECT@224..238191 EXPR_VAR@213..216
192 L_BRACE@224..225 "{"192 NAME@213..216
193 DESTRUCT_OBJECT_FIELD@225..226193 IDENT@213..216 "obj"
194 NAME@225..226194 SEMI@216..217 ";"
195 IDENT@225..226 "a"195 WHITESPACE@217..218 "\n"
196 COMMA@226..227 ","196 STMT_LOCAL@218..250
197 WHITESPACE@227..228 " "197 LOCAL_KW@218..223 "local"
198 DESTRUCT_OBJECT_FIELD@228..229198 WHITESPACE@223..224 " "
199 NAME@228..229199 BIND_DESTRUCT@224..249
200 IDENT@228..229 "b"200 DESTRUCT_OBJECT@224..238
201 COMMA@229..230 ","201 L_BRACE@224..225 "{"
202 WHITESPACE@230..231 " "202 DESTRUCT_OBJECT_FIELD@225..226
203 DESTRUCT_OBJECT_FIELD@231..232203 NAME@225..226
204 NAME@231..232204 IDENT@225..226 "a"
205 IDENT@231..232 "c"205 COMMA@226..227 ","
206 COMMA@232..233 ","206 WHITESPACE@227..228 " "
207 WHITESPACE@233..234 " "207 DESTRUCT_OBJECT_FIELD@228..229
208 DESTRUCT_REST@234..237208 NAME@228..229
209 DOTDOTDOT@234..237 "..."209 IDENT@228..229 "b"
210 R_BRACE@237..238 "}"210 COMMA@229..230 ","
211 WHITESPACE@238..239 " "211 WHITESPACE@230..231 " "
212 ASSIGN@239..240 "="212 DESTRUCT_OBJECT_FIELD@231..232
213 WHITESPACE@240..241 " "213 NAME@231..232
214 EXPR_VAR@241..249214 IDENT@231..232 "c"
215 NAME@241..249215 COMMA@232..233 ","
216 IDENT@241..249 "obj_rest"216 WHITESPACE@233..234 " "
217 SEMI@249..250 ";"217 DESTRUCT_REST@234..237
218 WHITESPACE@250..251 "\n"218 DOTDOTDOT@234..237 "..."
219 STMT_LOCAL@251..286219 R_BRACE@237..238 "}"
220 LOCAL_KW@251..256 "local"220 WHITESPACE@238..239 " "
221 WHITESPACE@256..257 " "221 ASSIGN@239..240 "="
222 BIND_DESTRUCT@257..285222 WHITESPACE@240..241 " "
223 DESTRUCT_OBJECT@257..272223 EXPR@241..249
224 L_BRACE@257..258 "{"224 EXPR_VAR@241..249
225 DESTRUCT_OBJECT_FIELD@258..259225 NAME@241..249
226 NAME@258..259226 IDENT@241..249 "obj_rest"
227 IDENT@258..259 "a"227 SEMI@249..250 ";"
228 COMMA@259..260 ","228 WHITESPACE@250..251 "\n"
229 WHITESPACE@260..261 " "229 STMT_LOCAL@251..286
230 DESTRUCT_OBJECT_FIELD@261..262230 LOCAL_KW@251..256 "local"
231 NAME@261..262231 WHITESPACE@256..257 " "
232 IDENT@261..262 "b"232 BIND_DESTRUCT@257..285
233 COMMA@262..263 ","233 DESTRUCT_OBJECT@257..272
234 WHITESPACE@263..264 " "234 L_BRACE@257..258 "{"
235 DESTRUCT_OBJECT_FIELD@264..265235 DESTRUCT_OBJECT_FIELD@258..259
236 NAME@264..265236 NAME@258..259
237 IDENT@264..265 "c"237 IDENT@258..259 "a"
238 COMMA@265..266 ","238 COMMA@259..260 ","
239 WHITESPACE@266..267 " "239 WHITESPACE@260..261 " "
240 DESTRUCT_REST@267..271240 DESTRUCT_OBJECT_FIELD@261..262
241 DOTDOTDOT@267..270 "..."241 NAME@261..262
242 IDENT@270..271 "n"242 IDENT@261..262 "b"
243 R_BRACE@271..272 "}"243 COMMA@262..263 ","
244 WHITESPACE@272..273 " "244 WHITESPACE@263..264 " "
245 ASSIGN@273..274 "="245 DESTRUCT_OBJECT_FIELD@264..265
246 WHITESPACE@274..275 " "246 NAME@264..265
247 EXPR_VAR@275..285247 IDENT@264..265 "c"
248 NAME@275..285248 COMMA@265..266 ","
249 IDENT@275..285 "obj_rest_n"249 WHITESPACE@266..267 " "
250 SEMI@285..286 ";"250 DESTRUCT_REST@267..271
251 WHITESPACE@286..288 "\n\n"251 DOTDOTDOT@267..270 "..."
252 EXPR_LITERAL@288..292252 IDENT@270..271 "n"
253 NULL_KW@288..292 "null"253 R_BRACE@271..272 "}"
254 WHITESPACE@272..273 " "
255 ASSIGN@273..274 "="
256 WHITESPACE@274..275 " "
257 EXPR@275..285
258 EXPR_VAR@275..285
259 NAME@275..285
260 IDENT@275..285 "obj_rest_n"
261 SEMI@285..286 ";"
262 WHITESPACE@286..288 "\n\n"
263 EXPR_LITERAL@288..292
264 NULL_KW@288..292 "null"
254 WHITESPACE@292..293 "\n"265 WHITESPACE@292..293 "\n"
255266
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__empty.snapdiffbeforeafterboth
4---4---
5SOURCE_FILE@0..15SOURCE_FILE@0..1
6 WHITESPACE@0..1 " "6 WHITESPACE@0..1 " "
7 ERROR_MISSING_TOKEN@1..17 EXPR@1..1
8 ERROR_MISSING_TOKEN@1..1
8===9===
9LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 1..1 }10LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 1..1 }
10===11===
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function.snapdiffbeforeafterboth
3expression: "function(a, b = 1) a + b\n"3expression: "function(a, b = 1) a + b\n"
4---4---
5SOURCE_FILE@0..255SOURCE_FILE@0..25
6 EXPR_FUNCTION@0..246 EXPR@0..24
7 EXPR_FUNCTION@0..24
7 FUNCTION_KW@0..8 "function"8 FUNCTION_KW@0..8 "function"
8 PARAMS_DESC@8..189 PARAMS_DESC@8..18
9 L_PAREN@8..9 "("10 L_PAREN@8..9 "("
10 PARAM@9..1011 PARAM@9..10
11 DESTRUCT_FULL@9..1012 DESTRUCT_FULL@9..10
12 NAME@9..1013 NAME@9..10
13 IDENT@9..10 "a"14 IDENT@9..10 "a"
14 COMMA@10..11 ","15 COMMA@10..11 ","
15 WHITESPACE@11..12 " "16 WHITESPACE@11..12 " "
16 PARAM@12..1717 PARAM@12..17
17 DESTRUCT_FULL@12..1318 DESTRUCT_FULL@12..13
18 NAME@12..1319 NAME@12..13
19 IDENT@12..13 "b"20 IDENT@12..13 "b"
20 WHITESPACE@13..14 " "21 WHITESPACE@13..14 " "
21 ASSIGN@14..15 "="22 ASSIGN@14..15 "="
22 WHITESPACE@15..16 " "23 WHITESPACE@15..16 " "
23 EXPR_NUMBER@16..1724 EXPR@16..17
25 EXPR_NUMBER@16..17
24 FLOAT@16..17 "1"26 FLOAT@16..17 "1"
25 R_PAREN@17..18 ")"27 R_PAREN@17..18 ")"
26 WHITESPACE@18..19 " "28 WHITESPACE@18..19 " "
27 EXPR_BINARY@19..2429 EXPR@19..24
30 EXPR_BINARY@19..24
28 LHS_EXPR@19..2031 EXPR@19..20
29 EXPR_VAR@19..2032 EXPR_VAR@19..20
30 NAME@19..2033 NAME@19..20
31 IDENT@19..20 "a"34 IDENT@19..20 "a"
32 WHITESPACE@20..21 " "35 WHITESPACE@20..21 " "
33 PLUS@21..22 "+"36 PLUS@21..22 "+"
34 WHITESPACE@22..23 " "37 WHITESPACE@22..23 " "
35 EXPR_VAR@23..2438 EXPR@23..24
39 EXPR_VAR@23..24
36 NAME@23..2440 NAME@23..24
37 IDENT@23..24 "b"41 IDENT@23..24 "b"
38 WHITESPACE@24..25 "\n"42 WHITESPACE@24..25 "\n"
39
4043
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_body.snapdiffbeforeafterboth
3expression: "function(a, b)\n"3expression: "function(a, b)\n"
4---4---
5SOURCE_FILE@0..155SOURCE_FILE@0..15
6 EXPR_FUNCTION@0..156 EXPR@0..15
7 EXPR_FUNCTION@0..15
7 FUNCTION_KW@0..8 "function"8 FUNCTION_KW@0..8 "function"
8 PARAMS_DESC@8..149 PARAMS_DESC@8..14
9 L_PAREN@8..9 "("10 L_PAREN@8..9 "("
10 PARAM@9..1011 PARAM@9..10
11 DESTRUCT_FULL@9..1012 DESTRUCT_FULL@9..10
12 NAME@9..1013 NAME@9..10
13 IDENT@9..10 "a"14 IDENT@9..10 "a"
14 COMMA@10..11 ","15 COMMA@10..11 ","
15 WHITESPACE@11..12 " "16 WHITESPACE@11..12 " "
16 PARAM@12..1317 PARAM@12..13
17 DESTRUCT_FULL@12..1318 DESTRUCT_FULL@12..13
18 NAME@12..1319 NAME@12..13
19 IDENT@12..13 "b"20 IDENT@12..13 "b"
20 R_PAREN@13..14 ")"21 R_PAREN@13..14 ")"
21 WHITESPACE@14..15 "\n"22 WHITESPACE@14..15 "\n"
23 EXPR@15..15
22 ERROR_MISSING_TOKEN@15..1524 ERROR_MISSING_TOKEN@15..15
23===25===
24LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 15..15 }26LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 15..15 }
25===27===
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_no_value.snapdiffbeforeafterboth
3expression: "function(a, b = ) a + b\n"3expression: "function(a, b = ) a + b\n"
4---4---
5SOURCE_FILE@0..245SOURCE_FILE@0..24
6 EXPR_FUNCTION@0..236 EXPR@0..23
7 EXPR_FUNCTION@0..23
7 FUNCTION_KW@0..8 "function"8 FUNCTION_KW@0..8 "function"
8 PARAMS_DESC@8..179 PARAMS_DESC@8..17
9 L_PAREN@8..9 "("10 L_PAREN@8..9 "("
10 PARAM@9..1011 PARAM@9..10
11 DESTRUCT_FULL@9..1012 DESTRUCT_FULL@9..10
12 NAME@9..1013 NAME@9..10
13 IDENT@9..10 "a"14 IDENT@9..10 "a"
14 COMMA@10..11 ","15 COMMA@10..11 ","
15 WHITESPACE@11..12 " "16 WHITESPACE@11..12 " "
16 PARAM@12..1617 PARAM@12..16
17 DESTRUCT_FULL@12..1318 DESTRUCT_FULL@12..13
18 NAME@12..1319 NAME@12..13
19 IDENT@12..13 "b"20 IDENT@12..13 "b"
20 WHITESPACE@13..14 " "21 WHITESPACE@13..14 " "
21 ASSIGN@14..15 "="22 ASSIGN@14..15 "="
22 WHITESPACE@15..16 " "23 WHITESPACE@15..16 " "
23 ERROR_MISSING_TOKEN@16..1624 EXPR@16..16
25 ERROR_MISSING_TOKEN@16..16
24 R_PAREN@16..17 ")"26 R_PAREN@16..17 ")"
25 WHITESPACE@17..18 " "27 WHITESPACE@17..18 " "
26 EXPR_BINARY@18..2328 EXPR@18..23
29 EXPR_BINARY@18..23
27 LHS_EXPR@18..1930 EXPR@18..19
28 EXPR_VAR@18..1931 EXPR_VAR@18..19
29 NAME@18..1932 NAME@18..19
30 IDENT@18..19 "a"33 IDENT@18..19 "a"
31 WHITESPACE@19..20 " "34 WHITESPACE@19..20 " "
32 PLUS@20..21 "+"35 PLUS@20..21 "+"
33 WHITESPACE@21..22 " "36 WHITESPACE@21..22 " "
34 EXPR_VAR@22..2337 EXPR@22..23
38 EXPR_VAR@22..23
35 NAME@22..2339 NAME@22..23
36 IDENT@22..23 "b"40 IDENT@22..23 "b"
37 WHITESPACE@23..24 "\n"41 WHITESPACE@23..24 "\n"
38===42===
39LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 16..16 }43LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 16..16 }
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_rparen.snapdiffbeforeafterboth
3expression: "function(a, b\n"3expression: "function(a, b\n"
4---4---
5SOURCE_FILE@0..145SOURCE_FILE@0..14
6 EXPR_FUNCTION@0..146 EXPR@0..14
7 EXPR_FUNCTION@0..14
7 FUNCTION_KW@0..8 "function"8 FUNCTION_KW@0..8 "function"
8 PARAMS_DESC@8..149 PARAMS_DESC@8..14
9 L_PAREN@8..9 "("10 L_PAREN@8..9 "("
10 PARAM@9..1011 PARAM@9..10
11 DESTRUCT_FULL@9..1012 DESTRUCT_FULL@9..10
12 NAME@9..1013 NAME@9..10
13 IDENT@9..10 "a"14 IDENT@9..10 "a"
14 COMMA@10..11 ","15 COMMA@10..11 ","
15 WHITESPACE@11..12 " "16 WHITESPACE@11..12 " "
16 PARAM@12..1317 PARAM@12..13
17 DESTRUCT_FULL@12..1318 DESTRUCT_FULL@12..13
18 NAME@12..1319 NAME@12..13
19 IDENT@12..13 "b"20 IDENT@12..13 "b"
20 WHITESPACE@13..14 "\n"21 WHITESPACE@13..14 "\n"
21 ERROR_MISSING_TOKEN@14..1422 ERROR_MISSING_TOKEN@14..14
23 EXPR@14..14
22 ERROR_MISSING_TOKEN@14..1424 ERROR_MISSING_TOKEN@14..14
23===25===
24LocatedSyntaxError { error: Missing { expected: Unnamed(SyntaxKindSet([R_PAREN, COMMA, ASSIGN])) }, range: 14..14 }26LocatedSyntaxError { error: Missing { expected: Unnamed(SyntaxKindSet([R_PAREN, COMMA, ASSIGN])) }, range: 14..14 }
25LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 14..14 }27LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 14..14 }
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_method.snapdiffbeforeafterboth
3expression: "local\n\ta(x) = x,\n\ta = function(x) x,\n; c\n"3expression: "local\n\ta(x) = x,\n\ta = function(x) x,\n; c\n"
4---4---
5SOURCE_FILE@0..415SOURCE_FILE@0..41
6 STMT_LOCAL@0..386 EXPR@0..40
7 STMT_LOCAL@0..38
7 LOCAL_KW@0..5 "local"8 LOCAL_KW@0..5 "local"
8 WHITESPACE@5..7 "\n\t"9 WHITESPACE@5..7 "\n\t"
9 BIND_FUNCTION@7..1510 BIND_FUNCTION@7..15
10 NAME@7..811 NAME@7..8
11 IDENT@7..8 "a"12 IDENT@7..8 "a"
12 PARAMS_DESC@8..1113 PARAMS_DESC@8..11
13 L_PAREN@8..9 "("14 L_PAREN@8..9 "("
14 PARAM@9..1015 PARAM@9..10
15 DESTRUCT_FULL@9..1016 DESTRUCT_FULL@9..10
16 NAME@9..1017 NAME@9..10
17 IDENT@9..10 "x"18 IDENT@9..10 "x"
18 R_PAREN@10..11 ")"19 R_PAREN@10..11 ")"
19 WHITESPACE@11..12 " "20 WHITESPACE@11..12 " "
20 ASSIGN@12..13 "="21 ASSIGN@12..13 "="
21 WHITESPACE@13..14 " "22 WHITESPACE@13..14 " "
22 EXPR_VAR@14..1523 EXPR@14..15
24 EXPR_VAR@14..15
23 NAME@14..1525 NAME@14..15
24 IDENT@14..15 "x"26 IDENT@14..15 "x"
25 COMMA@15..16 ","27 COMMA@15..16 ","
26 WHITESPACE@16..18 "\n\t"28 WHITESPACE@16..18 "\n\t"
27 BIND_FUNCTION@18..3529 BIND_FUNCTION@18..35
28 NAME@18..1930 NAME@18..19
29 IDENT@18..19 "a"31 IDENT@18..19 "a"
30 WHITESPACE@19..20 " "32 WHITESPACE@19..20 " "
31 ASSIGN@20..21 "="33 ASSIGN@20..21 "="
32 WHITESPACE@21..22 " "34 WHITESPACE@21..22 " "
33 FUNCTION_KW@22..30 "function"35 FUNCTION_KW@22..30 "function"
34 PARAMS_DESC@30..3336 PARAMS_DESC@30..33
35 L_PAREN@30..31 "("37 L_PAREN@30..31 "("
36 PARAM@31..3238 PARAM@31..32
37 DESTRUCT_FULL@31..3239 DESTRUCT_FULL@31..32
38 NAME@31..3240 NAME@31..32
39 IDENT@31..32 "x"41 IDENT@31..32 "x"
40 R_PAREN@32..33 ")"42 R_PAREN@32..33 ")"
41 WHITESPACE@33..34 " "43 WHITESPACE@33..34 " "
42 EXPR_VAR@34..3544 EXPR@34..35
45 EXPR_VAR@34..35
43 NAME@34..3546 NAME@34..35
44 IDENT@34..35 "x"47 IDENT@34..35 "x"
45 COMMA@35..36 ","48 COMMA@35..36 ","
46 WHITESPACE@36..37 "\n"49 WHITESPACE@36..37 "\n"
47 SEMI@37..38 ";"50 SEMI@37..38 ";"
48 WHITESPACE@38..39 " "51 WHITESPACE@38..39 " "
49 EXPR_VAR@39..4052 EXPR_VAR@39..40
50 NAME@39..4053 NAME@39..40
51 IDENT@39..40 "c"54 IDENT@39..40 "c"
52 WHITESPACE@40..41 "\n"55 WHITESPACE@40..41 "\n"
5356
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_no_value_recovery.snapdiffbeforeafterboth
3expression: "local a =\nlocal b = 3;\n1\n"3expression: "local a =\nlocal b = 3;\n1\n"
4---4---
5SOURCE_FILE@0..255SOURCE_FILE@0..25
6 STMT_LOCAL@0..256 EXPR@0..25
7 STMT_LOCAL@0..25
7 LOCAL_KW@0..5 "local"8 LOCAL_KW@0..5 "local"
8 WHITESPACE@5..6 " "9 WHITESPACE@5..6 " "
9 BIND_DESTRUCT@6..2410 BIND_DESTRUCT@6..24
10 DESTRUCT_FULL@6..711 DESTRUCT_FULL@6..7
11 NAME@6..712 NAME@6..7
12 IDENT@6..7 "a"13 IDENT@6..7 "a"
13 WHITESPACE@7..8 " "14 WHITESPACE@7..8 " "
14 ASSIGN@8..9 "="15 ASSIGN@8..9 "="
15 WHITESPACE@9..10 "\n"16 WHITESPACE@9..10 "\n"
16 STMT_LOCAL@10..2217 EXPR@10..24
18 STMT_LOCAL@10..22
17 LOCAL_KW@10..15 "local"19 LOCAL_KW@10..15 "local"
18 WHITESPACE@15..16 " "20 WHITESPACE@15..16 " "
19 BIND_DESTRUCT@16..2121 BIND_DESTRUCT@16..21
20 DESTRUCT_FULL@16..1722 DESTRUCT_FULL@16..17
21 NAME@16..1723 NAME@16..17
22 IDENT@16..17 "b"24 IDENT@16..17 "b"
23 WHITESPACE@17..18 " "25 WHITESPACE@17..18 " "
24 ASSIGN@18..19 "="26 ASSIGN@18..19 "="
25 WHITESPACE@19..20 " "27 WHITESPACE@19..20 " "
26 EXPR_NUMBER@20..2128 EXPR@20..21
29 EXPR_NUMBER@20..21
27 FLOAT@20..21 "3"30 FLOAT@20..21 "3"
28 SEMI@21..22 ";"31 SEMI@21..22 ";"
29 WHITESPACE@22..23 "\n"32 WHITESPACE@22..23 "\n"
30 EXPR_NUMBER@23..2433 EXPR_NUMBER@23..24
31 FLOAT@23..24 "1"34 FLOAT@23..24 "1"
32 WHITESPACE@24..25 "\n"35 WHITESPACE@24..25 "\n"
36 ERROR_MISSING_TOKEN@25..25
33 ERROR_MISSING_TOKEN@25..2537 ERROR_MISSING_TOKEN@25..25
34 ERROR_MISSING_TOKEN@25..25
35===38===
36LocatedSyntaxError { error: Missing { expected: Unnamed(SyntaxKindSet([L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA])) }, range: 25..25 }39LocatedSyntaxError { error: Missing { expected: Unnamed(SyntaxKindSet([L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA, QUESTION_MARK])) }, range: 25..25 }
37LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 25..25 }40LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 25..25 }
38===41===
39 x syntax error42 x syntax error
42 3 | 145 3 | 1
43 : ^^46 : ^^
44 : |`-- missing expression47 : |`-- missing expression
45 : `-- missing L_BRACK, L_PAREN, L_BRACE, SEMI, DOT or COMMA48 : `-- missing L_BRACK, L_PAREN, L_BRACE, SEMI, DOT, COMMA or QUESTION_MARK
46 `----49 `----
4750
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_novalue.snapdiffbeforeafterboth
3expression: "local a =\n"3expression: "local a =\n"
4---4---
5SOURCE_FILE@0..105SOURCE_FILE@0..10
6 STMT_LOCAL@0..106 EXPR@0..10
7 STMT_LOCAL@0..10
7 LOCAL_KW@0..5 "local"8 LOCAL_KW@0..5 "local"
8 WHITESPACE@5..6 " "9 WHITESPACE@5..6 " "
9 BIND_DESTRUCT@6..1010 BIND_DESTRUCT@6..10
10 DESTRUCT_FULL@6..711 DESTRUCT_FULL@6..7
11 NAME@6..712 NAME@6..7
12 IDENT@6..7 "a"13 IDENT@6..7 "a"
13 WHITESPACE@7..8 " "14 WHITESPACE@7..8 " "
14 ASSIGN@8..9 "="15 ASSIGN@8..9 "="
15 WHITESPACE@9..10 "\n"16 WHITESPACE@9..10 "\n"
17 EXPR@10..10
18 ERROR_MISSING_TOKEN@10..10
16 ERROR_MISSING_TOKEN@10..1019 ERROR_MISSING_TOKEN@10..10
17 ERROR_MISSING_TOKEN@10..1020 ERROR_MISSING_TOKEN@10..10
18 ERROR_MISSING_TOKEN@10..10
19===21===
20LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 10..10 }22LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 10..10 }
21LocatedSyntaxError { error: Missing { expected: Unnamed(SyntaxKindSet([SEMI, COMMA])) }, range: 10..10 }23LocatedSyntaxError { error: Missing { expected: Unnamed(SyntaxKindSet([SEMI, COMMA])) }, range: 10..10 }
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__named_before_positional.snapdiffbeforeafterboth
3expression: "a(1, 2, b=4, 3, 5, k = 12, 6)\n"3expression: "a(1, 2, b=4, 3, 5, k = 12, 6)\n"
4---4---
5SOURCE_FILE@0..305SOURCE_FILE@0..30
6 EXPR_APPLY@0..296 EXPR@0..29
7 EXPR_VAR@0..17 EXPR_VAR@0..1
8 NAME@0..18 NAME@0..1
9 IDENT@0..1 "a"9 IDENT@0..1 "a"
10 ARGS_DESC@1..2910 SUFFIX_APPLY@1..29
11 L_PAREN@1..2 "("11 ARGS_DESC@1..29
12 ARG@2..312 L_PAREN@1..2 "("
13 EXPR_NUMBER@2..313 ARG@2..3
14 FLOAT@2..3 "1"14 EXPR@2..3
15 COMMA@3..4 ","15 EXPR_NUMBER@2..3
16 WHITESPACE@4..5 " "16 FLOAT@2..3 "1"
17 ARG@5..617 COMMA@3..4 ","
18 EXPR_NUMBER@5..618 WHITESPACE@4..5 " "
19 FLOAT@5..6 "2"19 ARG@5..6
20 COMMA@6..7 ","20 EXPR@5..6
21 WHITESPACE@7..8 " "21 EXPR_NUMBER@5..6
22 ARG@8..1122 FLOAT@5..6 "2"
23 NAME@8..923 COMMA@6..7 ","
24 IDENT@8..9 "b"24 WHITESPACE@7..8 " "
25 ASSIGN@9..10 "="25 ARG@8..11
26 EXPR_NUMBER@10..1126 NAME@8..9
27 FLOAT@10..11 "4"27 IDENT@8..9 "b"
28 COMMA@11..12 ","28 ASSIGN@9..10 "="
29 WHITESPACE@12..13 " "29 EXPR@10..11
30 ERROR_CUSTOM@13..1430 EXPR_NUMBER@10..11
31 ARG@13..1431 FLOAT@10..11 "4"
32 EXPR_NUMBER@13..1432 COMMA@11..12 ","
33 FLOAT@13..14 "3"33 WHITESPACE@12..13 " "
34 COMMA@14..15 ","34 ERROR_CUSTOM@13..14
35 WHITESPACE@15..16 " "35 ARG@13..14
36 ERROR_CUSTOM@16..1736 EXPR@13..14
37 ARG@16..1737 EXPR_NUMBER@13..14
38 EXPR_NUMBER@16..1738 FLOAT@13..14 "3"
39 FLOAT@16..17 "5"39 COMMA@14..15 ","
40 COMMA@17..18 ","40 WHITESPACE@15..16 " "
41 WHITESPACE@18..19 " "41 ERROR_CUSTOM@16..17
42 ARG@19..2542 ARG@16..17
43 NAME@19..2043 EXPR@16..17
44 IDENT@19..20 "k"44 EXPR_NUMBER@16..17
45 WHITESPACE@20..21 " "45 FLOAT@16..17 "5"
46 ASSIGN@21..22 "="46 COMMA@17..18 ","
47 WHITESPACE@22..23 " "47 WHITESPACE@18..19 " "
48 EXPR_NUMBER@23..2548 ARG@19..25
49 FLOAT@23..25 "12"49 NAME@19..20
50 COMMA@25..26 ","50 IDENT@19..20 "k"
51 WHITESPACE@26..27 " "51 WHITESPACE@20..21 " "
52 ERROR_CUSTOM@27..2852 ASSIGN@21..22 "="
53 ARG@27..2853 WHITESPACE@22..23 " "
54 EXPR_NUMBER@27..2854 EXPR@23..25
55 FLOAT@27..28 "6"55 EXPR_NUMBER@23..25
56 R_PAREN@28..29 ")"56 FLOAT@23..25 "12"
57 COMMA@25..26 ","
58 WHITESPACE@26..27 " "
59 ERROR_CUSTOM@27..28
60 ARG@27..28
61 EXPR@27..28
62 EXPR_NUMBER@27..28
63 FLOAT@27..28 "6"
64 R_PAREN@28..29 ")"
57 WHITESPACE@29..30 "\n"65 WHITESPACE@29..30 "\n"
58===66===
59LocatedSyntaxError { error: Custom { error: "can't use positional arguments after named" }, range: 13..14 }67LocatedSyntaxError { error: Custom { error: "can't use positional arguments after named" }, range: 13..14 }
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_lhs.snapdiffbeforeafterboth
3expression: "+ 2\n"3expression: "+ 2\n"
4---4---
5SOURCE_FILE@0..45SOURCE_FILE@0..4
6 ERROR_MISSING_TOKEN@0..06 EXPR@0..0
7 ERROR_MISSING_TOKEN@0..0
7 ERROR_CUSTOM@0..38 ERROR_CUSTOM@0..3
8 PLUS@0..1 "+"9 PLUS@0..1 "+"
9 WHITESPACE@1..2 " "10 WHITESPACE@1..2 " "
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_operator.snapdiffbeforeafterboth
3expression: "2 2\n"3expression: "2 2\n"
4---4---
5SOURCE_FILE@0..45SOURCE_FILE@0..4
6 EXPR_NUMBER@0..16 EXPR@0..1
7 EXPR_NUMBER@0..1
7 FLOAT@0..1 "2"8 FLOAT@0..1 "2"
8 WHITESPACE@1..2 " "9 WHITESPACE@1..2 " "
9 ERROR_CUSTOM@2..310 ERROR_CUSTOM@2..3
10 FLOAT@2..3 "2"11 FLOAT@2..3 "2"
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_rhs.snapdiffbeforeafterboth
3expression: "a +\n"3expression: "a +\n"
4---4---
5SOURCE_FILE@0..45SOURCE_FILE@0..4
6 EXPR_BINARY@0..46 EXPR@0..4
7 EXPR_BINARY@0..4
7 LHS_EXPR@0..18 EXPR@0..1
8 EXPR_VAR@0..19 EXPR_VAR@0..1
9 NAME@0..110 NAME@0..1
10 IDENT@0..1 "a"11 IDENT@0..1 "a"
11 WHITESPACE@1..2 " "12 WHITESPACE@1..2 " "
12 PLUS@2..3 "+"13 PLUS@2..3 "+"
13 WHITESPACE@3..4 "\n"14 WHITESPACE@3..4 "\n"
14 ERROR_MISSING_TOKEN@4..415 ERROR_MISSING_TOKEN@4..4
15===16===
16LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 4..4 }17LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 4..4 }
17===18===
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec.snapdiffbeforeafterboth
3expression: "{a:1 for a in [1, 2, 3]}\n"3expression: "{a:1 for a in [1, 2, 3]}\n"
4---4---
5SOURCE_FILE@0..255SOURCE_FILE@0..25
6 EXPR_OBJECT@0..246 EXPR@0..24
7 EXPR_OBJECT@0..24
7 OBJ_BODY_COMP@0..248 OBJ_BODY_COMP@0..24
8 L_BRACE@0..1 "{"9 L_BRACE@0..1 "{"
9 MEMBER_FIELD_NORMAL@1..410 MEMBER_FIELD_NORMAL@1..4
10 FIELD_NAME_FIXED@1..211 FIELD_NAME_FIXED@1..2
11 NAME@1..212 NAME@1..2
12 IDENT@1..2 "a"13 IDENT@1..2 "a"
13 COLON@2..3 ":"14 COLON@2..3 ":"
14 EXPR_NUMBER@3..415 EXPR@3..4
16 EXPR_NUMBER@3..4
15 FLOAT@3..4 "1"17 FLOAT@3..4 "1"
16 WHITESPACE@4..5 " "18 WHITESPACE@4..5 " "
17 FOR_SPEC@5..2319 FOR_SPEC@5..23
18 FOR_KW@5..8 "for"20 FOR_KW@5..8 "for"
19 WHITESPACE@8..9 " "21 WHITESPACE@8..9 " "
20 NAME@9..1022 DESTRUCT_FULL@9..10
23 NAME@9..10
21 IDENT@9..10 "a"24 IDENT@9..10 "a"
22 WHITESPACE@10..11 " "25 WHITESPACE@10..11 " "
23 IN_KW@11..13 "in"26 IN_KW@11..13 "in"
24 WHITESPACE@13..14 " "27 WHITESPACE@13..14 " "
25 EXPR_ARRAY@14..2328 EXPR@14..23
29 EXPR_ARRAY@14..23
26 L_BRACK@14..15 "["30 L_BRACK@14..15 "["
27 EXPR_NUMBER@15..1631 EXPR@15..16
32 EXPR_NUMBER@15..16
28 FLOAT@15..16 "1"33 FLOAT@15..16 "1"
29 COMMA@16..17 ","34 COMMA@16..17 ","
30 WHITESPACE@17..18 " "35 WHITESPACE@17..18 " "
31 EXPR_NUMBER@18..1936 EXPR@18..19
37 EXPR_NUMBER@18..19
32 FLOAT@18..19 "2"38 FLOAT@18..19 "2"
33 COMMA@19..20 ","39 COMMA@19..20 ","
34 WHITESPACE@20..21 " "40 WHITESPACE@20..21 " "
35 EXPR_NUMBER@21..2241 EXPR@21..22
42 EXPR_NUMBER@21..22
36 FLOAT@21..22 "3"43 FLOAT@21..22 "3"
37 R_BRACK@22..23 "]"44 R_BRACK@22..23 "]"
38 R_BRACE@23..24 "}"45 R_BRACE@23..24 "}"
39 WHITESPACE@24..25 "\n"46 WHITESPACE@24..25 "\n"
4047
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_comma.snapdiffbeforeafterboth
3expression: "{a:1, for a in [1, 2, 3]}\n"3expression: "{a:1, for a in [1, 2, 3]}\n"
4---4---
5SOURCE_FILE@0..265SOURCE_FILE@0..26
6 EXPR_OBJECT@0..256 EXPR@0..25
7 EXPR_OBJECT@0..25
7 OBJ_BODY_COMP@0..258 OBJ_BODY_COMP@0..25
8 L_BRACE@0..1 "{"9 L_BRACE@0..1 "{"
9 MEMBER_FIELD_NORMAL@1..410 MEMBER_FIELD_NORMAL@1..4
10 FIELD_NAME_FIXED@1..211 FIELD_NAME_FIXED@1..2
11 NAME@1..212 NAME@1..2
12 IDENT@1..2 "a"13 IDENT@1..2 "a"
13 COLON@2..3 ":"14 COLON@2..3 ":"
14 EXPR_NUMBER@3..415 EXPR@3..4
16 EXPR_NUMBER@3..4
15 FLOAT@3..4 "1"17 FLOAT@3..4 "1"
16 COMMA@4..5 ","18 COMMA@4..5 ","
17 WHITESPACE@5..6 " "19 WHITESPACE@5..6 " "
18 FOR_SPEC@6..2420 FOR_SPEC@6..24
19 FOR_KW@6..9 "for"21 FOR_KW@6..9 "for"
20 WHITESPACE@9..10 " "22 WHITESPACE@9..10 " "
21 NAME@10..1123 DESTRUCT_FULL@10..11
24 NAME@10..11
22 IDENT@10..11 "a"25 IDENT@10..11 "a"
23 WHITESPACE@11..12 " "26 WHITESPACE@11..12 " "
24 IN_KW@12..14 "in"27 IN_KW@12..14 "in"
25 WHITESPACE@14..15 " "28 WHITESPACE@14..15 " "
26 EXPR_ARRAY@15..2429 EXPR@15..24
30 EXPR_ARRAY@15..24
27 L_BRACK@15..16 "["31 L_BRACK@15..16 "["
28 EXPR_NUMBER@16..1732 EXPR@16..17
33 EXPR_NUMBER@16..17
29 FLOAT@16..17 "1"34 FLOAT@16..17 "1"
30 COMMA@17..18 ","35 COMMA@17..18 ","
31 WHITESPACE@18..19 " "36 WHITESPACE@18..19 " "
32 EXPR_NUMBER@19..2037 EXPR@19..20
38 EXPR_NUMBER@19..20
33 FLOAT@19..20 "2"39 FLOAT@19..20 "2"
34 COMMA@20..21 ","40 COMMA@20..21 ","
35 WHITESPACE@21..22 " "41 WHITESPACE@21..22 " "
36 EXPR_NUMBER@22..2342 EXPR@22..23
43 EXPR_NUMBER@22..23
37 FLOAT@22..23 "3"44 FLOAT@22..23 "3"
38 R_BRACK@23..24 "]"45 R_BRACK@23..24 "]"
39 R_BRACE@24..25 "}"46 R_BRACE@24..25 "}"
40 WHITESPACE@25..26 "\n"47 WHITESPACE@25..26 "\n"
4148
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_asserts.snapdiffbeforeafterboth
3expression: "{assert 1, a: 1 for a in [1,2,3]}\n"3expression: "{assert 1, a: 1 for a in [1,2,3]}\n"
4---4---
5SOURCE_FILE@0..345SOURCE_FILE@0..34
6 EXPR_OBJECT@0..336 EXPR@0..33
7 OBJ_BODY_COMP@0..337 EXPR_OBJECT@0..33
8 L_BRACE@0..1 "{"8 OBJ_BODY_COMP@0..33
9 ERROR_CUSTOM@1..99 L_BRACE@0..1 "{"
10 MEMBER_ASSERT_STMT@1..910 ERROR_CUSTOM@1..9
11 ASSERTION@1..911 MEMBER_ASSERT_STMT@1..9
12 ASSERT_KW@1..7 "assert"12 ASSERTION@1..9
13 WHITESPACE@7..8 " "13 ASSERT_KW@1..7 "assert"
14 LHS_EXPR@8..914 WHITESPACE@7..8 " "
15 EXPR_NUMBER@8..915 EXPR@8..9
16 FLOAT@8..9 "1"16 EXPR_NUMBER@8..9
17 COMMA@9..10 ","17 FLOAT@8..9 "1"
18 WHITESPACE@10..11 " "18 COMMA@9..10 ","
19 MEMBER_FIELD_NORMAL@11..1519 WHITESPACE@10..11 " "
20 FIELD_NAME_FIXED@11..1220 MEMBER_FIELD_NORMAL@11..15
21 NAME@11..1221 FIELD_NAME_FIXED@11..12
22 IDENT@11..12 "a"22 NAME@11..12
23 COLON@12..13 ":"23 IDENT@11..12 "a"
24 WHITESPACE@13..14 " "24 COLON@12..13 ":"
25 EXPR_NUMBER@14..1525 WHITESPACE@13..14 " "
26 FLOAT@14..15 "1"26 EXPR@14..15
27 WHITESPACE@15..16 " "27 EXPR_NUMBER@14..15
28 FOR_SPEC@16..3228 FLOAT@14..15 "1"
29 FOR_KW@16..19 "for"29 WHITESPACE@15..16 " "
30 WHITESPACE@19..20 " "30 FOR_SPEC@16..32
31 NAME@20..2131 FOR_KW@16..19 "for"
32 IDENT@20..21 "a"32 WHITESPACE@19..20 " "
33 WHITESPACE@21..22 " "33 DESTRUCT_FULL@20..21
34 IN_KW@22..24 "in"34 NAME@20..21
35 WHITESPACE@24..25 " "35 IDENT@20..21 "a"
36 EXPR_ARRAY@25..3236 WHITESPACE@21..22 " "
37 L_BRACK@25..26 "["37 IN_KW@22..24 "in"
38 EXPR_NUMBER@26..2738 WHITESPACE@24..25 " "
39 FLOAT@26..27 "1"39 EXPR@25..32
40 COMMA@27..28 ","40 EXPR_ARRAY@25..32
41 EXPR_NUMBER@28..2941 L_BRACK@25..26 "["
42 FLOAT@28..29 "2"42 EXPR@26..27
43 COMMA@29..30 ","43 EXPR_NUMBER@26..27
44 EXPR_NUMBER@30..3144 FLOAT@26..27 "1"
45 FLOAT@30..31 "3"45 COMMA@27..28 ","
46 R_BRACK@31..32 "]"46 EXPR@28..29
47 R_BRACE@32..33 "}"47 EXPR_NUMBER@28..29
48 FLOAT@28..29 "2"
49 COMMA@29..30 ","
50 EXPR@30..31
51 EXPR_NUMBER@30..31
52 FLOAT@30..31 "3"
53 R_BRACK@31..32 "]"
54 R_BRACE@32..33 "}"
48 WHITESPACE@33..34 "\n"55 WHITESPACE@33..34 "\n"
49===56===
50LocatedSyntaxError { error: Custom { error: "asserts can't be used in object comprehensions" }, range: 1..9 }57LocatedSyntaxError { error: Custom { error: "asserts can't be used in object comprehensions" }, range: 1..9 }
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_multiple_elems.snapdiffbeforeafterboth
3expression: "{a:1 for a in [1, 2, 3], b:1}\n"3expression: "{a:1 for a in [1, 2, 3], b:1}\n"
4---4---
5SOURCE_FILE@0..305SOURCE_FILE@0..30
6 EXPR_OBJECT@0..296 EXPR@0..29
7 OBJ_BODY_MEMBER_LIST@0..297 EXPR_OBJECT@0..29
8 L_BRACE@0..1 "{"8 OBJ_BODY_MEMBER_LIST@0..29
9 MEMBER_FIELD_NORMAL@1..49 L_BRACE@0..1 "{"
10 FIELD_NAME_FIXED@1..210 MEMBER_FIELD_NORMAL@1..4
11 NAME@1..211 FIELD_NAME_FIXED@1..2
12 IDENT@1..2 "a"12 NAME@1..2
13 COLON@2..3 ":"13 IDENT@1..2 "a"
14 EXPR_NUMBER@3..414 COLON@2..3 ":"
15 FLOAT@3..4 "1"15 EXPR@3..4
16 WHITESPACE@4..5 " "16 EXPR_NUMBER@3..4
17 ERROR_CUSTOM@5..2317 FLOAT@3..4 "1"
18 FOR_SPEC@5..2318 WHITESPACE@4..5 " "
19 FOR_KW@5..8 "for"19 ERROR_CUSTOM@5..23
20 WHITESPACE@8..9 " "20 FOR_SPEC@5..23
21 NAME@9..1021 FOR_KW@5..8 "for"
22 IDENT@9..10 "a"22 WHITESPACE@8..9 " "
23 WHITESPACE@10..11 " "23 DESTRUCT_FULL@9..10
24 IN_KW@11..13 "in"24 NAME@9..10
25 WHITESPACE@13..14 " "25 IDENT@9..10 "a"
26 EXPR_ARRAY@14..2326 WHITESPACE@10..11 " "
27 L_BRACK@14..15 "["27 IN_KW@11..13 "in"
28 EXPR_NUMBER@15..1628 WHITESPACE@13..14 " "
29 FLOAT@15..16 "1"29 EXPR@14..23
30 COMMA@16..17 ","30 EXPR_ARRAY@14..23
31 WHITESPACE@17..18 " "31 L_BRACK@14..15 "["
32 EXPR_NUMBER@18..1932 EXPR@15..16
33 FLOAT@18..19 "2"33 EXPR_NUMBER@15..16
34 COMMA@19..20 ","34 FLOAT@15..16 "1"
35 WHITESPACE@20..21 " "35 COMMA@16..17 ","
36 EXPR_NUMBER@21..2236 WHITESPACE@17..18 " "
37 FLOAT@21..22 "3"37 EXPR@18..19
38 R_BRACK@22..23 "]"38 EXPR_NUMBER@18..19
39 COMMA@23..24 ","39 FLOAT@18..19 "2"
40 WHITESPACE@24..25 " "40 COMMA@19..20 ","
41 MEMBER_FIELD_NORMAL@25..2841 WHITESPACE@20..21 " "
42 FIELD_NAME_FIXED@25..2642 EXPR@21..22
43 NAME@25..2643 EXPR_NUMBER@21..22
44 IDENT@25..26 "b"44 FLOAT@21..22 "3"
45 COLON@26..27 ":"45 R_BRACK@22..23 "]"
46 EXPR_NUMBER@27..2846 COMMA@23..24 ","
47 FLOAT@27..28 "1"47 WHITESPACE@24..25 " "
48 R_BRACE@28..29 "}"48 MEMBER_FIELD_NORMAL@25..28
49 FIELD_NAME_FIXED@25..26
50 NAME@25..26
51 IDENT@25..26 "b"
52 COLON@26..27 ":"
53 EXPR@27..28
54 EXPR_NUMBER@27..28
55 FLOAT@27..28 "1"
56 R_BRACE@28..29 "}"
49 WHITESPACE@29..30 "\n"57 WHITESPACE@29..30 "\n"
50===58===
51LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one array element" }, range: 5..23 }59LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one object element" }, range: 5..23 }
52===60===
53 x syntax error61 x syntax error
54 ,----62 ,----
55 1 | {a:1 for a in [1, 2, 3], b:1}63 1 | {a:1 for a in [1, 2, 3], b:1}
56 : ^^^^^^^^^|^^^^^^^^64 : ^^^^^^^^^|^^^^^^^^
57 : `-- compspec may only be used if there is only one array element65 : `-- compspec may only be used if there is only one object element
58 `----66 `----
5967
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_incompatible_with_multiple_elems_w.snapdiffbeforeafterboth
3expression: "{a:1, b:1, for a in [1, 2, 3], c:1}\n"3expression: "{a:1, b:1, for a in [1, 2, 3], c:1}\n"
4---4---
5SOURCE_FILE@0..365SOURCE_FILE@0..36
6 EXPR_OBJECT@0..356 EXPR@0..35
7 OBJ_BODY_MEMBER_LIST@0..357 EXPR_OBJECT@0..35
8 L_BRACE@0..1 "{"8 OBJ_BODY_MEMBER_LIST@0..35
9 MEMBER_FIELD_NORMAL@1..49 L_BRACE@0..1 "{"
10 FIELD_NAME_FIXED@1..210 MEMBER_FIELD_NORMAL@1..4
11 NAME@1..211 FIELD_NAME_FIXED@1..2
12 IDENT@1..2 "a"12 NAME@1..2
13 COLON@2..3 ":"13 IDENT@1..2 "a"
14 EXPR_NUMBER@3..414 COLON@2..3 ":"
15 FLOAT@3..4 "1"15 EXPR@3..4
16 COMMA@4..5 ","16 EXPR_NUMBER@3..4
17 WHITESPACE@5..6 " "17 FLOAT@3..4 "1"
18 MEMBER_FIELD_NORMAL@6..918 COMMA@4..5 ","
19 FIELD_NAME_FIXED@6..719 WHITESPACE@5..6 " "
20 NAME@6..720 MEMBER_FIELD_NORMAL@6..9
21 IDENT@6..7 "b"21 FIELD_NAME_FIXED@6..7
22 COLON@7..8 ":"22 NAME@6..7
23 EXPR_NUMBER@8..923 IDENT@6..7 "b"
24 FLOAT@8..9 "1"24 COLON@7..8 ":"
25 COMMA@9..10 ","25 EXPR@8..9
26 WHITESPACE@10..11 " "26 EXPR_NUMBER@8..9
27 ERROR_CUSTOM@11..2927 FLOAT@8..9 "1"
28 FOR_SPEC@11..2928 COMMA@9..10 ","
29 FOR_KW@11..14 "for"29 WHITESPACE@10..11 " "
30 WHITESPACE@14..15 " "30 ERROR_CUSTOM@11..29
31 NAME@15..1631 FOR_SPEC@11..29
32 IDENT@15..16 "a"32 FOR_KW@11..14 "for"
33 WHITESPACE@16..17 " "33 WHITESPACE@14..15 " "
34 IN_KW@17..19 "in"34 DESTRUCT_FULL@15..16
35 WHITESPACE@19..20 " "35 NAME@15..16
36 EXPR_ARRAY@20..2936 IDENT@15..16 "a"
37 L_BRACK@20..21 "["37 WHITESPACE@16..17 " "
38 EXPR_NUMBER@21..2238 IN_KW@17..19 "in"
39 FLOAT@21..22 "1"39 WHITESPACE@19..20 " "
40 COMMA@22..23 ","40 EXPR@20..29
41 WHITESPACE@23..24 " "41 EXPR_ARRAY@20..29
42 EXPR_NUMBER@24..2542 L_BRACK@20..21 "["
43 FLOAT@24..25 "2"43 EXPR@21..22
44 COMMA@25..26 ","44 EXPR_NUMBER@21..22
45 WHITESPACE@26..27 " "45 FLOAT@21..22 "1"
46 EXPR_NUMBER@27..2846 COMMA@22..23 ","
47 FLOAT@27..28 "3"47 WHITESPACE@23..24 " "
48 R_BRACK@28..29 "]"48 EXPR@24..25
49 COMMA@29..30 ","49 EXPR_NUMBER@24..25
50 WHITESPACE@30..31 " "50 FLOAT@24..25 "2"
51 MEMBER_FIELD_NORMAL@31..3451 COMMA@25..26 ","
52 FIELD_NAME_FIXED@31..3252 WHITESPACE@26..27 " "
53 NAME@31..3253 EXPR@27..28
54 IDENT@31..32 "c"54 EXPR_NUMBER@27..28
55 COLON@32..33 ":"55 FLOAT@27..28 "3"
56 EXPR_NUMBER@33..3456 R_BRACK@28..29 "]"
57 FLOAT@33..34 "1"57 COMMA@29..30 ","
58 R_BRACE@34..35 "}"58 WHITESPACE@30..31 " "
59 MEMBER_FIELD_NORMAL@31..34
60 FIELD_NAME_FIXED@31..32
61 NAME@31..32
62 IDENT@31..32 "c"
63 COLON@32..33 ":"
64 EXPR@33..34
65 EXPR_NUMBER@33..34
66 FLOAT@33..34 "1"
67 R_BRACE@34..35 "}"
59 WHITESPACE@35..36 "\n"68 WHITESPACE@35..36 "\n"
60===69===
61LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one array element" }, range: 11..29 }70LocatedSyntaxError { error: Custom { error: "compspec may only be used if there is only one object element" }, range: 11..29 }
62===71===
63 x syntax error72 x syntax error
64 ,----73 ,----
65 1 | {a:1, b:1, for a in [1, 2, 3], c:1}74 1 | {a:1, b:1, for a in [1, 2, 3], c:1}
66 : ^^^^^^^^^|^^^^^^^^75 : ^^^^^^^^^|^^^^^^^^
67 : `-- compspec may only be used if there is only one array element76 : `-- compspec may only be used if there is only one object element
68 `----77 `----
6978
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_compspec_no_elems.snapdiffbeforeafterboth
3expression: "{for a in [1, 2, 3]}\n"3expression: "{for a in [1, 2, 3]}\n"
4---4---
5SOURCE_FILE@0..215SOURCE_FILE@0..21
6 EXPR_OBJECT@0..206 EXPR@0..20
7 EXPR_OBJECT@0..20
7 OBJ_BODY_COMP@0..208 OBJ_BODY_COMP@0..20
8 L_BRACE@0..1 "{"9 L_BRACE@0..1 "{"
9 ERROR_MISSING_TOKEN@1..110 ERROR_MISSING_TOKEN@1..1
10 FOR_SPEC@1..1911 FOR_SPEC@1..19
11 FOR_KW@1..4 "for"12 FOR_KW@1..4 "for"
12 WHITESPACE@4..5 " "13 WHITESPACE@4..5 " "
13 NAME@5..614 DESTRUCT_FULL@5..6
15 NAME@5..6
14 IDENT@5..6 "a"16 IDENT@5..6 "a"
15 WHITESPACE@6..7 " "17 WHITESPACE@6..7 " "
16 IN_KW@7..9 "in"18 IN_KW@7..9 "in"
17 WHITESPACE@9..10 " "19 WHITESPACE@9..10 " "
18 EXPR_ARRAY@10..1920 EXPR@10..19
21 EXPR_ARRAY@10..19
19 L_BRACK@10..11 "["22 L_BRACK@10..11 "["
20 EXPR_NUMBER@11..1223 EXPR@11..12
24 EXPR_NUMBER@11..12
21 FLOAT@11..12 "1"25 FLOAT@11..12 "1"
22 COMMA@12..13 ","26 COMMA@12..13 ","
23 WHITESPACE@13..14 " "27 WHITESPACE@13..14 " "
24 EXPR_NUMBER@14..1528 EXPR@14..15
29 EXPR_NUMBER@14..15
25 FLOAT@14..15 "2"30 FLOAT@14..15 "2"
26 COMMA@15..16 ","31 COMMA@15..16 ","
27 WHITESPACE@16..17 " "32 WHITESPACE@16..17 " "
28 EXPR_NUMBER@17..1833 EXPR@17..18
34 EXPR_NUMBER@17..18
29 FLOAT@17..18 "3"35 FLOAT@17..18 "3"
30 R_BRACK@18..19 "]"36 R_BRACK@18..19 "]"
31 R_BRACE@19..20 "}"37 R_BRACE@19..20 "}"
32 WHITESPACE@20..21 "\n"38 WHITESPACE@20..21 "\n"
33===39===
34LocatedSyntaxError { error: Missing { expected: Named("field definition") }, range: 1..1 }40LocatedSyntaxError { error: Missing { expected: Named("field definition") }, range: 1..1 }
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__obj_method.snapdiffbeforeafterboth
3expression: "{\n\ta(x): x,\n\ta: function(x) x,\n}\n"3expression: "{\n\ta(x): x,\n\ta: function(x) x,\n}\n"
4---4---
5SOURCE_FILE@0..335SOURCE_FILE@0..33
6 EXPR_OBJECT@0..326 EXPR@0..32
7 EXPR_OBJECT@0..32
7 OBJ_BODY_MEMBER_LIST@0..328 OBJ_BODY_MEMBER_LIST@0..32
8 L_BRACE@0..1 "{"9 L_BRACE@0..1 "{"
9 WHITESPACE@1..3 "\n\t"10 WHITESPACE@1..3 "\n\t"
10 MEMBER_FIELD_METHOD@3..1011 MEMBER_FIELD_METHOD@3..10
11 FIELD_NAME_FIXED@3..412 FIELD_NAME_FIXED@3..4
12 NAME@3..413 NAME@3..4
13 IDENT@3..4 "a"14 IDENT@3..4 "a"
14 PARAMS_DESC@4..715 PARAMS_DESC@4..7
15 L_PAREN@4..5 "("16 L_PAREN@4..5 "("
16 PARAM@5..617 PARAM@5..6
17 DESTRUCT_FULL@5..618 DESTRUCT_FULL@5..6
18 NAME@5..619 NAME@5..6
19 IDENT@5..6 "x"20 IDENT@5..6 "x"
20 R_PAREN@6..7 ")"21 R_PAREN@6..7 ")"
21 COLON@7..8 ":"22 COLON@7..8 ":"
22 WHITESPACE@8..9 " "23 WHITESPACE@8..9 " "
23 EXPR_VAR@9..1024 EXPR@9..10
25 EXPR_VAR@9..10
24 NAME@9..1026 NAME@9..10
25 IDENT@9..10 "x"27 IDENT@9..10 "x"
26 COMMA@10..11 ","28 COMMA@10..11 ","
27 WHITESPACE@11..13 "\n\t"29 WHITESPACE@11..13 "\n\t"
28 MEMBER_FIELD_METHOD@13..2930 MEMBER_FIELD_METHOD@13..29
29 FIELD_NAME_FIXED@13..1431 FIELD_NAME_FIXED@13..14
30 NAME@13..1432 NAME@13..14
31 IDENT@13..14 "a"33 IDENT@13..14 "a"
32 COLON@14..15 ":"34 COLON@14..15 ":"
33 WHITESPACE@15..16 " "35 WHITESPACE@15..16 " "
34 FUNCTION_KW@16..24 "function"36 FUNCTION_KW@16..24 "function"
35 PARAMS_DESC@24..2737 PARAMS_DESC@24..27
36 L_PAREN@24..25 "("38 L_PAREN@24..25 "("
37 PARAM@25..2639 PARAM@25..26
38 DESTRUCT_FULL@25..2640 DESTRUCT_FULL@25..26
39 NAME@25..2641 NAME@25..26
40 IDENT@25..26 "x"42 IDENT@25..26 "x"
41 R_PAREN@26..27 ")"43 R_PAREN@26..27 ")"
42 WHITESPACE@27..28 " "44 WHITESPACE@27..28 " "
43 EXPR_VAR@28..2945 EXPR@28..29
46 EXPR_VAR@28..29
44 NAME@28..2947 NAME@28..29
45 IDENT@28..29 "x"48 IDENT@28..29 "x"
46 COMMA@29..30 ","49 COMMA@29..30 ","
47 WHITESPACE@30..31 "\n"50 WHITESPACE@30..31 "\n"
48 R_BRACE@31..32 "}"51 R_BRACE@31..32 "}"
49 WHITESPACE@32..33 "\n"52 WHITESPACE@32..33 "\n"
5053
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__plain_call.snapdiffbeforeafterboth
3expression: "std.substr(a, 0, std.length(b)) == b\n"3expression: "std.substr(a, 0, std.length(b)) == b\n"
4---4---
5SOURCE_FILE@0..375SOURCE_FILE@0..37
6 EXPR_BINARY@0..366 EXPR@0..36
7 LHS_EXPR@0..317 EXPR_BINARY@0..36
8 EXPR_APPLY@0..318 EXPR@0..3
9 EXPR_INDEX@0..109 EXPR_VAR@0..3
10 EXPR_VAR@0..3
11 NAME@0..310 NAME@0..3
12 IDENT@0..3 "std"11 IDENT@0..3 "std"
13 DOT@3..4 "."12 SUFFIX_INDEX@3..10
13 DOT@3..4 "."
14 NAME@4..1014 NAME@4..10
15 IDENT@4..10 "substr"15 IDENT@4..10 "substr"
16 SUFFIX_APPLY@10..31
16 ARGS_DESC@10..3117 ARGS_DESC@10..31
17 L_PAREN@10..11 "("18 L_PAREN@10..11 "("
18 ARG@11..1219 ARG@11..12
19 EXPR_VAR@11..1220 EXPR@11..12
21 EXPR_VAR@11..12
20 NAME@11..1222 NAME@11..12
21 IDENT@11..12 "a"23 IDENT@11..12 "a"
22 COMMA@12..13 ","24 COMMA@12..13 ","
23 WHITESPACE@13..14 " "25 WHITESPACE@13..14 " "
24 ARG@14..1526 ARG@14..15
25 EXPR_NUMBER@14..1527 EXPR@14..15
28 EXPR_NUMBER@14..15
26 FLOAT@14..15 "0"29 FLOAT@14..15 "0"
27 COMMA@15..16 ","30 COMMA@15..16 ","
28 WHITESPACE@16..17 " "31 WHITESPACE@16..17 " "
29 ARG@17..3032 ARG@17..30
30 EXPR_APPLY@17..3033 EXPR@17..30
31 EXPR_INDEX@17..2734 EXPR_VAR@17..20
32 EXPR_VAR@17..2035 NAME@17..20
33 NAME@17..2036 IDENT@17..20 "std"
34 IDENT@17..20 "std"37 SUFFIX_INDEX@20..27
35 DOT@20..21 "."38 DOT@20..21 "."
36 NAME@21..2739 NAME@21..27
37 IDENT@21..27 "length"40 IDENT@21..27 "length"
38 ARGS_DESC@27..3041 SUFFIX_APPLY@27..30
42 ARGS_DESC@27..30
39 L_PAREN@27..28 "("43 L_PAREN@27..28 "("
40 ARG@28..2944 ARG@28..29
41 EXPR_VAR@28..2945 EXPR@28..29
46 EXPR_VAR@28..29
42 NAME@28..2947 NAME@28..29
43 IDENT@28..29 "b"48 IDENT@28..29 "b"
44 R_PAREN@29..30 ")"49 R_PAREN@29..30 ")"
45 R_PAREN@30..31 ")"50 R_PAREN@30..31 ")"
46 WHITESPACE@31..32 " "51 WHITESPACE@31..32 " "
47 EQ@32..34 "=="52 EQ@32..34 "=="
48 WHITESPACE@34..35 " "53 WHITESPACE@34..35 " "
49 EXPR_VAR@35..3654 EXPR@35..36
55 EXPR_VAR@35..36
50 NAME@35..3656 NAME@35..36
51 IDENT@35..36 "b"57 IDENT@35..36 "b"
52 WHITESPACE@36..37 "\n"58 WHITESPACE@36..37 "\n"
53
5459
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__stdlib.snapdiffbeforeafterboth
1---1---
2source: crates/jrsonnet-rowan-parser/src/tests.rs2source: crates/jrsonnet-rowan-parser/src/tests.rs
3expression: "{\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 '<': '&lt;',\n '>': '&gt;',\n '&': '&amp;',\n '\"': '&quot;',\n \"'\": '&apos;',\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"3expression: "{\n local std = self,\n local id = std.id,\n\n thisFile:: error 'std.thisFile is deprecated, to enable its support in jrsonnet - recompile it with \"legacy-this-file\" support.\\nThis will slow down stdlib caching a bit, though',\n\n lstripChars(str, chars)::\n if std.length(str) > 0 && std.member(chars, str[0]) then\n std.lstripChars(str[1:], chars)\n else\n str,\n\n rstripChars(str, chars)::\n local len = std.length(str);\n if len > 0 && std.member(chars, str[len - 1]) then\n std.rstripChars(str[:len - 1], chars)\n else\n str,\n\n stripChars(str, chars)::\n std.lstripChars(std.rstripChars(str, chars), chars),\n\n splitLimitR(str, c, maxsplits)::\n if maxsplits == -1 then\n std.splitLimit(str, c, -1)\n else\n local revStr(str) = std.join('', std.reverse(std.stringChars(str)));\n std.map(function(e) revStr(e), std.reverse(std.splitLimit(revStr(str), revStr(c), maxsplits))),\n\n split(str, c):: std.splitLimit(str, c, -1),\n\n mapWithIndex(func, arr)::\n if !std.isFunction(func) then\n error ('std.mapWithIndex first param must be function, got ' + std.type(func))\n else if !std.isArray(arr) && !std.isString(arr) then\n error ('std.mapWithIndex second param must be array, got ' + std.type(arr))\n else\n std.makeArray(std.length(arr), function(i) func(i, arr[i])),\n\n mapWithKey(func, obj)::\n if !std.isFunction(func) then\n error ('std.mapWithKey first param must be function, got ' + std.type(func))\n else if !std.isObject(obj) then\n error ('std.mapWithKey second param must be object, got ' + std.type(obj))\n else\n { [k]: func(k, obj[k]) for k in std.objectFields(obj) },\n\n lines(arr)::\n std.join('\\n', arr + ['']),\n\n deepJoin(arr)::\n if std.isString(arr) then\n arr\n else if std.isArray(arr) then\n std.join('', [std.deepJoin(x) for x in arr])\n else\n error 'Expected string or array, got %s' % std.type(arr),\n\n assertEqual(a, b)::\n if a == b then\n true\n else\n error 'Assertion failed. ' + a + ' != ' + b,\n\n clamp(x, minVal, maxVal)::\n if x < minVal then minVal\n else if x > maxVal then maxVal\n else x,\n\n manifestIni(ini)::\n local body_lines(body) =\n std.join([], [\n local value_or_values = body[k];\n if std.isArray(value_or_values) then\n ['%s = %s' % [k, value] for value in value_or_values]\n else\n ['%s = %s' % [k, value_or_values]]\n\n for k in std.objectFields(body)\n ]);\n\n local section_lines(sname, sbody) = ['[%s]' % [sname]] + body_lines(sbody),\n main_body = if std.objectHas(ini, 'main') then body_lines(ini.main) else [],\n all_sections = [\n section_lines(k, ini.sections[k])\n for k in std.objectFields(ini.sections)\n ];\n std.join('\\n', main_body + std.flattenArrays(all_sections) + ['']),\n\n manifestToml(value):: std.manifestTomlEx(value, ' '),\n\n escapeStringPython(str)::\n std.escapeStringJson(str),\n\n escapeStringBash(str_)::\n local str = std.toString(str_);\n local trans(ch) =\n if ch == \"'\" then\n \"'\\\"'\\\"'\"\n else\n ch;\n \"'%s'\" % std.join('', [trans(ch) for ch in std.stringChars(str)]),\n\n escapeStringDollars(str_)::\n local str = std.toString(str_);\n local trans(ch) =\n if ch == '$' then\n '$$'\n else\n ch;\n std.foldl(function(a, b) a + trans(b), std.stringChars(str), ''),\n\n local xml_escapes = {\n '<': '&lt;',\n '>': '&gt;',\n '&': '&amp;',\n '\"': '&quot;',\n \"'\": '&apos;',\n },\n\n escapeStringXML(str_)::\n local str = std.toString(str_);\n std.join('', [std.get(xml_escapes, ch, ch) for ch in std.stringChars(str)]),\n\n manifestJson(value):: std.manifestJsonEx(value, ' ') tailstrict,\n\n manifestJsonMinified(value):: std.manifestJsonEx(value, '', '', ':'),\n\n manifestYamlStream(value, indent_array_in_object=false, c_document_end=true, quote_keys=true)::\n if !std.isArray(value) then\n error 'manifestYamlStream only takes arrays, got ' + std.type(value)\n else\n '---\\n' + std.join(\n '\\n---\\n', [std.manifestYamlDoc(e, indent_array_in_object, quote_keys) for e in value]\n ) + if c_document_end then '\\n...\\n' else '\\n',\n\n manifestPython(v)::\n if std.isObject(v) then\n local fields = [\n '%s: %s' % [std.escapeStringPython(k), std.manifestPython(v[k])]\n for k in std.objectFields(v)\n ];\n '{%s}' % [std.join(', ', fields)]\n else if std.isArray(v) then\n '[%s]' % [std.join(', ', [std.manifestPython(v2) for v2 in v])]\n else if std.isString(v) then\n '%s' % [std.escapeStringPython(v)]\n else if std.isFunction(v) then\n error 'cannot manifest function'\n else if std.isNumber(v) then\n std.toString(v)\n else if v == true then\n 'True'\n else if v == false then\n 'False'\n else if v == null then\n 'None',\n\n manifestPythonVars(conf)::\n local vars = ['%s = %s' % [k, std.manifestPython(conf[k])] for k in std.objectFields(conf)];\n std.join('\\n', vars + ['']),\n\n manifestXmlJsonml(value)::\n if !std.isArray(value) then\n error 'Expected a JSONML value (an array), got %s' % std.type(value)\n else\n local aux(v) =\n if std.isString(v) then\n v\n else\n local tag = v[0];\n local has_attrs = std.length(v) > 1 && std.isObject(v[1]);\n local attrs = if has_attrs then v[1] else {};\n local children = if has_attrs then v[2:] else v[1:];\n local attrs_str =\n std.join('', [' %s=\"%s\"' % [k, attrs[k]] for k in std.objectFields(attrs)]);\n std.deepJoin(['<', tag, attrs_str, '>', [aux(x) for x in children], '</', tag, '>']);\n\n aux(value),\n\n mergePatch(target, patch)::\n if std.isObject(patch) then\n local target_object =\n if std.isObject(target) then target else {};\n\n local target_fields =\n if std.isObject(target_object) then std.objectFields(target_object) else [];\n\n local null_fields = [k for k in std.objectFields(patch) if patch[k] == null];\n local both_fields = std.setUnion(target_fields, std.objectFields(patch));\n\n {\n [k]:\n if !std.objectHas(patch, k) then\n target_object[k]\n else if !std.objectHas(target_object, k) then\n std.mergePatch(null, patch[k]) tailstrict\n else\n std.mergePatch(target_object[k], patch[k]) tailstrict\n for k in std.setDiff(both_fields, null_fields)\n }\n else\n patch,\n\n get(o, f, default=null, inc_hidden=true)::\n if std.objectHasEx(o, f, inc_hidden) then o[f] else default,\n\n resolvePath(f, r)::\n local arr = std.split(f, '/');\n std.join('/', std.makeArray(std.length(arr) - 1, function(i) arr[i]) + [r]),\n\n prune(a)::\n local isContent(b) =\n if b == null then\n false\n else if std.isArray(b) then\n std.length(b) > 0\n else if std.isObject(b) then\n std.length(b) > 0\n else\n true;\n if std.isArray(a) then\n [std.prune(x) for x in a if isContent($.prune(x))]\n else if std.isObject(a) then {\n [x]: $.prune(a[x])\n for x in std.objectFields(a)\n if isContent(std.prune(a[x]))\n } else\n a,\n\n find(value, arr)::\n if !std.isArray(arr) then\n error 'find second parameter should be an array, got ' + std.type(arr)\n else\n std.filter(function(i) arr[i] == value, std.range(0, std.length(arr) - 1)),\n\n // Compat\n __compare_array(arr1, arr2)::\n assert std.isArray(arr1) && std.isArray(arr2);\n std.__compare(arr1, arr2),\n __array_less(arr1, arr2):: std.__compare_array(arr1, arr2) == -1,\n __array_greater(arr1, arr2):: std.__compare_array(arr1, arr2) == 1,\n __array_less_or_equal(arr1, arr2):: std.__compare_array(arr1, arr2) <= 0,\n __array_greater_or_equal(arr1, arr2):: std.__compare_array(arr1, arr2) >= 0,\n}\n"
4---4---
5SOURCE_FILE@0..98605SOURCE_FILE@0..7835
6 EXPR_OBJECT@0..98596 EXPR@0..7834
7 OBJ_BODY_MEMBER_LIST@0..98597 EXPR_OBJECT@0..7834
8 L_BRACE@0..1 "{"8 OBJ_BODY_MEMBER_LIST@0..7834
9 WHITESPACE@1..4 "\n "9 L_BRACE@0..1 "{"
10 MEMBER_BIND_STMT@4..2010 WHITESPACE@1..4 "\n "
11 OBJ_LOCAL@4..2011 MEMBER_BIND_STMT@4..20
12 LOCAL_KW@4..9 "local"12 OBJ_LOCAL@4..20
13 WHITESPACE@9..10 " "13 LOCAL_KW@4..9 "local"
14 BIND_DESTRUCT@10..2014 WHITESPACE@9..10 " "
15 DESTRUCT_FULL@10..1315 BIND_DESTRUCT@10..20
16 NAME@10..1316 DESTRUCT_FULL@10..13
17 IDENT@10..13 "std"17 NAME@10..13
18 WHITESPACE@13..14 " "18 IDENT@10..13 "std"
19 ASSIGN@14..15 "="19 WHITESPACE@13..14 " "
20 WHITESPACE@15..16 " "20 ASSIGN@14..15 "="
21 EXPR_LITERAL@16..2021 WHITESPACE@15..16 " "
22 SELF_KW@16..20 "self"22 EXPR@16..20
23 COMMA@20..21 ","23 EXPR_LITERAL@16..20
24 WHITESPACE@21..24 "\n "24 SELF_KW@16..20 "self"
25 MEMBER_BIND_STMT@24..4125 COMMA@20..21 ","
26 OBJ_LOCAL@24..4126 WHITESPACE@21..24 "\n "
27 LOCAL_KW@24..29 "local"27 MEMBER_BIND_STMT@24..41
28 WHITESPACE@29..30 " "28 OBJ_LOCAL@24..41
29 BIND_DESTRUCT@30..4129 LOCAL_KW@24..29 "local"
30 DESTRUCT_FULL@30..3230 WHITESPACE@29..30 " "
31 NAME@30..3231 BIND_DESTRUCT@30..41
32 IDENT@30..32 "id"32 DESTRUCT_FULL@30..32
33 WHITESPACE@32..33 " "33 NAME@30..32
34 ASSIGN@33..34 "="34 IDENT@30..32 "id"
35 WHITESPACE@34..35 " "35 WHITESPACE@32..33 " "
36 EXPR_INDEX@35..4136 ASSIGN@33..34 "="
37 EXPR_VAR@35..3837 WHITESPACE@34..35 " "
38 NAME@35..3838 EXPR@35..41
39 IDENT@35..38 "std"39 EXPR_VAR@35..38
40 DOT@38..39 "."40 NAME@35..38
41 NAME@39..4141 IDENT@35..38 "std"
42 IDENT@39..41 "id"42 SUFFIX_INDEX@38..41
43 COMMA@41..42 ","43 DOT@38..39 "."
44 WHITESPACE@42..46 "\n\n "44 NAME@39..41
45 MEMBER_FIELD_NORMAL@46..22445 IDENT@39..41 "id"
46 FIELD_NAME_FIXED@46..5446 COMMA@41..42 ","
47 NAME@46..5447 WHITESPACE@42..46 "\n\n "
48 IDENT@46..54 "thisFile"48 MEMBER_FIELD_NORMAL@46..224
49 COLONCOLON@54..56 "::"49 FIELD_NAME_FIXED@46..54
50 WHITESPACE@56..57 " "50 NAME@46..54
51 EXPR_ERROR@57..22451 IDENT@46..54 "thisFile"
52 ERROR_KW@57..62 "error"52 COLONCOLON@54..56 "::"
53 WHITESPACE@62..63 " "53 WHITESPACE@56..57 " "
54 EXPR_STRING@63..22454 EXPR@57..224
55 STRING_SINGLE@63..224 "'std.thisFile is depr ..."55 EXPR_ERROR@57..224
56 COMMA@224..225 ","56 ERROR_KW@57..62 "error"
57 WHITESPACE@225..229 "\n\n "57 WHITESPACE@62..63 " "
58 MEMBER_FIELD_METHOD@229..24958 EXPR@63..224
59 FIELD_NAME_FIXED@229..23759 EXPR_STRING@63..224
60 NAME@229..23760 STRING_SINGLE@63..224 "'std.thisFile is depr ..."
61 IDENT@229..237 "toString"61 COMMA@224..225 ","
62 PARAMS_DESC@237..24062 WHITESPACE@225..229 "\n\n "
63 L_PAREN@237..238 "("63 MEMBER_FIELD_METHOD@229..372
64 PARAM@238..23964 FIELD_NAME_FIXED@229..240
65 DESTRUCT_FULL@238..23965 NAME@229..240
66 NAME@238..23966 IDENT@229..240 "lstripChars"
67 IDENT@238..239 "a"67 PARAMS_DESC@240..252
68 R_PAREN@239..240 ")"68 L_PAREN@240..241 "("
69 COLONCOLON@240..242 "::"69 PARAM@241..244
70 WHITESPACE@242..243 " "70 DESTRUCT_FULL@241..244
71 EXPR_BINARY@243..24971 NAME@241..244
72 LHS_EXPR@243..24572 IDENT@241..244 "str"
73 EXPR_STRING@243..24573 COMMA@244..245 ","
74 STRING_SINGLE@243..245 "''"74 WHITESPACE@245..246 " "
75 WHITESPACE@245..246 " "75 PARAM@246..251
76 PLUS@246..247 "+"76 DESTRUCT_FULL@246..251
77 WHITESPACE@247..248 " "77 NAME@246..251
78 EXPR_VAR@248..24978 IDENT@246..251 "chars"
79 NAME@248..24979 R_PAREN@251..252 ")"
80 IDENT@248..249 "a"80 COLONCOLON@252..254 "::"
81 COMMA@249..250 ","81 WHITESPACE@254..259 "\n "
82 WHITESPACE@250..254 "\n\n "82 EXPR@259..372
83 MEMBER_FIELD_METHOD@254..39783 EXPR_IF_THEN_ELSE@259..372
84 FIELD_NAME_FIXED@254..26584 IF_KW@259..261 "if"
85 NAME@254..26585 WHITESPACE@261..262 " "
86 IDENT@254..265 "lstripChars"86 EXPR@262..310
87 PARAMS_DESC@265..27787 EXPR_BINARY@262..310
88 L_PAREN@265..266 "("88 EXPR@262..281
89 PARAM@266..26989 EXPR_BINARY@262..281
90 DESTRUCT_FULL@266..26990 EXPR@262..265
91 NAME@266..26991 EXPR_VAR@262..265
92 IDENT@266..269 "str"92 NAME@262..265
93 COMMA@269..270 ","93 IDENT@262..265 "std"
94 WHITESPACE@270..271 " "94 SUFFIX_INDEX@265..272
95 PARAM@271..27695 DOT@265..266 "."
96 DESTRUCT_FULL@271..27696 NAME@266..272
97 NAME@271..27697 IDENT@266..272 "length"
98 IDENT@271..276 "chars"98 SUFFIX_APPLY@272..277
99 R_PAREN@276..277 ")"99 ARGS_DESC@272..277
100 COLONCOLON@277..279 "::"100 L_PAREN@272..273 "("
101 WHITESPACE@279..284 "\n "101 ARG@273..276
102 EXPR_IF_THEN_ELSE@284..397102 EXPR@273..276
103 IF_KW@284..286 "if"103 EXPR_VAR@273..276
104 WHITESPACE@286..287 " "104 NAME@273..276
105 EXPR_BINARY@287..335105 IDENT@273..276 "str"
106 LHS_EXPR@287..306106 R_PAREN@276..277 ")"
107 EXPR_BINARY@287..306107 WHITESPACE@277..278 " "
108 LHS_EXPR@287..302108 GT@278..279 ">"
109 EXPR_APPLY@287..302109 WHITESPACE@279..280 " "
110 EXPR_INDEX@287..297110 EXPR@280..281
111 EXPR_VAR@287..290111 EXPR_NUMBER@280..281
112 NAME@287..290112 FLOAT@280..281 "0"
113 IDENT@287..290 "std"113 WHITESPACE@281..282 " "
114 DOT@290..291 "."114 AND@282..284 "&&"
115 NAME@291..297115 WHITESPACE@284..285 " "
116 IDENT@291..297 "length"116 EXPR@285..310
117 ARGS_DESC@297..302117 EXPR_VAR@285..288
118 L_PAREN@297..298 "("118 NAME@285..288
119 ARG@298..301119 IDENT@285..288 "std"
120 EXPR_VAR@298..301120 SUFFIX_INDEX@288..295
121 NAME@298..301121 DOT@288..289 "."
122 IDENT@298..301 "str"122 NAME@289..295
123 R_PAREN@301..302 ")"123 IDENT@289..295 "member"
124 WHITESPACE@302..303 " "124 SUFFIX_APPLY@295..310
125 GT@303..304 ">"125 ARGS_DESC@295..310
126 WHITESPACE@304..305 " "126 L_PAREN@295..296 "("
127 EXPR_NUMBER@305..306127 ARG@296..301
128 FLOAT@305..306 "0"128 EXPR@296..301
129 WHITESPACE@306..307 " "129 EXPR_VAR@296..301
130 AND@307..309 "&&"130 NAME@296..301
131 WHITESPACE@309..310 " "131 IDENT@296..301 "chars"
132 EXPR_APPLY@310..335132 COMMA@301..302 ","
133 EXPR_INDEX@310..320133 WHITESPACE@302..303 " "
134 EXPR_VAR@310..313134 ARG@303..309
135 NAME@310..313135 EXPR@303..309
136 IDENT@310..313 "std"136 EXPR_VAR@303..306
137 DOT@313..314 "."137 NAME@303..306
138 NAME@314..320138 IDENT@303..306 "str"
139 IDENT@314..320 "member"139 SUFFIX_INDEX_EXPR@306..309
140 ARGS_DESC@320..335140 L_BRACK@306..307 "["
141 L_PAREN@320..321 "("141 EXPR@307..308
142 ARG@321..326142 EXPR_NUMBER@307..308
143 EXPR_VAR@321..326143 FLOAT@307..308 "0"
144 NAME@321..326144 R_BRACK@308..309 "]"
145 IDENT@321..326 "chars"145 R_PAREN@309..310 ")"
146 COMMA@326..327 ","146 WHITESPACE@310..311 " "
147 WHITESPACE@327..328 " "147 THEN_KW@311..315 "then"
148 ARG@328..334148 WHITESPACE@315..322 "\n "
149 EXPR_INDEX_EXPR@328..334149 TRUE_EXPR@322..353
150 LHS_EXPR@328..331150 EXPR@322..353
151 EXPR_VAR@328..331151 EXPR_VAR@322..325
152 NAME@328..331152 NAME@322..325
153 IDENT@328..331 "str"153 IDENT@322..325 "std"
154 L_BRACK@331..332 "["154 SUFFIX_INDEX@325..337
155 EXPR_NUMBER@332..333155 DOT@325..326 "."
156 FLOAT@332..333 "0"156 NAME@326..337
157 R_BRACK@333..334 "]"157 IDENT@326..337 "lstripChars"
158 R_PAREN@334..335 ")"158 SUFFIX_APPLY@337..353
159 WHITESPACE@335..336 " "159 ARGS_DESC@337..353
160 THEN_KW@336..340 "then"160 L_PAREN@337..338 "("
161 WHITESPACE@340..347 "\n "161 ARG@338..345
162 TRUE_EXPR@347..378162 EXPR@338..345
163 EXPR_APPLY@347..378163 EXPR_VAR@338..341
164 EXPR_INDEX@347..362164 NAME@338..341
165 EXPR_VAR@347..350165 IDENT@338..341 "str"
166 NAME@347..350166 SUFFIX_SLICE@341..345
167 IDENT@347..350 "std"167 SLICE_DESC@341..345
168 DOT@350..351 "."168 L_BRACK@341..342 "["
169 NAME@351..362169 EXPR@342..343
170 IDENT@351..362 "lstripChars"170 EXPR_NUMBER@342..343
171 ARGS_DESC@362..378171 FLOAT@342..343 "1"
172 L_PAREN@362..363 "("172 COLON@343..344 ":"
173 ARG@363..370173 R_BRACK@344..345 "]"
174 EXPR_SLICE@363..370174 COMMA@345..346 ","
175 EXPR_VAR@363..366175 WHITESPACE@346..347 " "
176 NAME@363..366176 ARG@347..352
177 IDENT@363..366 "str"177 EXPR@347..352
178 SLICE_DESC@366..370178 EXPR_VAR@347..352
179 L_BRACK@366..367 "["179 NAME@347..352
180 EXPR_NUMBER@367..368180 IDENT@347..352 "chars"
181 FLOAT@367..368 "1"181 R_PAREN@352..353 ")"
182 COLON@368..369 ":"182 WHITESPACE@353..358 "\n "
183 R_BRACK@369..370 "]"183 ELSE_KW@358..362 "else"
184 COMMA@370..371 ","184 WHITESPACE@362..369 "\n "
185 WHITESPACE@371..372 " "185 FALSE_EXPR@369..372
186 ARG@372..377186 EXPR@369..372
187 EXPR_VAR@372..377187 EXPR_VAR@369..372
188 NAME@372..377188 NAME@369..372
189 IDENT@372..377 "chars"189 IDENT@369..372 "str"
190 R_PAREN@377..378 ")"190 COMMA@372..373 ","
191 WHITESPACE@378..383 "\n "191 WHITESPACE@373..377 "\n\n "
192 ELSE_KW@383..387 "else"192 MEMBER_FIELD_METHOD@377..553
193 WHITESPACE@387..394 "\n "193 FIELD_NAME_FIXED@377..388
194 FALSE_EXPR@394..397194 NAME@377..388
195 EXPR_VAR@394..397195 IDENT@377..388 "rstripChars"
196 NAME@394..397196 PARAMS_DESC@388..400
197 IDENT@394..397 "str"197 L_PAREN@388..389 "("
198 COMMA@397..398 ","198 PARAM@389..392
199 WHITESPACE@398..402 "\n\n "199 DESTRUCT_FULL@389..392
200 MEMBER_FIELD_METHOD@402..578200 NAME@389..392
201 FIELD_NAME_FIXED@402..413201 IDENT@389..392 "str"
202 NAME@402..413202 COMMA@392..393 ","
203 IDENT@402..413 "rstripChars"203 WHITESPACE@393..394 " "
204 PARAMS_DESC@413..425204 PARAM@394..399
205 L_PAREN@413..414 "("205 DESTRUCT_FULL@394..399
206 PARAM@414..417206 NAME@394..399
207 DESTRUCT_FULL@414..417207 IDENT@394..399 "chars"
208 NAME@414..417208 R_PAREN@399..400 ")"
209 IDENT@414..417 "str"209 COLONCOLON@400..402 "::"
210 COMMA@417..418 ","210 WHITESPACE@402..407 "\n "
211 WHITESPACE@418..419 " "211 EXPR@407..553
212 PARAM@419..424212 STMT_LOCAL@407..435
213 DESTRUCT_FULL@419..424213 LOCAL_KW@407..412 "local"
214 NAME@419..424214 WHITESPACE@412..413 " "
215 IDENT@419..424 "chars"215 BIND_DESTRUCT@413..434
216 R_PAREN@424..425 ")"216 DESTRUCT_FULL@413..416
217 COLONCOLON@425..427 "::"217 NAME@413..416
218 WHITESPACE@427..432 "\n "218 IDENT@413..416 "len"
219 STMT_LOCAL@432..460219 WHITESPACE@416..417 " "
220 LOCAL_KW@432..437 "local"220 ASSIGN@417..418 "="
221 WHITESPACE@437..438 " "221 WHITESPACE@418..419 " "
222 BIND_DESTRUCT@438..459222 EXPR@419..434
223 DESTRUCT_FULL@438..441223 EXPR_VAR@419..422
224 NAME@438..441224 NAME@419..422
225 IDENT@438..441 "len"225 IDENT@419..422 "std"
226 WHITESPACE@441..442 " "226 SUFFIX_INDEX@422..429
227 ASSIGN@442..443 "="227 DOT@422..423 "."
228 WHITESPACE@443..444 " "228 NAME@423..429
229 EXPR_APPLY@444..459229 IDENT@423..429 "length"
230 EXPR_INDEX@444..454230 SUFFIX_APPLY@429..434
231 EXPR_VAR@444..447231 ARGS_DESC@429..434
232 NAME@444..447232 L_PAREN@429..430 "("
233 IDENT@444..447 "std"233 ARG@430..433
234 DOT@447..448 "."234 EXPR@430..433
235 NAME@448..454235 EXPR_VAR@430..433
236 IDENT@448..454 "length"236 NAME@430..433
237 ARGS_DESC@454..459237 IDENT@430..433 "str"
238 L_PAREN@454..455 "("238 R_PAREN@433..434 ")"
239 ARG@455..458239 SEMI@434..435 ";"
240 EXPR_VAR@455..458240 WHITESPACE@435..440 "\n "
241 NAME@455..458241 EXPR_IF_THEN_ELSE@440..553
242 IDENT@455..458 "str"242 IF_KW@440..442 "if"
243 R_PAREN@458..459 ")"243 WHITESPACE@442..443 " "
244 SEMI@459..460 ";"244 EXPR@443..485
245 WHITESPACE@460..465 "\n "245 EXPR_BINARY@443..485
246 EXPR_IF_THEN_ELSE@465..578246 EXPR@443..450
247 IF_KW@465..467 "if"247 EXPR_BINARY@443..450
248 WHITESPACE@467..468 " "248 EXPR@443..446
249 EXPR_BINARY@468..510249 EXPR_VAR@443..446
250 LHS_EXPR@468..475250 NAME@443..446
251 EXPR_BINARY@468..475251 IDENT@443..446 "len"
252 LHS_EXPR@468..471252 WHITESPACE@446..447 " "
253 EXPR_VAR@468..471253 GT@447..448 ">"
254 NAME@468..471254 WHITESPACE@448..449 " "
255 IDENT@468..471 "len"255 EXPR@449..450
256 WHITESPACE@471..472 " "256 EXPR_NUMBER@449..450
257 GT@472..473 ">"257 FLOAT@449..450 "0"
258 WHITESPACE@473..474 " "258 WHITESPACE@450..451 " "
259 EXPR_NUMBER@474..475259 AND@451..453 "&&"
260 FLOAT@474..475 "0"260 WHITESPACE@453..454 " "
261 WHITESPACE@475..476 " "261 EXPR@454..485
262 AND@476..478 "&&"262 EXPR_VAR@454..457
263 WHITESPACE@478..479 " "263 NAME@454..457
264 EXPR_APPLY@479..510264 IDENT@454..457 "std"
265 EXPR_INDEX@479..489265 SUFFIX_INDEX@457..464
266 EXPR_VAR@479..482266 DOT@457..458 "."
267 NAME@479..482267 NAME@458..464
268 IDENT@479..482 "std"268 IDENT@458..464 "member"
269 DOT@482..483 "."269 SUFFIX_APPLY@464..485
270 NAME@483..489270 ARGS_DESC@464..485
271 IDENT@483..489 "member"271 L_PAREN@464..465 "("
272 ARGS_DESC@489..510272 ARG@465..470
273 L_PAREN@489..490 "("273 EXPR@465..470
274 ARG@490..495274 EXPR_VAR@465..470
275 EXPR_VAR@490..495275 NAME@465..470
276 NAME@490..495276 IDENT@465..470 "chars"
277 IDENT@490..495 "chars"277 COMMA@470..471 ","
278 COMMA@495..496 ","278 WHITESPACE@471..472 " "
279 WHITESPACE@496..497 " "279 ARG@472..484
280 ARG@497..509280 EXPR@472..484
281 EXPR_INDEX_EXPR@497..509281 EXPR_VAR@472..475
282 LHS_EXPR@497..500282 NAME@472..475
283 EXPR_VAR@497..500283 IDENT@472..475 "str"
284 NAME@497..500284 SUFFIX_INDEX_EXPR@475..484
285 IDENT@497..500 "str"285 L_BRACK@475..476 "["
286 L_BRACK@500..501 "["286 EXPR@476..483
287 EXPR_BINARY@501..508287 EXPR_BINARY@476..483
288 LHS_EXPR@501..504288 EXPR@476..479
289 EXPR_VAR@501..504289 EXPR_VAR@476..479
290 NAME@501..504290 NAME@476..479
291 IDENT@501..504 "len"291 IDENT@476..479 "len"
292 WHITESPACE@504..505 " "292 WHITESPACE@479..480 " "
293 MINUS@505..506 "-"293 MINUS@480..481 "-"
294 WHITESPACE@506..507 " "294 WHITESPACE@481..482 " "
295 EXPR_NUMBER@507..508295 EXPR@482..483
296 FLOAT@507..508 "1"296 EXPR_NUMBER@482..483
297 R_BRACK@508..509 "]"297 FLOAT@482..483 "1"
298 R_PAREN@509..510 ")"298 R_BRACK@483..484 "]"
299 WHITESPACE@510..511 " "299 R_PAREN@484..485 ")"
300 THEN_KW@511..515 "then"300 WHITESPACE@485..486 " "
301 WHITESPACE@515..522 "\n "301 THEN_KW@486..490 "then"
302 TRUE_EXPR@522..559302 WHITESPACE@490..497 "\n "
303 EXPR_APPLY@522..559303 TRUE_EXPR@497..534
304 EXPR_INDEX@522..537304 EXPR@497..534
305 EXPR_VAR@522..525305 EXPR_VAR@497..500
306 NAME@522..525306 NAME@497..500
307 IDENT@522..525 "std"307 IDENT@497..500 "std"
308 DOT@525..526 "."308 SUFFIX_INDEX@500..512
309 NAME@526..537309 DOT@500..501 "."
310 IDENT@526..537 "rstripChars"310 NAME@501..512
311 ARGS_DESC@537..559311 IDENT@501..512 "rstripChars"
312 L_PAREN@537..538 "("312 SUFFIX_APPLY@512..534
313 ARG@538..551313 ARGS_DESC@512..534
314 EXPR_SLICE@538..551314 L_PAREN@512..513 "("
315 EXPR_VAR@538..541315 ARG@513..526
316 NAME@538..541316 EXPR@513..526
317 IDENT@538..541 "str"317 EXPR_VAR@513..516
318 SLICE_DESC@541..551318 NAME@513..516
319 L_BRACK@541..542 "["319 IDENT@513..516 "str"
320 COLON@542..543 ":"320 SUFFIX_SLICE@516..526
321 SLICE_DESC_END@543..550321 SLICE_DESC@516..526
322 EXPR_BINARY@543..550322 L_BRACK@516..517 "["
323 LHS_EXPR@543..546323 COLON@517..518 ":"
324 EXPR_VAR@543..546324 SLICE_DESC_END@518..525
325 NAME@543..546325 EXPR@518..525
326 IDENT@543..546 "len"326 EXPR_BINARY@518..525
327 WHITESPACE@546..547 " "327 EXPR@518..521
328 MINUS@547..548 "-"328 EXPR_VAR@518..521
329 WHITESPACE@548..549 " "329 NAME@518..521
330 EXPR_NUMBER@549..550330 IDENT@518..521 "len"
331 FLOAT@549..550 "1"331 WHITESPACE@521..522 " "
332 R_BRACK@550..551 "]"332 MINUS@522..523 "-"
333 COMMA@551..552 ","333 WHITESPACE@523..524 " "
334 WHITESPACE@552..553 " "334 EXPR@524..525
335 ARG@553..558335 EXPR_NUMBER@524..525
336 EXPR_VAR@553..558336 FLOAT@524..525 "1"
337 NAME@553..558337 R_BRACK@525..526 "]"
338 IDENT@553..558 "chars"338 COMMA@526..527 ","
339 R_PAREN@558..559 ")"339 WHITESPACE@527..528 " "
340 WHITESPACE@559..564 "\n "340 ARG@528..533
341 ELSE_KW@564..568 "else"341 EXPR@528..533
342 WHITESPACE@568..575 "\n "342 EXPR_VAR@528..533
343 FALSE_EXPR@575..578343 NAME@528..533
344 EXPR_VAR@575..578344 IDENT@528..533 "chars"
345 NAME@575..578345 R_PAREN@533..534 ")"
346 IDENT@575..578 "str"346 WHITESPACE@534..539 "\n "
347 COMMA@578..579 ","347 ELSE_KW@539..543 "else"
348 WHITESPACE@579..583 "\n\n "348 WHITESPACE@543..550 "\n "
349 MEMBER_FIELD_METHOD@583..663349 FALSE_EXPR@550..553
350 FIELD_NAME_FIXED@583..593350 EXPR@550..553
351 NAME@583..593351 EXPR_VAR@550..553
352 IDENT@583..593 "stripChars"352 NAME@550..553
353 PARAMS_DESC@593..605353 IDENT@550..553 "str"
354 L_PAREN@593..594 "("354 COMMA@553..554 ","
355 PARAM@594..597355 WHITESPACE@554..558 "\n\n "
356 DESTRUCT_FULL@594..597356 MEMBER_FIELD_METHOD@558..638
357 NAME@594..597357 FIELD_NAME_FIXED@558..568
358 IDENT@594..597 "str"358 NAME@558..568
359 COMMA@597..598 ","359 IDENT@558..568 "stripChars"
360 WHITESPACE@598..599 " "360 PARAMS_DESC@568..580
361 PARAM@599..604361 L_PAREN@568..569 "("
362 DESTRUCT_FULL@599..604362 PARAM@569..572
363 NAME@599..604363 DESTRUCT_FULL@569..572
364 IDENT@599..604 "chars"364 NAME@569..572
365 R_PAREN@604..605 ")"365 IDENT@569..572 "str"
366 COLONCOLON@605..607 "::"366 COMMA@572..573 ","
367 WHITESPACE@607..612 "\n "367 WHITESPACE@573..574 " "
368 EXPR_APPLY@612..663368 PARAM@574..579
369 EXPR_INDEX@612..627369 DESTRUCT_FULL@574..579
370 EXPR_VAR@612..615370 NAME@574..579
371 NAME@612..615371 IDENT@574..579 "chars"
372 IDENT@612..615 "std"372 R_PAREN@579..580 ")"
373 DOT@615..616 "."373 COLONCOLON@580..582 "::"
374 NAME@616..627374 WHITESPACE@582..587 "\n "
375 IDENT@616..627 "lstripChars"375 EXPR@587..638
376 ARGS_DESC@627..663376 EXPR_VAR@587..590
377 L_PAREN@627..628 "("377 NAME@587..590
378 ARG@628..655378 IDENT@587..590 "std"
379 EXPR_APPLY@628..655379 SUFFIX_INDEX@590..602
380 EXPR_INDEX@628..643380 DOT@590..591 "."
381 EXPR_VAR@628..631381 NAME@591..602
382 NAME@628..631382 IDENT@591..602 "lstripChars"
383 IDENT@628..631 "std"383 SUFFIX_APPLY@602..638
384 DOT@631..632 "."384 ARGS_DESC@602..638
385 NAME@632..643385 L_PAREN@602..603 "("
386 IDENT@632..643 "rstripChars"386 ARG@603..630
387 ARGS_DESC@643..655387 EXPR@603..630
388 L_PAREN@643..644 "("388 EXPR_VAR@603..606
389 ARG@644..647389 NAME@603..606
390 EXPR_VAR@644..647390 IDENT@603..606 "std"
391 NAME@644..647391 SUFFIX_INDEX@606..618
392 IDENT@644..647 "str"392 DOT@606..607 "."
393 COMMA@647..648 ","393 NAME@607..618
394 WHITESPACE@648..649 " "394 IDENT@607..618 "rstripChars"
395 ARG@649..654395 SUFFIX_APPLY@618..630
396 EXPR_VAR@649..654396 ARGS_DESC@618..630
397 NAME@649..654397 L_PAREN@618..619 "("
398 IDENT@649..654 "chars"398 ARG@619..622
399 R_PAREN@654..655 ")"399 EXPR@619..622
400 COMMA@655..656 ","400 EXPR_VAR@619..622
401 WHITESPACE@656..657 " "401 NAME@619..622
402 ARG@657..662402 IDENT@619..622 "str"
403 EXPR_VAR@657..662403 COMMA@622..623 ","
404 NAME@657..662404 WHITESPACE@623..624 " "
405 IDENT@657..662 "chars"405 ARG@624..629
406 R_PAREN@662..663 ")"406 EXPR@624..629
407 COMMA@663..664 ","407 EXPR_VAR@624..629
408 WHITESPACE@664..668 "\n\n "408 NAME@624..629
409 MEMBER_FIELD_METHOD@668..741409 IDENT@624..629 "chars"
410 FIELD_NAME_FIXED@668..679410 R_PAREN@629..630 ")"
411 NAME@668..679411 COMMA@630..631 ","
412 IDENT@668..679 "stringChars"412 WHITESPACE@631..632 " "
413 PARAMS_DESC@679..684413 ARG@632..637
414 L_PAREN@679..680 "("414 EXPR@632..637
415 PARAM@680..683415 EXPR_VAR@632..637
416 DESTRUCT_FULL@680..683416 NAME@632..637
417 NAME@680..683417 IDENT@632..637 "chars"
418 IDENT@680..683 "str"418 R_PAREN@637..638 ")"
419 R_PAREN@683..684 ")"419 COMMA@638..639 ","
420 COLONCOLON@684..686 "::"420 WHITESPACE@639..643 "\n\n "
421 WHITESPACE@686..691 "\n "421 MEMBER_FIELD_METHOD@643..921
422 EXPR_APPLY@691..741422 FIELD_NAME_FIXED@643..654
423 EXPR_INDEX@691..704423 NAME@643..654
424 EXPR_VAR@691..694424 IDENT@643..654 "splitLimitR"
425 NAME@691..694425 PARAMS_DESC@654..673
426 IDENT@691..694 "std"426 L_PAREN@654..655 "("
427 DOT@694..695 "."427 PARAM@655..658
428 NAME@695..704428 DESTRUCT_FULL@655..658
429 IDENT@695..704 "makeArray"429 NAME@655..658
430 ARGS_DESC@704..741430 IDENT@655..658 "str"
431 L_PAREN@704..705 "("431 COMMA@658..659 ","
432 ARG@705..720432 WHITESPACE@659..660 " "
433 EXPR_APPLY@705..720433 PARAM@660..661
434 EXPR_INDEX@705..715434 DESTRUCT_FULL@660..661
435 EXPR_VAR@705..708435 NAME@660..661
436 NAME@705..708436 IDENT@660..661 "c"
437 IDENT@705..708 "std"437 COMMA@661..662 ","
438 DOT@708..709 "."438 WHITESPACE@662..663 " "
439 NAME@709..715439 PARAM@663..672
440 IDENT@709..715 "length"440 DESTRUCT_FULL@663..672
441 ARGS_DESC@715..720441 NAME@663..672
442 L_PAREN@715..716 "("442 IDENT@663..672 "maxsplits"
443 ARG@716..719443 R_PAREN@672..673 ")"
444 EXPR_VAR@716..719444 COLONCOLON@673..675 "::"
445 NAME@716..719445 WHITESPACE@675..680 "\n "
446 IDENT@716..719 "str"446 EXPR@680..921
447 R_PAREN@719..720 ")"447 EXPR_IF_THEN_ELSE@680..921
448 COMMA@720..721 ","448 IF_KW@680..682 "if"
449 WHITESPACE@721..722 " "449 WHITESPACE@682..683 " "
450 ARG@722..740450 EXPR@683..698
451 EXPR_FUNCTION@722..740451 EXPR_BINARY@683..698
452 FUNCTION_KW@722..730 "function"452 EXPR@683..692
453 PARAMS_DESC@730..733453 EXPR_VAR@683..692
454 L_PAREN@730..731 "("454 NAME@683..692
455 PARAM@731..732455 IDENT@683..692 "maxsplits"
456 DESTRUCT_FULL@731..732456 WHITESPACE@692..693 " "
457 NAME@731..732457 EQ@693..695 "=="
458 IDENT@731..732 "i"458 WHITESPACE@695..696 " "
459 R_PAREN@732..733 ")"459 EXPR@696..698
460 WHITESPACE@733..734 " "460 EXPR_UNARY@696..698
461 EXPR_INDEX_EXPR@734..740461 MINUS@696..697 "-"
462 LHS_EXPR@734..737462 EXPR_NUMBER@697..698
463 EXPR_VAR@734..737463 FLOAT@697..698 "1"
464 NAME@734..737464 WHITESPACE@698..699 " "
465 IDENT@734..737 "str"465 THEN_KW@699..703 "then"
466 L_BRACK@737..738 "["466 WHITESPACE@703..710 "\n "
467 EXPR_VAR@738..739467 TRUE_EXPR@710..736
468 NAME@738..739468 EXPR@710..736
469 IDENT@738..739 "i"469 EXPR_VAR@710..713
470 R_BRACK@739..740 "]"470 NAME@710..713
471 R_PAREN@740..741 ")"471 IDENT@710..713 "std"
472 COMMA@741..742 ","472 SUFFIX_INDEX@713..724
473 WHITESPACE@742..746 "\n\n "473 DOT@713..714 "."
474 MEMBER_FIELD_METHOD@746..1024474 NAME@714..724
475 FIELD_NAME_FIXED@746..757475 IDENT@714..724 "splitLimit"
476 NAME@746..757476 SUFFIX_APPLY@724..736
477 IDENT@746..757 "splitLimitR"477 ARGS_DESC@724..736
478 PARAMS_DESC@757..776478 L_PAREN@724..725 "("
479 L_PAREN@757..758 "("479 ARG@725..728
480 PARAM@758..761480 EXPR@725..728
481 DESTRUCT_FULL@758..761481 EXPR_VAR@725..728
482 NAME@758..761482 NAME@725..728
483 IDENT@758..761 "str"483 IDENT@725..728 "str"
484 COMMA@761..762 ","484 COMMA@728..729 ","
485 WHITESPACE@762..763 " "485 WHITESPACE@729..730 " "
486 PARAM@763..764486 ARG@730..731
487 DESTRUCT_FULL@763..764487 EXPR@730..731
488 NAME@763..764488 EXPR_VAR@730..731
489 IDENT@763..764 "c"489 NAME@730..731
490 COMMA@764..765 ","490 IDENT@730..731 "c"
491 WHITESPACE@765..766 " "491 COMMA@731..732 ","
492 PARAM@766..775492 WHITESPACE@732..733 " "
493 DESTRUCT_FULL@766..775493 ARG@733..735
494 NAME@766..775494 EXPR@733..735
495 IDENT@766..775 "maxsplits"495 EXPR_UNARY@733..735
496 R_PAREN@775..776 ")"496 MINUS@733..734 "-"
497 COLONCOLON@776..778 "::"497 EXPR_NUMBER@734..735
498 WHITESPACE@778..783 "\n "498 FLOAT@734..735 "1"
499 EXPR_IF_THEN_ELSE@783..1024499 R_PAREN@735..736 ")"
500 IF_KW@783..785 "if"500 WHITESPACE@736..741 "\n "
501 WHITESPACE@785..786 " "501 ELSE_KW@741..745 "else"
502 EXPR_BINARY@786..801502 WHITESPACE@745..752 "\n "
503 LHS_EXPR@786..795503 FALSE_EXPR@752..921
504 EXPR_VAR@786..795504 EXPR@752..921
505 NAME@786..795505 STMT_LOCAL@752..820
506 IDENT@786..795 "maxsplits"506 LOCAL_KW@752..757 "local"
507 WHITESPACE@795..796 " "507 WHITESPACE@757..758 " "
508 EQ@796..798 "=="508 BIND_FUNCTION@758..819
509 WHITESPACE@798..799 " "509 NAME@758..764
510 EXPR_UNARY@799..801510 IDENT@758..764 "revStr"
511 MINUS@799..800 "-"511 PARAMS_DESC@764..769
512 EXPR_NUMBER@800..801512 L_PAREN@764..765 "("
513 FLOAT@800..801 "1"513 PARAM@765..768
514 WHITESPACE@801..802 " "514 DESTRUCT_FULL@765..768
515 THEN_KW@802..806 "then"515 NAME@765..768
516 WHITESPACE@806..813 "\n "516 IDENT@765..768 "str"
517 TRUE_EXPR@813..839517 R_PAREN@768..769 ")"
518 EXPR_APPLY@813..839518 WHITESPACE@769..770 " "
519 EXPR_INDEX@813..827519 ASSIGN@770..771 "="
520 EXPR_VAR@813..816520 WHITESPACE@771..772 " "
521 NAME@813..816521 EXPR@772..819
522 IDENT@813..816 "std"522 EXPR_VAR@772..775
523 DOT@816..817 "."523 NAME@772..775
524 NAME@817..827524 IDENT@772..775 "std"
525 IDENT@817..827 "splitLimit"525 SUFFIX_INDEX@775..780
526 ARGS_DESC@827..839526 DOT@775..776 "."
527 L_PAREN@827..828 "("527 NAME@776..780
528 ARG@828..831528 IDENT@776..780 "join"
529 EXPR_VAR@828..831529 SUFFIX_APPLY@780..819
530 NAME@828..831530 ARGS_DESC@780..819
531 IDENT@828..831 "str"531 L_PAREN@780..781 "("
532 COMMA@831..832 ","532 ARG@781..783
533 WHITESPACE@832..833 " "533 EXPR@781..783
534 ARG@833..834534 EXPR_STRING@781..783
535 EXPR_VAR@833..834535 STRING_SINGLE@781..783 "''"
536 NAME@833..834536 COMMA@783..784 ","
537 IDENT@833..834 "c"537 WHITESPACE@784..785 " "
538 COMMA@834..835 ","538 ARG@785..818
539 WHITESPACE@835..836 " "539 EXPR@785..818
540 ARG@836..838540 EXPR_VAR@785..788
541 EXPR_UNARY@836..838541 NAME@785..788
542 MINUS@836..837 "-"542 IDENT@785..788 "std"
543 EXPR_NUMBER@837..838543 SUFFIX_INDEX@788..796
544 FLOAT@837..838 "1"544 DOT@788..789 "."
545 R_PAREN@838..839 ")"545 NAME@789..796
546 WHITESPACE@839..844 "\n "546 IDENT@789..796 "reverse"
547 ELSE_KW@844..848 "else"547 SUFFIX_APPLY@796..818
548 WHITESPACE@848..855 "\n "548 ARGS_DESC@796..818
549 STMT_LOCAL@855..923549 L_PAREN@796..797 "("
550 LOCAL_KW@855..860 "local"550 ARG@797..817
551 WHITESPACE@860..861 " "551 EXPR@797..817
552 BIND_FUNCTION@861..922552 EXPR_VAR@797..800
553 NAME@861..867553 NAME@797..800
554 IDENT@861..867 "revStr"554 IDENT@797..800 "std"
555 PARAMS_DESC@867..872555 SUFFIX_INDEX@800..812
556 L_PAREN@867..868 "("556 DOT@800..801 "."
557 PARAM@868..871557 NAME@801..812
558 DESTRUCT_FULL@868..871558 IDENT@801..812 "stringChars"
559 NAME@868..871559 SUFFIX_APPLY@812..817
560 IDENT@868..871 "str"560 ARGS_DESC@812..817
561 R_PAREN@871..872 ")"561 L_PAREN@812..813 "("
562 WHITESPACE@872..873 " "562 ARG@813..816
563 ASSIGN@873..874 "="563 EXPR@813..816
564 WHITESPACE@874..875 " "564 EXPR_VAR@813..816
565 EXPR_APPLY@875..922565 NAME@813..816
566 EXPR_INDEX@875..883566 IDENT@813..816 "str"
567 EXPR_VAR@875..878567 R_PAREN@816..817 ")"
568 NAME@875..878568 R_PAREN@817..818 ")"
569 IDENT@875..878 "std"569 R_PAREN@818..819 ")"
570 DOT@878..879 "."570 SEMI@819..820 ";"
571 NAME@879..883571 WHITESPACE@820..827 "\n "
572 IDENT@879..883 "join"572 EXPR_VAR@827..830
573 ARGS_DESC@883..922573 NAME@827..830
574 L_PAREN@883..884 "("574 IDENT@827..830 "std"
575 ARG@884..886575 SUFFIX_INDEX@830..834
576 EXPR_STRING@884..886576 DOT@830..831 "."
577 STRING_SINGLE@884..886 "''"577 NAME@831..834
578 COMMA@886..887 ","578 IDENT@831..834 "map"
579 WHITESPACE@887..888 " "579 SUFFIX_APPLY@834..921
580 ARG@888..921580 ARGS_DESC@834..921
581 EXPR_APPLY@888..921581 L_PAREN@834..835 "("
582 EXPR_INDEX@888..899582 ARG@835..856
583 EXPR_VAR@888..891583 EXPR@835..856
584 NAME@888..891584 EXPR_FUNCTION@835..856
585 IDENT@888..891 "std"585 FUNCTION_KW@835..843 "function"
586 DOT@891..892 "."586 PARAMS_DESC@843..846
587 NAME@892..899587 L_PAREN@843..844 "("
588 IDENT@892..899 "reverse"588 PARAM@844..845
589 ARGS_DESC@899..921589 DESTRUCT_FULL@844..845
590 L_PAREN@899..900 "("590 NAME@844..845
591 ARG@900..920591 IDENT@844..845 "e"
592 EXPR_APPLY@900..920592 R_PAREN@845..846 ")"
593 EXPR_INDEX@900..915593 WHITESPACE@846..847 " "
594 EXPR_VAR@900..903594 EXPR@847..856
595 NAME@900..903595 EXPR_VAR@847..853
596 IDENT@900..903 "std"596 NAME@847..853
597 DOT@903..904 "."597 IDENT@847..853 "revStr"
598 NAME@904..915598 SUFFIX_APPLY@853..856
599 IDENT@904..915 "stringChars"599 ARGS_DESC@853..856
600 ARGS_DESC@915..920600 L_PAREN@853..854 "("
601 L_PAREN@915..916 "("601 ARG@854..855
602 ARG@916..919602 EXPR@854..855
603 EXPR_VAR@916..919603 EXPR_VAR@854..855
604 NAME@916..919604 NAME@854..855
605 IDENT@916..919 "str"605 IDENT@854..855 "e"
606 R_PAREN@855..856 ")"
607 COMMA@856..857 ","
608 WHITESPACE@857..858 " "
609 ARG@858..920
610 EXPR@858..920
611 EXPR_VAR@858..861
612 NAME@858..861
613 IDENT@858..861 "std"
614 SUFFIX_INDEX@861..869
615 DOT@861..862 "."
616 NAME@862..869
617 IDENT@862..869 "reverse"
618 SUFFIX_APPLY@869..920
619 ARGS_DESC@869..920
620 L_PAREN@869..870 "("
621 ARG@870..919
622 EXPR@870..919
623 EXPR_VAR@870..873
624 NAME@870..873
625 IDENT@870..873 "std"
626 SUFFIX_INDEX@873..884
627 DOT@873..874 "."
628 NAME@874..884
629 IDENT@874..884 "splitLimit"
630 SUFFIX_APPLY@884..919
631 ARGS_DESC@884..919
632 L_PAREN@884..885 "("
633 ARG@885..896
634 EXPR@885..896
635 EXPR_VAR@885..891
636 NAME@885..891
637 IDENT@885..891 "revStr"
638 SUFFIX_APPLY@891..896
639 ARGS_DESC@891..896
640 L_PAREN@891..892 "("
641 ARG@892..895
642 EXPR@892..895
643 EXPR_VAR@892..895
644 NAME@892..895
645 IDENT@892..895 "str"
646 R_PAREN@895..896 ")"
647 COMMA@896..897 ","
648 WHITESPACE@897..898 " "
649 ARG@898..907
650 EXPR@898..907
651 EXPR_VAR@898..904
652 NAME@898..904
653 IDENT@898..904 "revStr"
654 SUFFIX_APPLY@904..907
655 ARGS_DESC@904..907
656 L_PAREN@904..905 "("
657 ARG@905..906
658 EXPR@905..906
659 EXPR_VAR@905..906
660 NAME@905..906
661 IDENT@905..906 "c"
662 R_PAREN@906..907 ")"
663 COMMA@907..908 ","
664 WHITESPACE@908..909 " "
665 ARG@909..918
666 EXPR@909..918
667 EXPR_VAR@909..918
668 NAME@909..918
669 IDENT@909..918 "maxsplits"
670 R_PAREN@918..919 ")"
606 R_PAREN@919..920 ")"671 R_PAREN@919..920 ")"
607 R_PAREN@920..921 ")"672 R_PAREN@920..921 ")"
608 R_PAREN@921..922 ")"673 COMMA@921..922 ","
609 SEMI@922..923 ";"674 WHITESPACE@922..926 "\n\n "
610 WHITESPACE@923..930 "\n "675 MEMBER_FIELD_METHOD@926..968
611 FALSE_EXPR@930..1024676 FIELD_NAME_FIXED@926..931
612 EXPR_APPLY@930..1024677 NAME@926..931
613 EXPR_INDEX@930..937678 IDENT@926..931 "split"
614 EXPR_VAR@930..933679 PARAMS_DESC@931..939
615 NAME@930..933680 L_PAREN@931..932 "("
616 IDENT@930..933 "std"681 PARAM@932..935
617 DOT@933..934 "."682 DESTRUCT_FULL@932..935
618 NAME@934..937683 NAME@932..935
619 IDENT@934..937 "map"684 IDENT@932..935 "str"
620 ARGS_DESC@937..1024685 COMMA@935..936 ","
621 L_PAREN@937..938 "("686 WHITESPACE@936..937 " "
622 ARG@938..959687 PARAM@937..938
623 EXPR_FUNCTION@938..959688 DESTRUCT_FULL@937..938
624 FUNCTION_KW@938..946 "function"689 NAME@937..938
625 PARAMS_DESC@946..949690 IDENT@937..938 "c"
626 L_PAREN@946..947 "("691 R_PAREN@938..939 ")"
627 PARAM@947..948692 COLONCOLON@939..941 "::"
628 DESTRUCT_FULL@947..948693 WHITESPACE@941..942 " "
629 NAME@947..948694 EXPR@942..968
630 IDENT@947..948 "e"695 EXPR_VAR@942..945
631 R_PAREN@948..949 ")"696 NAME@942..945
632 WHITESPACE@949..950 " "697 IDENT@942..945 "std"
633 EXPR_APPLY@950..959698 SUFFIX_INDEX@945..956
634 EXPR_VAR@950..956699 DOT@945..946 "."
635 NAME@950..956700 NAME@946..956
636 IDENT@950..956 "revStr"701 IDENT@946..956 "splitLimit"
637 ARGS_DESC@956..959702 SUFFIX_APPLY@956..968
638 L_PAREN@956..957 "("703 ARGS_DESC@956..968
639 ARG@957..958704 L_PAREN@956..957 "("
640 EXPR_VAR@957..958705 ARG@957..960
641 NAME@957..958706 EXPR@957..960
642 IDENT@957..958 "e"707 EXPR_VAR@957..960
643 R_PAREN@958..959 ")"708 NAME@957..960
644 COMMA@959..960 ","709 IDENT@957..960 "str"
645 WHITESPACE@960..961 " "710 COMMA@960..961 ","
646 ARG@961..1023711 WHITESPACE@961..962 " "
647 EXPR_APPLY@961..1023712 ARG@962..963
648 EXPR_INDEX@961..972713 EXPR@962..963
649 EXPR_VAR@961..964714 EXPR_VAR@962..963
650 NAME@961..964715 NAME@962..963
651 IDENT@961..964 "std"716 IDENT@962..963 "c"
652 DOT@964..965 "."717 COMMA@963..964 ","
653 NAME@965..972718 WHITESPACE@964..965 " "
654 IDENT@965..972 "reverse"719 ARG@965..967
655 ARGS_DESC@972..1023720 EXPR@965..967
656 L_PAREN@972..973 "("721 EXPR_UNARY@965..967
657 ARG@973..1022722 MINUS@965..966 "-"
658 EXPR_APPLY@973..1022723 EXPR_NUMBER@966..967
659 EXPR_INDEX@973..987724 FLOAT@966..967 "1"
660 EXPR_VAR@973..976725 R_PAREN@967..968 ")"
661 NAME@973..976726 COMMA@968..969 ","
662 IDENT@973..976 "std"727 WHITESPACE@969..973 "\n\n "
663 DOT@976..977 "."728 MEMBER_FIELD_METHOD@973..1331
664 NAME@977..987729 FIELD_NAME_FIXED@973..985
665 IDENT@977..987 "splitLimit"730 NAME@973..985
666 ARGS_DESC@987..1022731 IDENT@973..985 "mapWithIndex"
667 L_PAREN@987..988 "("732 PARAMS_DESC@985..996
668 ARG@988..999733 L_PAREN@985..986 "("
669 EXPR_APPLY@988..999734 PARAM@986..990
670 EXPR_VAR@988..994735 DESTRUCT_FULL@986..990
671 NAME@988..994736 NAME@986..990
672 IDENT@988..994 "revStr"737 IDENT@986..990 "func"
673 ARGS_DESC@994..999738 COMMA@990..991 ","
674 L_PAREN@994..995 "("739 WHITESPACE@991..992 " "
675 ARG@995..998740 PARAM@992..995
676 EXPR_VAR@995..998741 DESTRUCT_FULL@992..995
677 NAME@995..998742 NAME@992..995
678 IDENT@995..998 "str"743 IDENT@992..995 "arr"
679 R_PAREN@998..999 ")"744 R_PAREN@995..996 ")"
680 COMMA@999..1000 ","745 COLONCOLON@996..998 "::"
681 WHITESPACE@1000..1001 " "746 WHITESPACE@998..1003 "\n "
682 ARG@1001..1010747 EXPR@1003..1331
683 EXPR_APPLY@1001..1010748 EXPR_IF_THEN_ELSE@1003..1331
684 EXPR_VAR@1001..1007749 IF_KW@1003..1005 "if"
685 NAME@1001..1007750 WHITESPACE@1005..1006 " "
686 IDENT@1001..1007 "revStr"751 EXPR@1006..1027
687 ARGS_DESC@1007..1010752 EXPR_UNARY@1006..1027
688 L_PAREN@1007..1008 "("753 NOT@1006..1007 "!"
689 ARG@1008..1009754 EXPR_VAR@1007..1010
690 EXPR_VAR@1008..1009755 NAME@1007..1010
691 NAME@1008..1009756 IDENT@1007..1010 "std"
692 IDENT@1008..1009 "c"757 SUFFIX_INDEX@1010..1021
693 R_PAREN@1009..1010 ")"758 DOT@1010..1011 "."
694 COMMA@1010..1011 ","759 NAME@1011..1021
695 WHITESPACE@1011..1012 " "760 IDENT@1011..1021 "isFunction"
696 ARG@1012..1021761 SUFFIX_APPLY@1021..1027
697 EXPR_VAR@1012..1021762 ARGS_DESC@1021..1027
698 NAME@1012..1021763 L_PAREN@1021..1022 "("
699 IDENT@1012..1021 "maxsplits"764 ARG@1022..1026
700 R_PAREN@1021..1022 ")"765 EXPR@1022..1026
701 R_PAREN@1022..1023 ")"766 EXPR_VAR@1022..1026
702 R_PAREN@1023..1024 ")"767 NAME@1022..1026
703 COMMA@1024..1025 ","768 IDENT@1022..1026 "func"
704 WHITESPACE@1025..1029 "\n\n "769 R_PAREN@1026..1027 ")"
705 MEMBER_FIELD_METHOD@1029..1071770 WHITESPACE@1027..1028 " "
706 FIELD_NAME_FIXED@1029..1034771 THEN_KW@1028..1032 "then"
707 NAME@1029..1034772 WHITESPACE@1032..1039 "\n "
708 IDENT@1029..1034 "split"773 TRUE_EXPR@1039..1117
709 PARAMS_DESC@1034..1042774 EXPR@1039..1117
710 L_PAREN@1034..1035 "("775 EXPR_ERROR@1039..1117
711 PARAM@1035..1038776 ERROR_KW@1039..1044 "error"
712 DESTRUCT_FULL@1035..1038777 WHITESPACE@1044..1045 " "
713 NAME@1035..1038778 EXPR@1045..1117
714 IDENT@1035..1038 "str"779 EXPR_PARENED@1045..1117
715 COMMA@1038..1039 ","780 L_PAREN@1045..1046 "("
716 WHITESPACE@1039..1040 " "781 EXPR@1046..1116
717 PARAM@1040..1041782 EXPR_BINARY@1046..1116
718 DESTRUCT_FULL@1040..1041783 EXPR@1046..1099
719 NAME@1040..1041784 EXPR_STRING@1046..1099
720 IDENT@1040..1041 "c"785 STRING_SINGLE@1046..1099 "'std.mapWithIndex fir ..."
721 R_PAREN@1041..1042 ")"786 WHITESPACE@1099..1100 " "
722 COLONCOLON@1042..1044 "::"787 PLUS@1100..1101 "+"
723 WHITESPACE@1044..1045 " "788 WHITESPACE@1101..1102 " "
724 EXPR_APPLY@1045..1071789 EXPR@1102..1116
725 EXPR_INDEX@1045..1059790 EXPR_VAR@1102..1105
726 EXPR_VAR@1045..1048791 NAME@1102..1105
727 NAME@1045..1048792 IDENT@1102..1105 "std"
728 IDENT@1045..1048 "std"793 SUFFIX_INDEX@1105..1110
729 DOT@1048..1049 "."794 DOT@1105..1106 "."
730 NAME@1049..1059795 NAME@1106..1110
731 IDENT@1049..1059 "splitLimit"796 IDENT@1106..1110 "type"
732 ARGS_DESC@1059..1071797 SUFFIX_APPLY@1110..1116
733 L_PAREN@1059..1060 "("798 ARGS_DESC@1110..1116
734 ARG@1060..1063799 L_PAREN@1110..1111 "("
735 EXPR_VAR@1060..1063800 ARG@1111..1115
736 NAME@1060..1063801 EXPR@1111..1115
737 IDENT@1060..1063 "str"802 EXPR_VAR@1111..1115
738 COMMA@1063..1064 ","803 NAME@1111..1115
739 WHITESPACE@1064..1065 " "804 IDENT@1111..1115 "func"
740 ARG@1065..1066805 R_PAREN@1115..1116 ")"
741 EXPR_VAR@1065..1066806 R_PAREN@1116..1117 ")"
742 NAME@1065..1066807 WHITESPACE@1117..1122 "\n "
743 IDENT@1065..1066 "c"808 ELSE_KW@1122..1126 "else"
744 COMMA@1066..1067 ","809 WHITESPACE@1126..1127 " "
745 WHITESPACE@1067..1068 " "810 FALSE_EXPR@1127..1331
746 ARG@1068..1070811 EXPR@1127..1331
747 EXPR_UNARY@1068..1070812 EXPR_IF_THEN_ELSE@1127..1331
748 MINUS@1068..1069 "-"813 IF_KW@1127..1129 "if"
749 EXPR_NUMBER@1069..1070814 WHITESPACE@1129..1130 " "
750 FLOAT@1069..1070 "1"815 EXPR@1130..1169
751 R_PAREN@1070..1071 ")"816 EXPR_BINARY@1130..1169
752 COMMA@1071..1072 ","817 EXPR@1130..1147
753 WHITESPACE@1072..1076 "\n\n "818 EXPR_UNARY@1130..1147
754 MEMBER_FIELD_METHOD@1076..1434819 NOT@1130..1131 "!"
755 FIELD_NAME_FIXED@1076..1088820 EXPR_VAR@1131..1134
756 NAME@1076..1088821 NAME@1131..1134
757 IDENT@1076..1088 "mapWithIndex"822 IDENT@1131..1134 "std"
758 PARAMS_DESC@1088..1099823 SUFFIX_INDEX@1134..1142
759 L_PAREN@1088..1089 "("824 DOT@1134..1135 "."
760 PARAM@1089..1093825 NAME@1135..1142
761 DESTRUCT_FULL@1089..1093826 IDENT@1135..1142 "isArray"
762 NAME@1089..1093827 SUFFIX_APPLY@1142..1147
763 IDENT@1089..1093 "func"828 ARGS_DESC@1142..1147
764 COMMA@1093..1094 ","829 L_PAREN@1142..1143 "("
765 WHITESPACE@1094..1095 " "830 ARG@1143..1146
766 PARAM@1095..1098831 EXPR@1143..1146
767 DESTRUCT_FULL@1095..1098832 EXPR_VAR@1143..1146
768 NAME@1095..1098833 NAME@1143..1146
769 IDENT@1095..1098 "arr"834 IDENT@1143..1146 "arr"
770 R_PAREN@1098..1099 ")"835 R_PAREN@1146..1147 ")"
771 COLONCOLON@1099..1101 "::"836 WHITESPACE@1147..1148 " "
772 WHITESPACE@1101..1106 "\n "837 AND@1148..1150 "&&"
773 EXPR_IF_THEN_ELSE@1106..1434838 WHITESPACE@1150..1151 " "
774 IF_KW@1106..1108 "if"839 EXPR@1151..1169
775 WHITESPACE@1108..1109 " "840 EXPR_UNARY@1151..1169
776 EXPR_UNARY@1109..1130841 NOT@1151..1152 "!"
777 NOT@1109..1110 "!"842 EXPR_VAR@1152..1155
778 EXPR_APPLY@1110..1130843 NAME@1152..1155
779 EXPR_INDEX@1110..1124844 IDENT@1152..1155 "std"
780 EXPR_VAR@1110..1113845 SUFFIX_INDEX@1155..1164
781 NAME@1110..1113846 DOT@1155..1156 "."
782 IDENT@1110..1113 "std"847 NAME@1156..1164
783 DOT@1113..1114 "."848 IDENT@1156..1164 "isString"
784 NAME@1114..1124849 SUFFIX_APPLY@1164..1169
785 IDENT@1114..1124 "isFunction"850 ARGS_DESC@1164..1169
786 ARGS_DESC@1124..1130851 L_PAREN@1164..1165 "("
787 L_PAREN@1124..1125 "("852 ARG@1165..1168
788 ARG@1125..1129853 EXPR@1165..1168
789 EXPR_VAR@1125..1129854 EXPR_VAR@1165..1168
790 NAME@1125..1129855 NAME@1165..1168
791 IDENT@1125..1129 "func"856 IDENT@1165..1168 "arr"
792 R_PAREN@1129..1130 ")"857 R_PAREN@1168..1169 ")"
793 WHITESPACE@1130..1131 " "858 WHITESPACE@1169..1170 " "
794 THEN_KW@1131..1135 "then"859 THEN_KW@1170..1174 "then"
795 WHITESPACE@1135..1142 "\n "860 WHITESPACE@1174..1181 "\n "
796 TRUE_EXPR@1142..1220861 TRUE_EXPR@1181..1256
797 EXPR_ERROR@1142..1220862 EXPR@1181..1256
798 ERROR_KW@1142..1147 "error"863 EXPR_ERROR@1181..1256
799 WHITESPACE@1147..1148 " "864 ERROR_KW@1181..1186 "error"
800 EXPR_PARENED@1148..1220865 WHITESPACE@1186..1187 " "
801 L_PAREN@1148..1149 "("866 EXPR@1187..1256
802 EXPR_BINARY@1149..1219867 EXPR_PARENED@1187..1256
803 LHS_EXPR@1149..1202868 L_PAREN@1187..1188 "("
804 EXPR_STRING@1149..1202869 EXPR@1188..1255
805 STRING_SINGLE@1149..1202 "'std.mapWithIndex fir ..."870 EXPR_BINARY@1188..1255
806 WHITESPACE@1202..1203 " "871 EXPR@1188..1239
807 PLUS@1203..1204 "+"872 EXPR_STRING@1188..1239
808 WHITESPACE@1204..1205 " "873 STRING_SINGLE@1188..1239 "'std.mapWithIndex sec ..."
809 EXPR_APPLY@1205..1219874 WHITESPACE@1239..1240 " "
810 EXPR_INDEX@1205..1213875 PLUS@1240..1241 "+"
811 EXPR_VAR@1205..1208876 WHITESPACE@1241..1242 " "
812 NAME@1205..1208877 EXPR@1242..1255
813 IDENT@1205..1208 "std"878 EXPR_VAR@1242..1245
814 DOT@1208..1209 "."879 NAME@1242..1245
815 NAME@1209..1213880 IDENT@1242..1245 "std"
816 IDENT@1209..1213 "type"881 SUFFIX_INDEX@1245..1250
817 ARGS_DESC@1213..1219882 DOT@1245..1246 "."
818 L_PAREN@1213..1214 "("883 NAME@1246..1250
819 ARG@1214..1218884 IDENT@1246..1250 "type"
820 EXPR_VAR@1214..1218885 SUFFIX_APPLY@1250..1255
821 NAME@1214..1218886 ARGS_DESC@1250..1255
822 IDENT@1214..1218 "func"887 L_PAREN@1250..1251 "("
823 R_PAREN@1218..1219 ")"888 ARG@1251..1254
824 R_PAREN@1219..1220 ")"889 EXPR@1251..1254
825 WHITESPACE@1220..1225 "\n "890 EXPR_VAR@1251..1254
826 ELSE_KW@1225..1229 "else"891 NAME@1251..1254
827 WHITESPACE@1229..1230 " "892 IDENT@1251..1254 "arr"
828 FALSE_EXPR@1230..1434893 R_PAREN@1254..1255 ")"
829 EXPR_IF_THEN_ELSE@1230..1434894 R_PAREN@1255..1256 ")"
830 IF_KW@1230..1232 "if"895 WHITESPACE@1256..1261 "\n "
831 WHITESPACE@1232..1233 " "896 ELSE_KW@1261..1265 "else"
832 EXPR_BINARY@1233..1272897 WHITESPACE@1265..1272 "\n "
833 LHS_EXPR@1233..1250898 FALSE_EXPR@1272..1331
834 EXPR_UNARY@1233..1250899 EXPR@1272..1331
835 NOT@1233..1234 "!"900 EXPR_VAR@1272..1275
836 EXPR_APPLY@1234..1250901 NAME@1272..1275
837 EXPR_INDEX@1234..1245902 IDENT@1272..1275 "std"
838 EXPR_VAR@1234..1237903 SUFFIX_INDEX@1275..1285
839 NAME@1234..1237904 DOT@1275..1276 "."
840 IDENT@1234..1237 "std"905 NAME@1276..1285
841 DOT@1237..1238 "."906 IDENT@1276..1285 "makeArray"
842 NAME@1238..1245907 SUFFIX_APPLY@1285..1331
843 IDENT@1238..1245 "isArray"908 ARGS_DESC@1285..1331
844 ARGS_DESC@1245..1250909 L_PAREN@1285..1286 "("
845 L_PAREN@1245..1246 "("910 ARG@1286..1301
846 ARG@1246..1249911 EXPR@1286..1301
847 EXPR_VAR@1246..1249912 EXPR_VAR@1286..1289
848 NAME@1246..1249913 NAME@1286..1289
849 IDENT@1246..1249 "arr"914 IDENT@1286..1289 "std"
850 R_PAREN@1249..1250 ")"915 SUFFIX_INDEX@1289..1296
851 WHITESPACE@1250..1251 " "916 DOT@1289..1290 "."
852 AND@1251..1253 "&&"917 NAME@1290..1296
853 WHITESPACE@1253..1254 " "918 IDENT@1290..1296 "length"
854 EXPR_UNARY@1254..1272919 SUFFIX_APPLY@1296..1301
855 NOT@1254..1255 "!"920 ARGS_DESC@1296..1301
856 EXPR_APPLY@1255..1272921 L_PAREN@1296..1297 "("
857 EXPR_INDEX@1255..1267922 ARG@1297..1300
858 EXPR_VAR@1255..1258923 EXPR@1297..1300
859 NAME@1255..1258924 EXPR_VAR@1297..1300
860 IDENT@1255..1258 "std"925 NAME@1297..1300
861 DOT@1258..1259 "."926 IDENT@1297..1300 "arr"
862 NAME@1259..1267927 R_PAREN@1300..1301 ")"
863 IDENT@1259..1267 "isString"928 COMMA@1301..1302 ","
864 ARGS_DESC@1267..1272929 WHITESPACE@1302..1303 " "
865 L_PAREN@1267..1268 "("930 ARG@1303..1330
866 ARG@1268..1271931 EXPR@1303..1330
867 EXPR_VAR@1268..1271932 EXPR_FUNCTION@1303..1330
868 NAME@1268..1271933 FUNCTION_KW@1303..1311 "function"
869 IDENT@1268..1271 "arr"934 PARAMS_DESC@1311..1314
870 R_PAREN@1271..1272 ")"935 L_PAREN@1311..1312 "("
871 WHITESPACE@1272..1273 " "936 PARAM@1312..1313
872 THEN_KW@1273..1277 "then"937 DESTRUCT_FULL@1312..1313
873 WHITESPACE@1277..1284 "\n "938 NAME@1312..1313
874 TRUE_EXPR@1284..1359939 IDENT@1312..1313 "i"
875 EXPR_ERROR@1284..1359940 R_PAREN@1313..1314 ")"
876 ERROR_KW@1284..1289 "error"941 WHITESPACE@1314..1315 " "
877 WHITESPACE@1289..1290 " "942 EXPR@1315..1330
878 EXPR_PARENED@1290..1359943 EXPR_VAR@1315..1319
879 L_PAREN@1290..1291 "("944 NAME@1315..1319
880 EXPR_BINARY@1291..1358945 IDENT@1315..1319 "func"
881 LHS_EXPR@1291..1342946 SUFFIX_APPLY@1319..1330
882 EXPR_STRING@1291..1342947 ARGS_DESC@1319..1330
883 STRING_SINGLE@1291..1342 "'std.mapWithIndex sec ..."948 L_PAREN@1319..1320 "("
884 WHITESPACE@1342..1343 " "949 ARG@1320..1321
885 PLUS@1343..1344 "+"950 EXPR@1320..1321
886 WHITESPACE@1344..1345 " "951 EXPR_VAR@1320..1321
887 EXPR_APPLY@1345..1358952 NAME@1320..1321
888 EXPR_INDEX@1345..1353953 IDENT@1320..1321 "i"
889 EXPR_VAR@1345..1348954 COMMA@1321..1322 ","
890 NAME@1345..1348955 WHITESPACE@1322..1323 " "
891 IDENT@1345..1348 "std"956 ARG@1323..1329
892 DOT@1348..1349 "."957 EXPR@1323..1329
893 NAME@1349..1353958 EXPR_VAR@1323..1326
894 IDENT@1349..1353 "type"959 NAME@1323..1326
895 ARGS_DESC@1353..1358960 IDENT@1323..1326 "arr"
896 L_PAREN@1353..1354 "("961 SUFFIX_INDEX_EXPR@1326..1329
897 ARG@1354..1357962 L_BRACK@1326..1327 "["
898 EXPR_VAR@1354..1357963 EXPR@1327..1328
899 NAME@1354..1357964 EXPR_VAR@1327..1328
900 IDENT@1354..1357 "arr"965 NAME@1327..1328
901 R_PAREN@1357..1358 ")"966 IDENT@1327..1328 "i"
902 R_PAREN@1358..1359 ")"967 R_BRACK@1328..1329 "]"
903 WHITESPACE@1359..1364 "\n "968 R_PAREN@1329..1330 ")"
904 ELSE_KW@1364..1368 "else"969 R_PAREN@1330..1331 ")"
905 WHITESPACE@1368..1375 "\n "970 COMMA@1331..1332 ","
906 FALSE_EXPR@1375..1434971 WHITESPACE@1332..1336 "\n\n "
907 EXPR_APPLY@1375..1434972 MEMBER_FIELD_METHOD@1336..1664
908 EXPR_INDEX@1375..1388973 FIELD_NAME_FIXED@1336..1346
909 EXPR_VAR@1375..1378974 NAME@1336..1346
910 NAME@1375..1378975 IDENT@1336..1346 "mapWithKey"
911 IDENT@1375..1378 "std"976 PARAMS_DESC@1346..1357
912 DOT@1378..1379 "."977 L_PAREN@1346..1347 "("
913 NAME@1379..1388978 PARAM@1347..1351
914 IDENT@1379..1388 "makeArray"979 DESTRUCT_FULL@1347..1351
915 ARGS_DESC@1388..1434980 NAME@1347..1351
916 L_PAREN@1388..1389 "("981 IDENT@1347..1351 "func"
917 ARG@1389..1404982 COMMA@1351..1352 ","
918 EXPR_APPLY@1389..1404983 WHITESPACE@1352..1353 " "
919 EXPR_INDEX@1389..1399984 PARAM@1353..1356
920 EXPR_VAR@1389..1392985 DESTRUCT_FULL@1353..1356
921 NAME@1389..1392986 NAME@1353..1356
922 IDENT@1389..1392 "std"987 IDENT@1353..1356 "obj"
923 DOT@1392..1393 "."988 R_PAREN@1356..1357 ")"
924 NAME@1393..1399989 COLONCOLON@1357..1359 "::"
925 IDENT@1393..1399 "length"990 WHITESPACE@1359..1364 "\n "
926 ARGS_DESC@1399..1404991 EXPR@1364..1664
927 L_PAREN@1399..1400 "("992 EXPR_IF_THEN_ELSE@1364..1664
928 ARG@1400..1403993 IF_KW@1364..1366 "if"
929 EXPR_VAR@1400..1403994 WHITESPACE@1366..1367 " "
930 NAME@1400..1403995 EXPR@1367..1388
931 IDENT@1400..1403 "arr"996 EXPR_UNARY@1367..1388
932 R_PAREN@1403..1404 ")"997 NOT@1367..1368 "!"
933 COMMA@1404..1405 ","998 EXPR_VAR@1368..1371
999 NAME@1368..1371
1000 IDENT@1368..1371 "std"
1001 SUFFIX_INDEX@1371..1382
1002 DOT@1371..1372 "."
1003 NAME@1372..1382
1004 IDENT@1372..1382 "isFunction"
1005 SUFFIX_APPLY@1382..1388
1006 ARGS_DESC@1382..1388
1007 L_PAREN@1382..1383 "("
1008 ARG@1383..1387
1009 EXPR@1383..1387
1010 EXPR_VAR@1383..1387
1011 NAME@1383..1387
1012 IDENT@1383..1387 "func"
1013 R_PAREN@1387..1388 ")"
1014 WHITESPACE@1388..1389 " "
1015 THEN_KW@1389..1393 "then"
1016 WHITESPACE@1393..1400 "\n "
1017 TRUE_EXPR@1400..1476
1018 EXPR@1400..1476
1019 EXPR_ERROR@1400..1476
1020 ERROR_KW@1400..1405 "error"
934 WHITESPACE@1405..1406 " "1021 WHITESPACE@1405..1406 " "
935 ARG@1406..14331022 EXPR@1406..1476
936 EXPR_FUNCTION@1406..14331023 EXPR_PARENED@1406..1476
937 FUNCTION_KW@1406..1414 "function"1024 L_PAREN@1406..1407 "("
938 PARAMS_DESC@1414..14171025 EXPR@1407..1475
939 L_PAREN@1414..1415 "("1026 EXPR_BINARY@1407..1475
940 PARAM@1415..14161027 EXPR@1407..1458
941 DESTRUCT_FULL@1415..14161028 EXPR_STRING@1407..1458
942 NAME@1415..14161029 STRING_SINGLE@1407..1458 "'std.mapWithKey first ..."
943 IDENT@1415..1416 "i"1030 WHITESPACE@1458..1459 " "
944 R_PAREN@1416..1417 ")"1031 PLUS@1459..1460 "+"
945 WHITESPACE@1417..1418 " "1032 WHITESPACE@1460..1461 " "
946 EXPR_APPLY@1418..14331033 EXPR@1461..1475
947 EXPR_VAR@1418..14221034 EXPR_VAR@1461..1464
948 NAME@1418..14221035 NAME@1461..1464
949 IDENT@1418..1422 "func"1036 IDENT@1461..1464 "std"
950 ARGS_DESC@1422..14331037 SUFFIX_INDEX@1464..1469
951 L_PAREN@1422..1423 "("1038 DOT@1464..1465 "."
952 ARG@1423..14241039 NAME@1465..1469
953 EXPR_VAR@1423..14241040 IDENT@1465..1469 "type"
954 NAME@1423..14241041 SUFFIX_APPLY@1469..1475
955 IDENT@1423..1424 "i"1042 ARGS_DESC@1469..1475
956 COMMA@1424..1425 ","1043 L_PAREN@1469..1470 "("
957 WHITESPACE@1425..1426 " "1044 ARG@1470..1474
958 ARG@1426..14321045 EXPR@1470..1474
959 EXPR_INDEX_EXPR@1426..14321046 EXPR_VAR@1470..1474
960 LHS_EXPR@1426..14291047 NAME@1470..1474
961 EXPR_VAR@1426..14291048 IDENT@1470..1474 "func"
962 NAME@1426..14291049 R_PAREN@1474..1475 ")"
963 IDENT@1426..1429 "arr"1050 R_PAREN@1475..1476 ")"
964 L_BRACK@1429..1430 "["1051 WHITESPACE@1476..1481 "\n "
965 EXPR_VAR@1430..14311052 ELSE_KW@1481..1485 "else"
966 NAME@1430..14311053 WHITESPACE@1485..1486 " "
967 IDENT@1430..1431 "i"1054 FALSE_EXPR@1486..1664
968 R_BRACK@1431..1432 "]"1055 EXPR@1486..1664
969 R_PAREN@1432..1433 ")"1056 EXPR_IF_THEN_ELSE@1486..1664
970 R_PAREN@1433..1434 ")"1057 IF_KW@1486..1488 "if"
971 COMMA@1434..1435 ","1058 WHITESPACE@1488..1489 " "
972 WHITESPACE@1435..1439 "\n\n "1059 EXPR@1489..1507
973 MEMBER_FIELD_METHOD@1439..17671060 EXPR_UNARY@1489..1507
974 FIELD_NAME_FIXED@1439..14491061 NOT@1489..1490 "!"
975 NAME@1439..14491062 EXPR_VAR@1490..1493
976 IDENT@1439..1449 "mapWithKey"1063 NAME@1490..1493
977 PARAMS_DESC@1449..14601064 IDENT@1490..1493 "std"
978 L_PAREN@1449..1450 "("1065 SUFFIX_INDEX@1493..1502
979 PARAM@1450..14541066 DOT@1493..1494 "."
980 DESTRUCT_FULL@1450..14541067 NAME@1494..1502
981 NAME@1450..14541068 IDENT@1494..1502 "isObject"
982 IDENT@1450..1454 "func"1069 SUFFIX_APPLY@1502..1507
983 COMMA@1454..1455 ","1070 ARGS_DESC@1502..1507
984 WHITESPACE@1455..1456 " "1071 L_PAREN@1502..1503 "("
985 PARAM@1456..14591072 ARG@1503..1506
986 DESTRUCT_FULL@1456..14591073 EXPR@1503..1506
987 NAME@1456..14591074 EXPR_VAR@1503..1506
988 IDENT@1456..1459 "obj"1075 NAME@1503..1506
989 R_PAREN@1459..1460 ")"1076 IDENT@1503..1506 "obj"
990 COLONCOLON@1460..1462 "::"1077 R_PAREN@1506..1507 ")"
991 WHITESPACE@1462..1467 "\n "1078 WHITESPACE@1507..1508 " "
992 EXPR_IF_THEN_ELSE@1467..17671079 THEN_KW@1508..1512 "then"
993 IF_KW@1467..1469 "if"1080 WHITESPACE@1512..1519 "\n "
994 WHITESPACE@1469..1470 " "1081 TRUE_EXPR@1519..1593
995 EXPR_UNARY@1470..14911082 EXPR@1519..1593
996 NOT@1470..1471 "!"1083 EXPR_ERROR@1519..1593
997 EXPR_APPLY@1471..14911084 ERROR_KW@1519..1524 "error"
998 EXPR_INDEX@1471..14851085 WHITESPACE@1524..1525 " "
999 EXPR_VAR@1471..14741086 EXPR@1525..1593
1000 NAME@1471..14741087 EXPR_PARENED@1525..1593
1001 IDENT@1471..1474 "std"1088 L_PAREN@1525..1526 "("
1002 DOT@1474..1475 "."1089 EXPR@1526..1592
1003 NAME@1475..14851090 EXPR_BINARY@1526..1592
1004 IDENT@1475..1485 "isFunction"1091 EXPR@1526..1576
1005 ARGS_DESC@1485..14911092 EXPR_STRING@1526..1576
1006 L_PAREN@1485..1486 "("1093 STRING_SINGLE@1526..1576 "'std.mapWithKey secon ..."
1007 ARG@1486..14901094 WHITESPACE@1576..1577 " "
1008 EXPR_VAR@1486..14901095 PLUS@1577..1578 "+"
1009 NAME@1486..14901096 WHITESPACE@1578..1579 " "
1010 IDENT@1486..1490 "func"1097 EXPR@1579..1592
1011 R_PAREN@1490..1491 ")"1098 EXPR_VAR@1579..1582
1012 WHITESPACE@1491..1492 " "1099 NAME@1579..1582
1013 THEN_KW@1492..1496 "then"1100 IDENT@1579..1582 "std"
1014 WHITESPACE@1496..1503 "\n "1101 SUFFIX_INDEX@1582..1587
1015 TRUE_EXPR@1503..15791102 DOT@1582..1583 "."
1016 EXPR_ERROR@1503..15791103 NAME@1583..1587
1017 ERROR_KW@1503..1508 "error"1104 IDENT@1583..1587 "type"
1018 WHITESPACE@1508..1509 " "1105 SUFFIX_APPLY@1587..1592
1019 EXPR_PARENED@1509..15791106 ARGS_DESC@1587..1592
1020 L_PAREN@1509..1510 "("1107 L_PAREN@1587..1588 "("
1021 EXPR_BINARY@1510..15781108 ARG@1588..1591
1022 LHS_EXPR@1510..15611109 EXPR@1588..1591
1023 EXPR_STRING@1510..15611110 EXPR_VAR@1588..1591
1024 STRING_SINGLE@1510..1561 "'std.mapWithKey first ..."1111 NAME@1588..1591
1025 WHITESPACE@1561..1562 " "1112 IDENT@1588..1591 "obj"
1026 PLUS@1562..1563 "+"1113 R_PAREN@1591..1592 ")"
1027 WHITESPACE@1563..1564 " "1114 R_PAREN@1592..1593 ")"
1028 EXPR_APPLY@1564..15781115 WHITESPACE@1593..1598 "\n "
1029 EXPR_INDEX@1564..15721116 ELSE_KW@1598..1602 "else"
1030 EXPR_VAR@1564..15671117 WHITESPACE@1602..1609 "\n "
1031 NAME@1564..15671118 FALSE_EXPR@1609..1664
1032 IDENT@1564..1567 "std"1119 EXPR@1609..1664
1033 DOT@1567..1568 "."1120 EXPR_OBJECT@1609..1664
1034 NAME@1568..15721121 OBJ_BODY_COMP@1609..1664
1035 IDENT@1568..1572 "type"1122 L_BRACE@1609..1610 "{"
1036 ARGS_DESC@1572..15781123 WHITESPACE@1610..1611 " "
1037 L_PAREN@1572..1573 "("1124 MEMBER_FIELD_NORMAL@1611..1631
1038 ARG@1573..15771125 FIELD_NAME_DYNAMIC@1611..1614
1039 EXPR_VAR@1573..15771126 L_BRACK@1611..1612 "["
1040 NAME@1573..15771127 EXPR@1612..1613
1041 IDENT@1573..1577 "func"1128 EXPR_VAR@1612..1613
1042 R_PAREN@1577..1578 ")"1129 NAME@1612..1613
1043 R_PAREN@1578..1579 ")"1130 IDENT@1612..1613 "k"
1044 WHITESPACE@1579..1584 "\n "1131 R_BRACK@1613..1614 "]"
1045 ELSE_KW@1584..1588 "else"1132 COLON@1614..1615 ":"
1046 WHITESPACE@1588..1589 " "1133 WHITESPACE@1615..1616 " "
1047 FALSE_EXPR@1589..17671134 EXPR@1616..1631
1048 EXPR_IF_THEN_ELSE@1589..17671135 EXPR_VAR@1616..1620
1049 IF_KW@1589..1591 "if"1136 NAME@1616..1620
1050 WHITESPACE@1591..1592 " "1137 IDENT@1616..1620 "func"
1051 EXPR_UNARY@1592..16101138 SUFFIX_APPLY@1620..1631
1052 NOT@1592..1593 "!"1139 ARGS_DESC@1620..1631
1053 EXPR_APPLY@1593..16101140 L_PAREN@1620..1621 "("
1054 EXPR_INDEX@1593..16051141 ARG@1621..1622
1055 EXPR_VAR@1593..15961142 EXPR@1621..1622
1056 NAME@1593..15961143 EXPR_VAR@1621..1622
1057 IDENT@1593..1596 "std"1144 NAME@1621..1622
1058 DOT@1596..1597 "."1145 IDENT@1621..1622 "k"
1059 NAME@1597..16051146 COMMA@1622..1623 ","
1060 IDENT@1597..1605 "isObject"1147 WHITESPACE@1623..1624 " "
1061 ARGS_DESC@1605..16101148 ARG@1624..1630
1062 L_PAREN@1605..1606 "("1149 EXPR@1624..1630
1063 ARG@1606..16091150 EXPR_VAR@1624..1627
1064 EXPR_VAR@1606..16091151 NAME@1624..1627
1065 NAME@1606..16091152 IDENT@1624..1627 "obj"
1066 IDENT@1606..1609 "obj"1153 SUFFIX_INDEX_EXPR@1627..1630
1067 R_PAREN@1609..1610 ")"1154 L_BRACK@1627..1628 "["
1068 WHITESPACE@1610..1611 " "1155 EXPR@1628..1629
1069 THEN_KW@1611..1615 "then"1156 EXPR_VAR@1628..1629
1070 WHITESPACE@1615..1622 "\n "1157 NAME@1628..1629
1071 TRUE_EXPR@1622..16961158 IDENT@1628..1629 "k"
1072 EXPR_ERROR@1622..16961159 R_BRACK@1629..1630 "]"
1073 ERROR_KW@1622..1627 "error"1160 R_PAREN@1630..1631 ")"
1074 WHITESPACE@1627..1628 " "1161 WHITESPACE@1631..1632 " "
1075 EXPR_PARENED@1628..16961162 FOR_SPEC@1632..1662
1076 L_PAREN@1628..1629 "("1163 FOR_KW@1632..1635 "for"
1077 EXPR_BINARY@1629..16951164 WHITESPACE@1635..1636 " "
1078 LHS_EXPR@1629..16791165 DESTRUCT_FULL@1636..1637
1079 EXPR_STRING@1629..16791166 NAME@1636..1637
1080 STRING_SINGLE@1629..1679 "'std.mapWithKey secon ..."1167 IDENT@1636..1637 "k"
1081 WHITESPACE@1679..1680 " "1168 WHITESPACE@1637..1638 " "
1082 PLUS@1680..1681 "+"1169 IN_KW@1638..1640 "in"
1083 WHITESPACE@1681..1682 " "1170 WHITESPACE@1640..1641 " "
1084 EXPR_APPLY@1682..16951171 EXPR@1641..1662
1085 EXPR_INDEX@1682..16901172 EXPR_VAR@1641..1644
1086 EXPR_VAR@1682..16851173 NAME@1641..1644
1087 NAME@1682..16851174 IDENT@1641..1644 "std"
1088 IDENT@1682..1685 "std"1175 SUFFIX_INDEX@1644..1657
1089 DOT@1685..1686 "."1176 DOT@1644..1645 "."
1090 NAME@1686..16901177 NAME@1645..1657
1091 IDENT@1686..1690 "type"1178 IDENT@1645..1657 "objectFields"
1092 ARGS_DESC@1690..16951179 SUFFIX_APPLY@1657..1662
1093 L_PAREN@1690..1691 "("1180 ARGS_DESC@1657..1662
1094 ARG@1691..16941181 L_PAREN@1657..1658 "("
1095 EXPR_VAR@1691..16941182 ARG@1658..1661
1096 NAME@1691..16941183 EXPR@1658..1661
1097 IDENT@1691..1694 "obj"1184 EXPR_VAR@1658..1661
1098 R_PAREN@1694..1695 ")"1185 NAME@1658..1661
1099 R_PAREN@1695..1696 ")"1186 IDENT@1658..1661 "obj"
1100 WHITESPACE@1696..1701 "\n "1187 R_PAREN@1661..1662 ")"
1101 ELSE_KW@1701..1705 "else"1188 WHITESPACE@1662..1663 " "
1102 WHITESPACE@1705..1712 "\n "1189 R_BRACE@1663..1664 "}"
1103 FALSE_EXPR@1712..17671190 COMMA@1664..1665 ","
1104 EXPR_OBJECT@1712..17671191 WHITESPACE@1665..1669 "\n\n "
1105 OBJ_BODY_COMP@1712..17671192 MEMBER_FIELD_METHOD@1669..1712
1106 L_BRACE@1712..1713 "{"1193 FIELD_NAME_FIXED@1669..1674
1107 WHITESPACE@1713..1714 " "1194 NAME@1669..1674
1108 MEMBER_FIELD_NORMAL@1714..17341195 IDENT@1669..1674 "lines"
1109 FIELD_NAME_DYNAMIC@1714..17171196 PARAMS_DESC@1674..1679
1110 L_BRACK@1714..1715 "["1197 L_PAREN@1674..1675 "("
1111 EXPR_VAR@1715..17161198 PARAM@1675..1678
1112 NAME@1715..17161199 DESTRUCT_FULL@1675..1678
1113 IDENT@1715..1716 "k"1200 NAME@1675..1678
1114 R_BRACK@1716..1717 "]"1201 IDENT@1675..1678 "arr"
1115 COLON@1717..1718 ":"1202 R_PAREN@1678..1679 ")"
1116 WHITESPACE@1718..1719 " "1203 COLONCOLON@1679..1681 "::"
1117 EXPR_APPLY@1719..17341204 WHITESPACE@1681..1686 "\n "
1118 EXPR_VAR@1719..17231205 EXPR@1686..1712
1119 NAME@1719..17231206 EXPR_VAR@1686..1689
1120 IDENT@1719..1723 "func"1207 NAME@1686..1689
1121 ARGS_DESC@1723..17341208 IDENT@1686..1689 "std"
1122 L_PAREN@1723..1724 "("1209 SUFFIX_INDEX@1689..1694
1123 ARG@1724..17251210 DOT@1689..1690 "."
1124 EXPR_VAR@1724..17251211 NAME@1690..1694
1125 NAME@1724..17251212 IDENT@1690..1694 "join"
1126 IDENT@1724..1725 "k"1213 SUFFIX_APPLY@1694..1712
1127 COMMA@1725..1726 ","1214 ARGS_DESC@1694..1712
1128 WHITESPACE@1726..1727 " "1215 L_PAREN@1694..1695 "("
1129 ARG@1727..17331216 ARG@1695..1699
1130 EXPR_INDEX_EXPR@1727..17331217 EXPR@1695..1699
1131 LHS_EXPR@1727..17301218 EXPR_STRING@1695..1699
1132 EXPR_VAR@1727..17301219 STRING_SINGLE@1695..1699 "'\\n'"
1133 NAME@1727..17301220 COMMA@1699..1700 ","
1134 IDENT@1727..1730 "obj"1221 WHITESPACE@1700..1701 " "
1135 L_BRACK@1730..1731 "["1222 ARG@1701..1711
1136 EXPR_VAR@1731..17321223 EXPR@1701..1711
1137 NAME@1731..17321224 EXPR_BINARY@1701..1711
1138 IDENT@1731..1732 "k"1225 EXPR@1701..1704
1139 R_BRACK@1732..1733 "]"1226 EXPR_VAR@1701..1704
1140 R_PAREN@1733..1734 ")"1227 NAME@1701..1704
1141 WHITESPACE@1734..1735 " "1228 IDENT@1701..1704 "arr"
1142 FOR_SPEC@1735..17651229 WHITESPACE@1704..1705 " "
1143 FOR_KW@1735..1738 "for"1230 PLUS@1705..1706 "+"
1144 WHITESPACE@1738..1739 " "1231 WHITESPACE@1706..1707 " "
1145 NAME@1739..17401232 EXPR@1707..1711
1146 IDENT@1739..1740 "k"1233 EXPR_ARRAY@1707..1711
1147 WHITESPACE@1740..1741 " "1234 L_BRACK@1707..1708 "["
1148 IN_KW@1741..1743 "in"1235 EXPR@1708..1710
1149 WHITESPACE@1743..1744 " "1236 EXPR_STRING@1708..1710
1150 EXPR_APPLY@1744..17651237 STRING_SINGLE@1708..1710 "''"
1151 EXPR_INDEX@1744..17601238 R_BRACK@1710..1711 "]"
1152 EXPR_VAR@1744..17471239 R_PAREN@1711..1712 ")"
1153 NAME@1744..17471240 COMMA@1712..1713 ","
1154 IDENT@1744..1747 "std"1241 WHITESPACE@1713..1717 "\n\n "
1155 DOT@1747..1748 "."1242 MEMBER_FIELD_METHOD@1717..1929
1156 NAME@1748..17601243 FIELD_NAME_FIXED@1717..1725
1157 IDENT@1748..1760 "objectFields"1244 NAME@1717..1725
1158 ARGS_DESC@1760..17651245 IDENT@1717..1725 "deepJoin"
1159 L_PAREN@1760..1761 "("1246 PARAMS_DESC@1725..1730
1160 ARG@1761..17641247 L_PAREN@1725..1726 "("
1161 EXPR_VAR@1761..17641248 PARAM@1726..1729
1162 NAME@1761..17641249 DESTRUCT_FULL@1726..1729
1163 IDENT@1761..1764 "obj"1250 NAME@1726..1729
1164 R_PAREN@1764..1765 ")"1251 IDENT@1726..1729 "arr"
1165 WHITESPACE@1765..1766 " "1252 R_PAREN@1729..1730 ")"
1166 R_BRACE@1766..1767 "}"1253 COLONCOLON@1730..1732 "::"
1167 COMMA@1767..1768 ","1254 WHITESPACE@1732..1737 "\n "
1168 WHITESPACE@1768..1772 "\n\n "1255 EXPR@1737..1929
1169 MEMBER_FIELD_METHOD@1772..18151256 EXPR_IF_THEN_ELSE@1737..1929
1170 FIELD_NAME_FIXED@1772..17771257 IF_KW@1737..1739 "if"
1171 NAME@1772..17771258 WHITESPACE@1739..1740 " "
1172 IDENT@1772..1777 "lines"1259 EXPR@1740..1757
1173 PARAMS_DESC@1777..17821260 EXPR_VAR@1740..1743
1174 L_PAREN@1777..1778 "("1261 NAME@1740..1743
1175 PARAM@1778..17811262 IDENT@1740..1743 "std"
1176 DESTRUCT_FULL@1778..17811263 SUFFIX_INDEX@1743..1752
1177 NAME@1778..17811264 DOT@1743..1744 "."
1178 IDENT@1778..1781 "arr"1265 NAME@1744..1752
1179 R_PAREN@1781..1782 ")"1266 IDENT@1744..1752 "isString"
1180 COLONCOLON@1782..1784 "::"1267 SUFFIX_APPLY@1752..1757
1181 WHITESPACE@1784..1789 "\n "1268 ARGS_DESC@1752..1757
1182 EXPR_APPLY@1789..18151269 L_PAREN@1752..1753 "("
1183 EXPR_INDEX@1789..17971270 ARG@1753..1756
1184 EXPR_VAR@1789..17921271 EXPR@1753..1756
1185 NAME@1789..17921272 EXPR_VAR@1753..1756
1186 IDENT@1789..1792 "std"1273 NAME@1753..1756
1187 DOT@1792..1793 "."1274 IDENT@1753..1756 "arr"
1188 NAME@1793..17971275 R_PAREN@1756..1757 ")"
1189 IDENT@1793..1797 "join"1276 WHITESPACE@1757..1758 " "
1190 ARGS_DESC@1797..18151277 THEN_KW@1758..1762 "then"
1191 L_PAREN@1797..1798 "("1278 WHITESPACE@1762..1769 "\n "
1192 ARG@1798..18021279 TRUE_EXPR@1769..1772
1193 EXPR_STRING@1798..18021280 EXPR@1769..1772
1194 STRING_SINGLE@1798..1802 "'\\n'"1281 EXPR_VAR@1769..1772
1195 COMMA@1802..1803 ","1282 NAME@1769..1772
1196 WHITESPACE@1803..1804 " "1283 IDENT@1769..1772 "arr"
1197 ARG@1804..18141284 WHITESPACE@1772..1777 "\n "
1198 EXPR_BINARY@1804..18141285 ELSE_KW@1777..1781 "else"
1199 LHS_EXPR@1804..18071286 WHITESPACE@1781..1782 " "
1200 EXPR_VAR@1804..18071287 FALSE_EXPR@1782..1929
1201 NAME@1804..18071288 EXPR@1782..1929
1202 IDENT@1804..1807 "arr"1289 EXPR_IF_THEN_ELSE@1782..1929
1203 WHITESPACE@1807..1808 " "1290 IF_KW@1782..1784 "if"
1204 PLUS@1808..1809 "+"1291 WHITESPACE@1784..1785 " "
1205 WHITESPACE@1809..1810 " "1292 EXPR@1785..1801
1206 EXPR_ARRAY@1810..18141293 EXPR_VAR@1785..1788
1207 L_BRACK@1810..1811 "["1294 NAME@1785..1788
1208 EXPR_STRING@1811..18131295 IDENT@1785..1788 "std"
1209 STRING_SINGLE@1811..1813 "''"1296 SUFFIX_INDEX@1788..1796
1210 R_BRACK@1813..1814 "]"1297 DOT@1788..1789 "."
1211 R_PAREN@1814..1815 ")"1298 NAME@1789..1796
1212 COMMA@1815..1816 ","1299 IDENT@1789..1796 "isArray"
1213 WHITESPACE@1816..1820 "\n\n "1300 SUFFIX_APPLY@1796..1801
1214 MEMBER_FIELD_METHOD@1820..20321301 ARGS_DESC@1796..1801
1215 FIELD_NAME_FIXED@1820..18281302 L_PAREN@1796..1797 "("
1216 NAME@1820..18281303 ARG@1797..1800
1217 IDENT@1820..1828 "deepJoin"1304 EXPR@1797..1800
1218 PARAMS_DESC@1828..18331305 EXPR_VAR@1797..1800
1219 L_PAREN@1828..1829 "("1306 NAME@1797..1800
1220 PARAM@1829..18321307 IDENT@1797..1800 "arr"
1221 DESTRUCT_FULL@1829..18321308 R_PAREN@1800..1801 ")"
1222 NAME@1829..18321309 WHITESPACE@1801..1802 " "
1223 IDENT@1829..1832 "arr"1310 THEN_KW@1802..1806 "then"
1224 R_PAREN@1832..1833 ")"1311 WHITESPACE@1806..1813 "\n "
1225 COLONCOLON@1833..1835 "::"1312 TRUE_EXPR@1813..1857
1226 WHITESPACE@1835..1840 "\n "1313 EXPR@1813..1857
1227 EXPR_IF_THEN_ELSE@1840..20321314 EXPR_VAR@1813..1816
1228 IF_KW@1840..1842 "if"1315 NAME@1813..1816
1229 WHITESPACE@1842..1843 " "1316 IDENT@1813..1816 "std"
1230 EXPR_APPLY@1843..18601317 SUFFIX_INDEX@1816..1821
1231 EXPR_INDEX@1843..18551318 DOT@1816..1817 "."
1232 EXPR_VAR@1843..18461319 NAME@1817..1821
1233 NAME@1843..18461320 IDENT@1817..1821 "join"
1234 IDENT@1843..1846 "std"1321 SUFFIX_APPLY@1821..1857
1235 DOT@1846..1847 "."1322 ARGS_DESC@1821..1857
1236 NAME@1847..18551323 L_PAREN@1821..1822 "("
1237 IDENT@1847..1855 "isString"1324 ARG@1822..1824
1238 ARGS_DESC@1855..18601325 EXPR@1822..1824
1239 L_PAREN@1855..1856 "("1326 EXPR_STRING@1822..1824
1240 ARG@1856..18591327 STRING_SINGLE@1822..1824 "''"
1241 EXPR_VAR@1856..18591328 COMMA@1824..1825 ","
1242 NAME@1856..18591329 WHITESPACE@1825..1826 " "
1243 IDENT@1856..1859 "arr"1330 ARG@1826..1856
1244 R_PAREN@1859..1860 ")"1331 EXPR@1826..1856
1245 WHITESPACE@1860..1861 " "1332 EXPR_ARRAY_COMP@1826..1856
1246 THEN_KW@1861..1865 "then"1333 L_BRACK@1826..1827 "["
1247 WHITESPACE@1865..1872 "\n "1334 EXPR@1827..1842
1248 TRUE_EXPR@1872..18751335 EXPR_VAR@1827..1830
1249 EXPR_VAR@1872..18751336 NAME@1827..1830
1250 NAME@1872..18751337 IDENT@1827..1830 "std"
1251 IDENT@1872..1875 "arr"1338 SUFFIX_INDEX@1830..1839
1252 WHITESPACE@1875..1880 "\n "1339 DOT@1830..1831 "."
1253 ELSE_KW@1880..1884 "else"1340 NAME@1831..1839
1254 WHITESPACE@1884..1885 " "1341 IDENT@1831..1839 "deepJoin"
1255 FALSE_EXPR@1885..20321342 SUFFIX_APPLY@1839..1842
1256 EXPR_IF_THEN_ELSE@1885..20321343 ARGS_DESC@1839..1842
1257 IF_KW@1885..1887 "if"1344 L_PAREN@1839..1840 "("
1258 WHITESPACE@1887..1888 " "1345 ARG@1840..1841
1259 EXPR_APPLY@1888..19041346 EXPR@1840..1841
1260 EXPR_INDEX@1888..18991347 EXPR_VAR@1840..1841
1261 EXPR_VAR@1888..18911348 NAME@1840..1841
1262 NAME@1888..18911349 IDENT@1840..1841 "x"
1263 IDENT@1888..1891 "std"1350 R_PAREN@1841..1842 ")"
1264 DOT@1891..1892 "."1351 WHITESPACE@1842..1843 " "
1265 NAME@1892..18991352 FOR_SPEC@1843..1855
1266 IDENT@1892..1899 "isArray"1353 FOR_KW@1843..1846 "for"
1267 ARGS_DESC@1899..19041354 WHITESPACE@1846..1847 " "
1268 L_PAREN@1899..1900 "("1355 DESTRUCT_FULL@1847..1848
1269 ARG@1900..19031356 NAME@1847..1848
1270 EXPR_VAR@1900..19031357 IDENT@1847..1848 "x"
1271 NAME@1900..19031358 WHITESPACE@1848..1849 " "
1272 IDENT@1900..1903 "arr"1359 IN_KW@1849..1851 "in"
1273 R_PAREN@1903..1904 ")"1360 WHITESPACE@1851..1852 " "
1274 WHITESPACE@1904..1905 " "1361 EXPR@1852..1855
1275 THEN_KW@1905..1909 "then"1362 EXPR_VAR@1852..1855
1276 WHITESPACE@1909..1916 "\n "1363 NAME@1852..1855
1277 TRUE_EXPR@1916..19601364 IDENT@1852..1855 "arr"
1278 EXPR_APPLY@1916..19601365 R_BRACK@1855..1856 "]"
1279 EXPR_INDEX@1916..19241366 R_PAREN@1856..1857 ")"
1280 EXPR_VAR@1916..19191367 WHITESPACE@1857..1862 "\n "
1281 NAME@1916..19191368 ELSE_KW@1862..1866 "else"
1282 IDENT@1916..1919 "std"1369 WHITESPACE@1866..1873 "\n "
1283 DOT@1919..1920 "."1370 FALSE_EXPR@1873..1929
1284 NAME@1920..19241371 EXPR@1873..1929
1285 IDENT@1920..1924 "join"1372 EXPR_ERROR@1873..1929
1286 ARGS_DESC@1924..19601373 ERROR_KW@1873..1878 "error"
1287 L_PAREN@1924..1925 "("1374 WHITESPACE@1878..1879 " "
1288 ARG@1925..19271375 EXPR@1879..1929
1289 EXPR_STRING@1925..19271376 EXPR_BINARY@1879..1929
1290 STRING_SINGLE@1925..1927 "''"1377 EXPR@1879..1913
1291 COMMA@1927..1928 ","1378 EXPR_STRING@1879..1913
1292 WHITESPACE@1928..1929 " "1379 STRING_SINGLE@1879..1913 "'Expected string or a ..."
1293 ARG@1929..19591380 WHITESPACE@1913..1914 " "
1294 EXPR_ARRAY_COMP@1929..19591381 MODULO@1914..1915 "%"
1295 L_BRACK@1929..1930 "["1382 WHITESPACE@1915..1916 " "
1296 EXPR_APPLY@1930..19451383 EXPR@1916..1929
1297 EXPR_INDEX@1930..19421384 EXPR_VAR@1916..1919
1298 EXPR_VAR@1930..19331385 NAME@1916..1919
1299 NAME@1930..19331386 IDENT@1916..1919 "std"
1300 IDENT@1930..1933 "std"1387 SUFFIX_INDEX@1919..1924
1301 DOT@1933..1934 "."1388 DOT@1919..1920 "."
1302 NAME@1934..19421389 NAME@1920..1924
1303 IDENT@1934..1942 "deepJoin"1390 IDENT@1920..1924 "type"
1304 ARGS_DESC@1942..19451391 SUFFIX_APPLY@1924..1929
1305 L_PAREN@1942..1943 "("1392 ARGS_DESC@1924..1929
1306 ARG@1943..19441393 L_PAREN@1924..1925 "("
1307 EXPR_VAR@1943..19441394 ARG@1925..1928
1308 NAME@1943..19441395 EXPR@1925..1928
1309 IDENT@1943..1944 "x"1396 EXPR_VAR@1925..1928
1310 R_PAREN@1944..1945 ")"1397 NAME@1925..1928
1311 WHITESPACE@1945..1946 " "1398 IDENT@1925..1928 "arr"
1312 FOR_SPEC@1946..19581399 R_PAREN@1928..1929 ")"
1313 FOR_KW@1946..1949 "for"1400 COMMA@1929..1930 ","
1314 WHITESPACE@1949..1950 " "1401 WHITESPACE@1930..1934 "\n\n "
1315 NAME@1950..19511402 MEMBER_FIELD_METHOD@1934..2042
1316 IDENT@1950..1951 "x"1403 FIELD_NAME_FIXED@1934..1945
1317 WHITESPACE@1951..1952 " "1404 NAME@1934..1945
1318 IN_KW@1952..1954 "in"1405 IDENT@1934..1945 "assertEqual"
1319 WHITESPACE@1954..1955 " "1406 PARAMS_DESC@1945..1951
1320 EXPR_VAR@1955..19581407 L_PAREN@1945..1946 "("
1321 NAME@1955..19581408 PARAM@1946..1947
1322 IDENT@1955..1958 "arr"1409 DESTRUCT_FULL@1946..1947
1323 R_BRACK@1958..1959 "]"1410 NAME@1946..1947
1324 R_PAREN@1959..1960 ")"1411 IDENT@1946..1947 "a"
1325 WHITESPACE@1960..1965 "\n "1412 COMMA@1947..1948 ","
1326 ELSE_KW@1965..1969 "else"1413 WHITESPACE@1948..1949 " "
1327 WHITESPACE@1969..1976 "\n "1414 PARAM@1949..1950
1328 FALSE_EXPR@1976..20321415 DESTRUCT_FULL@1949..1950
1329 EXPR_ERROR@1976..20321416 NAME@1949..1950
1330 ERROR_KW@1976..1981 "error"1417 IDENT@1949..1950 "b"
1331 WHITESPACE@1981..1982 " "1418 R_PAREN@1950..1951 ")"
1332 EXPR_BINARY@1982..20321419 COLONCOLON@1951..1953 "::"
1333 LHS_EXPR@1982..20161420 WHITESPACE@1953..1958 "\n "
1334 EXPR_STRING@1982..20161421 EXPR@1958..2042
1335 STRING_SINGLE@1982..2016 "'Expected string or a ..."1422 EXPR_IF_THEN_ELSE@1958..2042
1336 WHITESPACE@2016..2017 " "1423 IF_KW@1958..1960 "if"
1337 MODULO@2017..2018 "%"1424 WHITESPACE@1960..1961 " "
1338 WHITESPACE@2018..2019 " "1425 EXPR@1961..1967
1339 EXPR_APPLY@2019..20321426 EXPR_BINARY@1961..1967
1340 EXPR_INDEX@2019..20271427 EXPR@1961..1962
1341 EXPR_VAR@2019..20221428 EXPR_VAR@1961..1962
1342 NAME@2019..20221429 NAME@1961..1962
1343 IDENT@2019..2022 "std"1430 IDENT@1961..1962 "a"
1344 DOT@2022..2023 "."1431 WHITESPACE@1962..1963 " "
1345 NAME@2023..20271432 EQ@1963..1965 "=="
1346 IDENT@2023..2027 "type"1433 WHITESPACE@1965..1966 " "
1347 ARGS_DESC@2027..20321434 EXPR@1966..1967
1348 L_PAREN@2027..2028 "("1435 EXPR_VAR@1966..1967
1349 ARG@2028..20311436 NAME@1966..1967
1350 EXPR_VAR@2028..20311437 IDENT@1966..1967 "b"
1351 NAME@2028..20311438 WHITESPACE@1967..1968 " "
1352 IDENT@2028..2031 "arr"1439 THEN_KW@1968..1972 "then"
1353 R_PAREN@2031..2032 ")"1440 WHITESPACE@1972..1979 "\n "
1354 COMMA@2032..2033 ","1441 TRUE_EXPR@1979..1983
1355 WHITESPACE@2033..2037 "\n\n "1442 EXPR@1979..1983
1356 MEMBER_FIELD_METHOD@2037..25121443 EXPR_LITERAL@1979..1983
1357 FIELD_NAME_FIXED@2037..20461444 TRUE_KW@1979..1983 "true"
1358 NAME@2037..20461445 WHITESPACE@1983..1988 "\n "
1359 IDENT@2037..2046 "filterMap"1446 ELSE_KW@1988..1992 "else"
1360 PARAMS_DESC@2046..20741447 WHITESPACE@1992..1999 "\n "
1361 L_PAREN@2046..2047 "("1448 FALSE_EXPR@1999..2042
1362 PARAM@2047..20581449 EXPR@1999..2042
1363 DESTRUCT_FULL@2047..20581450 EXPR_ERROR@1999..2042
1364 NAME@2047..20581451 ERROR_KW@1999..2004 "error"
1365 IDENT@2047..2058 "filter_func"1452 WHITESPACE@2004..2005 " "
1366 COMMA@2058..2059 ","1453 EXPR@2005..2042
1367 WHITESPACE@2059..2060 " "1454 EXPR_BINARY@2005..2042
1368 PARAM@2060..20681455 EXPR@2005..2038
1369 DESTRUCT_FULL@2060..20681456 EXPR_BINARY@2005..2038
1370 NAME@2060..20681457 EXPR@2005..2029
1371 IDENT@2060..2068 "map_func"1458 EXPR_BINARY@2005..2029
1372 COMMA@2068..2069 ","1459 EXPR@2005..2025
1373 WHITESPACE@2069..2070 " "1460 EXPR_STRING@2005..2025
1374 PARAM@2070..20731461 STRING_SINGLE@2005..2025 "'Assertion failed. '"
1375 DESTRUCT_FULL@2070..20731462 WHITESPACE@2025..2026 " "
1376 NAME@2070..20731463 PLUS@2026..2027 "+"
1377 IDENT@2070..2073 "arr"1464 WHITESPACE@2027..2028 " "
1378 R_PAREN@2073..2074 ")"1465 EXPR@2028..2029
1379 COLONCOLON@2074..2076 "::"1466 EXPR_VAR@2028..2029
1380 WHITESPACE@2076..2081 "\n "1467 NAME@2028..2029
1381 EXPR_IF_THEN_ELSE@2081..25121468 IDENT@2028..2029 "a"
1382 IF_KW@2081..2083 "if"1469 WHITESPACE@2029..2030 " "
1383 WHITESPACE@2083..2084 " "1470 PLUS@2030..2031 "+"
1384 EXPR_UNARY@2084..21121471 WHITESPACE@2031..2032 " "
1385 NOT@2084..2085 "!"1472 EXPR@2032..2038
1386 EXPR_APPLY@2085..21121473 EXPR_STRING@2032..2038
1387 EXPR_INDEX@2085..20991474 STRING_SINGLE@2032..2038 "' != '"
1388 EXPR_VAR@2085..20881475 WHITESPACE@2038..2039 " "
1389 NAME@2085..20881476 PLUS@2039..2040 "+"
1390 IDENT@2085..2088 "std"1477 WHITESPACE@2040..2041 " "
1391 DOT@2088..2089 "."1478 EXPR@2041..2042
1392 NAME@2089..20991479 EXPR_VAR@2041..2042
1393 IDENT@2089..2099 "isFunction"1480 NAME@2041..2042
1394 ARGS_DESC@2099..21121481 IDENT@2041..2042 "b"
1395 L_PAREN@2099..2100 "("1482 COMMA@2042..2043 ","
1396 ARG@2100..21111483 WHITESPACE@2043..2047 "\n\n "
1397 EXPR_VAR@2100..21111484 MEMBER_FIELD_METHOD@2047..2149
1398 NAME@2100..21111485 FIELD_NAME_FIXED@2047..2052
1399 IDENT@2100..2111 "filter_func"1486 NAME@2047..2052
1400 R_PAREN@2111..2112 ")"1487 IDENT@2047..2052 "clamp"
1401 WHITESPACE@2112..2113 " "1488 PARAMS_DESC@2052..2071
1402 THEN_KW@2113..2117 "then"1489 L_PAREN@2052..2053 "("
1403 WHITESPACE@2117..2124 "\n "1490 PARAM@2053..2054
1404 TRUE_EXPR@2124..22061491 DESTRUCT_FULL@2053..2054
1405 EXPR_ERROR@2124..22061492 NAME@2053..2054
1406 ERROR_KW@2124..2129 "error"1493 IDENT@2053..2054 "x"
1407 WHITESPACE@2129..2130 " "1494 COMMA@2054..2055 ","
1408 EXPR_PARENED@2130..22061495 WHITESPACE@2055..2056 " "
1409 L_PAREN@2130..2131 "("1496 PARAM@2056..2062
1410 EXPR_BINARY@2131..22051497 DESTRUCT_FULL@2056..2062
1411 LHS_EXPR@2131..21811498 NAME@2056..2062
1412 EXPR_STRING@2131..21811499 IDENT@2056..2062 "minVal"
1413 STRING_SINGLE@2131..2181 "'std.filterMap first ..."1500 COMMA@2062..2063 ","
1414 WHITESPACE@2181..2182 " "1501 WHITESPACE@2063..2064 " "
1415 PLUS@2182..2183 "+"1502 PARAM@2064..2070
1416 WHITESPACE@2183..2184 " "1503 DESTRUCT_FULL@2064..2070
1417 EXPR_APPLY@2184..22051504 NAME@2064..2070
1418 EXPR_INDEX@2184..21921505 IDENT@2064..2070 "maxVal"
1419 EXPR_VAR@2184..21871506 R_PAREN@2070..2071 ")"
1420 NAME@2184..21871507 COLONCOLON@2071..2073 "::"
1421 IDENT@2184..2187 "std"1508 WHITESPACE@2073..2078 "\n "
1422 DOT@2187..2188 "."1509 EXPR@2078..2149
1423 NAME@2188..21921510 EXPR_IF_THEN_ELSE@2078..2149
1424 IDENT@2188..2192 "type"1511 IF_KW@2078..2080 "if"
1425 ARGS_DESC@2192..22051512 WHITESPACE@2080..2081 " "
1426 L_PAREN@2192..2193 "("1513 EXPR@2081..2091
1427 ARG@2193..22041514 EXPR_BINARY@2081..2091
1428 EXPR_VAR@2193..22041515 EXPR@2081..2082
1429 NAME@2193..22041516 EXPR_VAR@2081..2082
1430 IDENT@2193..2204 "filter_func"1517 NAME@2081..2082
1431 R_PAREN@2204..2205 ")"1518 IDENT@2081..2082 "x"
1432 R_PAREN@2205..2206 ")"1519 WHITESPACE@2082..2083 " "
1433 WHITESPACE@2206..2211 "\n "1520 LT@2083..2084 "<"
1434 ELSE_KW@2211..2215 "else"1521 WHITESPACE@2084..2085 " "
1435 WHITESPACE@2215..2216 " "1522 EXPR@2085..2091
1436 FALSE_EXPR@2216..25121523 EXPR_VAR@2085..2091
1437 EXPR_IF_THEN_ELSE@2216..25121524 NAME@2085..2091
1438 IF_KW@2216..2218 "if"1525 IDENT@2085..2091 "minVal"
1439 WHITESPACE@2218..2219 " "1526 WHITESPACE@2091..2092 " "
1440 EXPR_UNARY@2219..22441527 THEN_KW@2092..2096 "then"
1441 NOT@2219..2220 "!"1528 WHITESPACE@2096..2097 " "
1442 EXPR_APPLY@2220..22441529 TRUE_EXPR@2097..2103
1443 EXPR_INDEX@2220..22341530 EXPR@2097..2103
1444 EXPR_VAR@2220..22231531 EXPR_VAR@2097..2103
1445 NAME@2220..22231532 NAME@2097..2103
1446 IDENT@2220..2223 "std"1533 IDENT@2097..2103 "minVal"
1447 DOT@2223..2224 "."1534 WHITESPACE@2103..2108 "\n "
1448 NAME@2224..22341535 ELSE_KW@2108..2112 "else"
1449 IDENT@2224..2234 "isFunction"1536 WHITESPACE@2112..2113 " "
1450 ARGS_DESC@2234..22441537 FALSE_EXPR@2113..2149
1451 L_PAREN@2234..2235 "("1538 EXPR@2113..2149
1452 ARG@2235..22431539 EXPR_IF_THEN_ELSE@2113..2149
1453 EXPR_VAR@2235..22431540 IF_KW@2113..2115 "if"
1454 NAME@2235..22431541 WHITESPACE@2115..2116 " "
1455 IDENT@2235..2243 "map_func"1542 EXPR@2116..2126
1456 R_PAREN@2243..2244 ")"1543 EXPR_BINARY@2116..2126
1457 WHITESPACE@2244..2245 " "1544 EXPR@2116..2117
1458 THEN_KW@2245..2249 "then"1545 EXPR_VAR@2116..2117
1459 WHITESPACE@2249..2256 "\n "1546 NAME@2116..2117
1460 TRUE_EXPR@2256..23361547 IDENT@2116..2117 "x"
1461 EXPR_ERROR@2256..23361548 WHITESPACE@2117..2118 " "
1462 ERROR_KW@2256..2261 "error"1549 GT@2118..2119 ">"
1463 WHITESPACE@2261..2262 " "1550 WHITESPACE@2119..2120 " "
1464 EXPR_PARENED@2262..23361551 EXPR@2120..2126
1465 L_PAREN@2262..2263 "("1552 EXPR_VAR@2120..2126
1466 EXPR_BINARY@2263..23351553 NAME@2120..2126
1467 LHS_EXPR@2263..23141554 IDENT@2120..2126 "maxVal"
1468 EXPR_STRING@2263..23141555 WHITESPACE@2126..2127 " "
1469 STRING_SINGLE@2263..2314 "'std.filterMap second ..."1556 THEN_KW@2127..2131 "then"
1470 WHITESPACE@2314..2315 " "1557 WHITESPACE@2131..2132 " "
1471 PLUS@2315..2316 "+"1558 TRUE_EXPR@2132..2138
1472 WHITESPACE@2316..2317 " "1559 EXPR@2132..2138
1473 EXPR_APPLY@2317..23351560 EXPR_VAR@2132..2138
1474 EXPR_INDEX@2317..23251561 NAME@2132..2138
1475 EXPR_VAR@2317..23201562 IDENT@2132..2138 "maxVal"
1476 NAME@2317..23201563 WHITESPACE@2138..2143 "\n "
1477 IDENT@2317..2320 "std"1564 ELSE_KW@2143..2147 "else"
1478 DOT@2320..2321 "."1565 WHITESPACE@2147..2148 " "
1479 NAME@2321..23251566 FALSE_EXPR@2148..2149
1480 IDENT@2321..2325 "type"1567 EXPR@2148..2149
1481 ARGS_DESC@2325..23351568 EXPR_VAR@2148..2149
1482 L_PAREN@2325..2326 "("1569 NAME@2148..2149
1483 ARG@2326..23341570 IDENT@2148..2149 "x"
1484 EXPR_VAR@2326..23341571 COMMA@2149..2150 ","
1485 NAME@2326..23341572 WHITESPACE@2150..2154 "\n\n "
1486 IDENT@2326..2334 "map_func"1573 MEMBER_FIELD_METHOD@2154..2840
1487 R_PAREN@2334..2335 ")"1574 FIELD_NAME_FIXED@2154..2165
1488 R_PAREN@2335..2336 ")"1575 NAME@2154..2165
1489 WHITESPACE@2336..2341 "\n "1576 IDENT@2154..2165 "manifestIni"
1490 ELSE_KW@2341..2345 "else"1577 PARAMS_DESC@2165..2170
1491 WHITESPACE@2345..2346 " "1578 L_PAREN@2165..2166 "("
1492 FALSE_EXPR@2346..25121579 PARAM@2166..2169
1493 EXPR_IF_THEN_ELSE@2346..25121580 DESTRUCT_FULL@2166..2169
1494 IF_KW@2346..2348 "if"1581 NAME@2166..2169
1495 WHITESPACE@2348..2349 " "1582 IDENT@2166..2169 "ini"
1496 EXPR_UNARY@2349..23661583 R_PAREN@2169..2170 ")"
1497 NOT@2349..2350 "!"1584 COLONCOLON@2170..2172 "::"
1498 EXPR_APPLY@2350..23661585 WHITESPACE@2172..2177 "\n "
1499 EXPR_INDEX@2350..23611586 EXPR@2177..2840
1500 EXPR_VAR@2350..23531587 STMT_LOCAL@2177..2481
1501 NAME@2350..23531588 LOCAL_KW@2177..2182 "local"
1502 IDENT@2350..2353 "std"1589 WHITESPACE@2182..2183 " "
1503 DOT@2353..2354 "."1590 BIND_FUNCTION@2183..2480
1504 NAME@2354..23611591 NAME@2183..2193
1505 IDENT@2354..2361 "isArray"1592 IDENT@2183..2193 "body_lines"
1506 ARGS_DESC@2361..23661593 PARAMS_DESC@2193..2199
1507 L_PAREN@2361..2362 "("1594 L_PAREN@2193..2194 "("
1508 ARG@2362..23651595 PARAM@2194..2198
1509 EXPR_VAR@2362..23651596 DESTRUCT_FULL@2194..2198
1510 NAME@2362..23651597 NAME@2194..2198
1511 IDENT@2362..2365 "arr"1598 IDENT@2194..2198 "body"
1512 R_PAREN@2365..2366 ")"1599 R_PAREN@2198..2199 ")"
1513 WHITESPACE@2366..2367 " "1600 WHITESPACE@2199..2200 " "
1514 THEN_KW@2367..2371 "then"1601 ASSIGN@2200..2201 "="
1515 WHITESPACE@2371..2378 "\n "1602 WHITESPACE@2201..2208 "\n "
1516 TRUE_EXPR@2378..24491603 EXPR@2208..2480
1517 EXPR_ERROR@2378..24491604 EXPR_VAR@2208..2211
1518 ERROR_KW@2378..2383 "error"1605 NAME@2208..2211
1519 WHITESPACE@2383..2384 " "1606 IDENT@2208..2211 "std"
1520 EXPR_PARENED@2384..24491607 SUFFIX_INDEX@2211..2216
1521 L_PAREN@2384..2385 "("1608 DOT@2211..2212 "."
1522 EXPR_BINARY@2385..24481609 NAME@2212..2216
1523 LHS_EXPR@2385..24321610 IDENT@2212..2216 "join"
1524 EXPR_STRING@2385..24321611 SUFFIX_APPLY@2216..2480
1525 STRING_SINGLE@2385..2432 "'std.filterMap third ..."1612 ARGS_DESC@2216..2480
1526 WHITESPACE@2432..2433 " "1613 L_PAREN@2216..2217 "("
1527 PLUS@2433..2434 "+"1614 ARG@2217..2219
1528 WHITESPACE@2434..2435 " "1615 EXPR@2217..2219
1529 EXPR_APPLY@2435..24481616 EXPR_ARRAY@2217..2219
1530 EXPR_INDEX@2435..24431617 L_BRACK@2217..2218 "["
1531 EXPR_VAR@2435..24381618 R_BRACK@2218..2219 "]"
1532 NAME@2435..24381619 COMMA@2219..2220 ","
1533 IDENT@2435..2438 "std"1620 WHITESPACE@2220..2221 " "
1534 DOT@2438..2439 "."1621 ARG@2221..2479
1535 NAME@2439..24431622 EXPR@2221..2479
1536 IDENT@2439..2443 "type"1623 EXPR_ARRAY_COMP@2221..2479
1537 ARGS_DESC@2443..24481624 L_BRACK@2221..2222 "["
1538 L_PAREN@2443..2444 "("1625 WHITESPACE@2222..2231 "\n "
1539 ARG@2444..24471626 EXPR@2231..2430
1540 EXPR_VAR@2444..24471627 STMT_LOCAL@2231..2263
1541 NAME@2444..24471628 LOCAL_KW@2231..2236 "local"
1542 IDENT@2444..2447 "arr"1629 WHITESPACE@2236..2237 " "
1543 R_PAREN@2447..2448 ")"1630 BIND_DESTRUCT@2237..2262
1544 R_PAREN@2448..2449 ")"1631 DESTRUCT_FULL@2237..2252
1545 WHITESPACE@2449..2454 "\n "1632 NAME@2237..2252
1546 ELSE_KW@2454..2458 "else"1633 IDENT@2237..2252 "value_or_values"
1547 WHITESPACE@2458..2465 "\n "1634 WHITESPACE@2252..2253 " "
1548 FALSE_EXPR@2465..25121635 ASSIGN@2253..2254 "="
1549 EXPR_APPLY@2465..25121636 WHITESPACE@2254..2255 " "
1550 EXPR_INDEX@2465..24721637 EXPR@2255..2262
1551 EXPR_VAR@2465..24681638 EXPR_VAR@2255..2259
1552 NAME@2465..24681639 NAME@2255..2259
1553 IDENT@2465..2468 "std"1640 IDENT@2255..2259 "body"
1554 DOT@2468..2469 "."1641 SUFFIX_INDEX_EXPR@2259..2262
1555 NAME@2469..24721642 L_BRACK@2259..2260 "["
1556 IDENT@2469..2472 "map"1643 EXPR@2260..2261
1557 ARGS_DESC@2472..25121644 EXPR_VAR@2260..2261
1558 L_PAREN@2472..2473 "("1645 NAME@2260..2261
1559 ARG@2473..24811646 IDENT@2260..2261 "k"
1560 EXPR_VAR@2473..24811647 R_BRACK@2261..2262 "]"
1561 NAME@2473..24811648 SEMI@2262..2263 ";"
1562 IDENT@2473..2481 "map_func"1649 WHITESPACE@2263..2272 "\n "
1563 COMMA@2481..2482 ","1650 EXPR_IF_THEN_ELSE@2272..2430
1564 WHITESPACE@2482..2483 " "1651 IF_KW@2272..2274 "if"
1565 ARG@2483..25111652 WHITESPACE@2274..2275 " "
1566 EXPR_APPLY@2483..25111653 EXPR@2275..2303
1567 EXPR_INDEX@2483..24931654 EXPR_VAR@2275..2278
1568 EXPR_VAR@2483..24861655 NAME@2275..2278
1569 NAME@2483..24861656 IDENT@2275..2278 "std"
1570 IDENT@2483..2486 "std"1657 SUFFIX_INDEX@2278..2286
1571 DOT@2486..2487 "."1658 DOT@2278..2279 "."
1572 NAME@2487..24931659 NAME@2279..2286
1573 IDENT@2487..2493 "filter"1660 IDENT@2279..2286 "isArray"
1574 ARGS_DESC@2493..25111661 SUFFIX_APPLY@2286..2303
1575 L_PAREN@2493..2494 "("1662 ARGS_DESC@2286..2303
1576 ARG@2494..25051663 L_PAREN@2286..2287 "("
1577 EXPR_VAR@2494..25051664 ARG@2287..2302
1578 NAME@2494..25051665 EXPR@2287..2302
1579 IDENT@2494..2505 "filter_func"1666 EXPR_VAR@2287..2302
1580 COMMA@2505..2506 ","1667 NAME@2287..2302
1581 WHITESPACE@2506..2507 " "1668 IDENT@2287..2302 "value_or_values"
1582 ARG@2507..25101669 R_PAREN@2302..2303 ")"
1583 EXPR_VAR@2507..25101670 WHITESPACE@2303..2304 " "
1584 NAME@2507..25101671 THEN_KW@2304..2308 "then"
1585 IDENT@2507..2510 "arr"1672 WHITESPACE@2308..2319 "\n "
1586 R_PAREN@2510..2511 ")"1673 TRUE_EXPR@2319..2372
1587 R_PAREN@2511..2512 ")"1674 EXPR@2319..2372
1588 COMMA@2512..2513 ","1675 EXPR_ARRAY_COMP@2319..2372
1589 WHITESPACE@2513..2517 "\n\n "1676 L_BRACK@2319..2320 "["
1590 MEMBER_FIELD_METHOD@2517..26251677 EXPR@2320..2342
1591 FIELD_NAME_FIXED@2517..25281678 EXPR_BINARY@2320..2342
1592 NAME@2517..25281679 EXPR@2320..2329
1593 IDENT@2517..2528 "assertEqual"1680 EXPR_STRING@2320..2329
1594 PARAMS_DESC@2528..25341681 STRING_SINGLE@2320..2329 "'%s = %s'"
1595 L_PAREN@2528..2529 "("1682 WHITESPACE@2329..2330 " "
1596 PARAM@2529..25301683 MODULO@2330..2331 "%"
1597 DESTRUCT_FULL@2529..25301684 WHITESPACE@2331..2332 " "
1598 NAME@2529..25301685 EXPR@2332..2342
1599 IDENT@2529..2530 "a"1686 EXPR_ARRAY@2332..2342
1600 COMMA@2530..2531 ","1687 L_BRACK@2332..2333 "["
1601 WHITESPACE@2531..2532 " "1688 EXPR@2333..2334
1602 PARAM@2532..25331689 EXPR_VAR@2333..2334
1603 DESTRUCT_FULL@2532..25331690 NAME@2333..2334
1604 NAME@2532..25331691 IDENT@2333..2334 "k"
1605 IDENT@2532..2533 "b"1692 COMMA@2334..2335 ","
1606 R_PAREN@2533..2534 ")"1693 WHITESPACE@2335..2336 " "
1607 COLONCOLON@2534..2536 "::"1694 EXPR@2336..2341
1608 WHITESPACE@2536..2541 "\n "1695 EXPR_VAR@2336..2341
1609 EXPR_IF_THEN_ELSE@2541..26251696 NAME@2336..2341
1610 IF_KW@2541..2543 "if"1697 IDENT@2336..2341 "value"
1611 WHITESPACE@2543..2544 " "1698 R_BRACK@2341..2342 "]"
1612 EXPR_BINARY@2544..25501699 WHITESPACE@2342..2343 " "
1613 LHS_EXPR@2544..25451700 FOR_SPEC@2343..2371
1614 EXPR_VAR@2544..25451701 FOR_KW@2343..2346 "for"
1615 NAME@2544..25451702 WHITESPACE@2346..2347 " "
1616 IDENT@2544..2545 "a"1703 DESTRUCT_FULL@2347..2352
1617 WHITESPACE@2545..2546 " "1704 NAME@2347..2352
1618 EQ@2546..2548 "=="1705 IDENT@2347..2352 "value"
1619 WHITESPACE@2548..2549 " "1706 WHITESPACE@2352..2353 " "
1620 EXPR_VAR@2549..25501707 IN_KW@2353..2355 "in"
1621 NAME@2549..25501708 WHITESPACE@2355..2356 " "
1622 IDENT@2549..2550 "b"1709 EXPR@2356..2371
1623 WHITESPACE@2550..2551 " "1710 EXPR_VAR@2356..2371
1624 THEN_KW@2551..2555 "then"1711 NAME@2356..2371
1625 WHITESPACE@2555..2562 "\n "1712 IDENT@2356..2371 "value_or_values"
1626 TRUE_EXPR@2562..25661713 R_BRACK@2371..2372 "]"
1627 EXPR_LITERAL@2562..25661714 WHITESPACE@2372..2381 "\n "
1628 TRUE_KW@2562..2566 "true"1715 ELSE_KW@2381..2385 "else"
1629 WHITESPACE@2566..2571 "\n "1716 WHITESPACE@2385..2396 "\n "
1630 ELSE_KW@2571..2575 "else"1717 FALSE_EXPR@2396..2430
1631 WHITESPACE@2575..2582 "\n "1718 EXPR@2396..2430
1632 FALSE_EXPR@2582..26251719 EXPR_ARRAY@2396..2430
1633 EXPR_ERROR@2582..26251720 L_BRACK@2396..2397 "["
1634 ERROR_KW@2582..2587 "error"1721 EXPR@2397..2429
1635 WHITESPACE@2587..2588 " "1722 EXPR_BINARY@2397..2429
1636 EXPR_BINARY@2588..26251723 EXPR@2397..2406
1637 LHS_EXPR@2588..26211724 EXPR_STRING@2397..2406
1638 EXPR_BINARY@2588..26211725 STRING_SINGLE@2397..2406 "'%s = %s'"
1639 LHS_EXPR@2588..26121726 WHITESPACE@2406..2407 " "
1640 EXPR_BINARY@2588..26121727 MODULO@2407..2408 "%"
1641 LHS_EXPR@2588..26081728 WHITESPACE@2408..2409 " "
1642 EXPR_STRING@2588..26081729 EXPR@2409..2429
1643 STRING_SINGLE@2588..2608 "'Assertion failed. '"1730 EXPR_ARRAY@2409..2429
1644 WHITESPACE@2608..2609 " "1731 L_BRACK@2409..2410 "["
1645 PLUS@2609..2610 "+"1732 EXPR@2410..2411
1646 WHITESPACE@2610..2611 " "1733 EXPR_VAR@2410..2411
1647 EXPR_VAR@2611..26121734 NAME@2410..2411
1648 NAME@2611..26121735 IDENT@2410..2411 "k"
1649 IDENT@2611..2612 "a"1736 COMMA@2411..2412 ","
1650 WHITESPACE@2612..2613 " "1737 WHITESPACE@2412..2413 " "
1651 PLUS@2613..2614 "+"1738 EXPR@2413..2428
1739 EXPR_VAR@2413..2428
1740 NAME@2413..2428
1741 IDENT@2413..2428 "value_or_values"
1742 R_BRACK@2428..2429 "]"
1743 R_BRACK@2429..2430 "]"
1744 WHITESPACE@2430..2440 "\n\n "
1745 FOR_SPEC@2440..2471
1746 FOR_KW@2440..2443 "for"
1747 WHITESPACE@2443..2444 " "
1748 DESTRUCT_FULL@2444..2445
1749 NAME@2444..2445
1750 IDENT@2444..2445 "k"
1751 WHITESPACE@2445..2446 " "
1752 IN_KW@2446..2448 "in"
1753 WHITESPACE@2448..2449 " "
1754 EXPR@2449..2471
1755 EXPR_VAR@2449..2452
1756 NAME@2449..2452
1757 IDENT@2449..2452 "std"
1758 SUFFIX_INDEX@2452..2465
1759 DOT@2452..2453 "."
1760 NAME@2453..2465
1761 IDENT@2453..2465 "objectFields"
1762 SUFFIX_APPLY@2465..2471
1763 ARGS_DESC@2465..2471
1764 L_PAREN@2465..2466 "("
1765 ARG@2466..2470
1766 EXPR@2466..2470
1767 EXPR_VAR@2466..2470
1768 NAME@2466..2470
1769 IDENT@2466..2470 "body"
1770 R_PAREN@2470..2471 ")"
1771 WHITESPACE@2471..2478 "\n "
1772 R_BRACK@2478..2479 "]"
1773 R_PAREN@2479..2480 ")"
1774 SEMI@2480..2481 ";"
1775 WHITESPACE@2481..2487 "\n\n "
1776 STMT_LOCAL@2487..2769
1777 LOCAL_KW@2487..2492 "local"
1778 WHITESPACE@2492..2493 " "
1779 BIND_FUNCTION@2493..2561
1780 NAME@2493..2506
1781 IDENT@2493..2506 "section_lines"
1782 PARAMS_DESC@2506..2520
1783 L_PAREN@2506..2507 "("
1784 PARAM@2507..2512
1785 DESTRUCT_FULL@2507..2512
1786 NAME@2507..2512
1787 IDENT@2507..2512 "sname"
1788 COMMA@2512..2513 ","
1789 WHITESPACE@2513..2514 " "
1790 PARAM@2514..2519
1791 DESTRUCT_FULL@2514..2519
1792 NAME@2514..2519
1793 IDENT@2514..2519 "sbody"
1794 R_PAREN@2519..2520 ")"
1795 WHITESPACE@2520..2521 " "
1796 ASSIGN@2521..2522 "="
1797 WHITESPACE@2522..2523 " "
1798 EXPR@2523..2561
1799 EXPR_BINARY@2523..2561
1800 EXPR@2523..2541
1801 EXPR_ARRAY@2523..2541
1802 L_BRACK@2523..2524 "["
1803 EXPR@2524..2540
1804 EXPR_BINARY@2524..2540
1805 EXPR@2524..2530
1806 EXPR_STRING@2524..2530
1807 STRING_SINGLE@2524..2530 "'[%s]'"
1808 WHITESPACE@2530..2531 " "
1809 MODULO@2531..2532 "%"
1810 WHITESPACE@2532..2533 " "
1811 EXPR@2533..2540
1812 EXPR_ARRAY@2533..2540
1813 L_BRACK@2533..2534 "["
1814 EXPR@2534..2539
1815 EXPR_VAR@2534..2539
1816 NAME@2534..2539
1817 IDENT@2534..2539 "sname"
1818 R_BRACK@2539..2540 "]"
1819 R_BRACK@2540..2541 "]"
1820 WHITESPACE@2541..2542 " "
1821 PLUS@2542..2543 "+"
1822 WHITESPACE@2543..2544 " "
1823 EXPR@2544..2561
1824 EXPR_VAR@2544..2554
1825 NAME@2544..2554
1826 IDENT@2544..2554 "body_lines"
1827 SUFFIX_APPLY@2554..2561
1828 ARGS_DESC@2554..2561
1829 L_PAREN@2554..2555 "("
1830 ARG@2555..2560
1831 EXPR@2555..2560
1832 EXPR_VAR@2555..2560
1833 NAME@2555..2560
1834 IDENT@2555..2560 "sbody"
1835 R_PAREN@2560..2561 ")"
1836 COMMA@2561..2562 ","
1837 WHITESPACE@2562..2573 "\n "
1838 BIND_DESTRUCT@2573..2648
1839 DESTRUCT_FULL@2573..2582
1840 NAME@2573..2582
1841 IDENT@2573..2582 "main_body"
1842 WHITESPACE@2582..2583 " "
1843 ASSIGN@2583..2584 "="
1844 WHITESPACE@2584..2585 " "
1845 EXPR@2585..2648
1846 EXPR_IF_THEN_ELSE@2585..2648
1847 IF_KW@2585..2587 "if"
1848 WHITESPACE@2587..2588 " "
1849 EXPR@2588..2614
1850 EXPR_VAR@2588..2591
1851 NAME@2588..2591
1852 IDENT@2588..2591 "std"
1853 SUFFIX_INDEX@2591..2601
1854 DOT@2591..2592 "."
1855 NAME@2592..2601
1856 IDENT@2592..2601 "objectHas"
1857 SUFFIX_APPLY@2601..2614
1858 ARGS_DESC@2601..2614
1859 L_PAREN@2601..2602 "("
1860 ARG@2602..2605
1861 EXPR@2602..2605
1862 EXPR_VAR@2602..2605
1863 NAME@2602..2605
1864 IDENT@2602..2605 "ini"
1865 COMMA@2605..2606 ","
1866 WHITESPACE@2606..2607 " "
1867 ARG@2607..2613
1868 EXPR@2607..2613
1869 EXPR_STRING@2607..2613
1870 STRING_SINGLE@2607..2613 "'main'"
1871 R_PAREN@2613..2614 ")"
1652 WHITESPACE@2614..2615 " "1872 WHITESPACE@2614..2615 " "
1653 EXPR_STRING@2615..26211873 THEN_KW@2615..2619 "then"
1654 STRING_SINGLE@2615..2621 "' != '"1874 WHITESPACE@2619..2620 " "
1655 WHITESPACE@2621..2622 " "1875 TRUE_EXPR@2620..2640
1656 PLUS@2622..2623 "+"1876 EXPR@2620..2640
1657 WHITESPACE@2623..2624 " "1877 EXPR_VAR@2620..2630
1658 EXPR_VAR@2624..26251878 NAME@2620..2630
1659 NAME@2624..26251879 IDENT@2620..2630 "body_lines"
1660 IDENT@2624..2625 "b"1880 SUFFIX_APPLY@2630..2640
1661 COMMA@2625..2626 ","1881 ARGS_DESC@2630..2640
1662 WHITESPACE@2626..2630 "\n\n "1882 L_PAREN@2630..2631 "("
1663 MEMBER_FIELD_METHOD@2630..27321883 ARG@2631..2639
1664 FIELD_NAME_FIXED@2630..26351884 EXPR@2631..2639
1665 NAME@2630..26351885 EXPR_VAR@2631..2634
1666 IDENT@2630..2635 "clamp"1886 NAME@2631..2634
1667 PARAMS_DESC@2635..26541887 IDENT@2631..2634 "ini"
1668 L_PAREN@2635..2636 "("1888 SUFFIX_INDEX@2634..2639
1669 PARAM@2636..26371889 DOT@2634..2635 "."
1670 DESTRUCT_FULL@2636..26371890 NAME@2635..2639
1671 NAME@2636..26371891 IDENT@2635..2639 "main"
1672 IDENT@2636..2637 "x"1892 R_PAREN@2639..2640 ")"
1673 COMMA@2637..2638 ","1893 WHITESPACE@2640..2641 " "
1674 WHITESPACE@2638..2639 " "1894 ELSE_KW@2641..2645 "else"
1675 PARAM@2639..26451895 WHITESPACE@2645..2646 " "
1676 DESTRUCT_FULL@2639..26451896 FALSE_EXPR@2646..2648
1677 NAME@2639..26451897 EXPR@2646..2648
1678 IDENT@2639..2645 "minVal"1898 EXPR_ARRAY@2646..2648
1679 COMMA@2645..2646 ","1899 L_BRACK@2646..2647 "["
1680 WHITESPACE@2646..2647 " "1900 R_BRACK@2647..2648 "]"
1681 PARAM@2647..26531901 COMMA@2648..2649 ","
1682 DESTRUCT_FULL@2647..26531902 WHITESPACE@2649..2660 "\n "
1683 NAME@2647..26531903 BIND_DESTRUCT@2660..2768
1684 IDENT@2647..2653 "maxVal"1904 DESTRUCT_FULL@2660..2672
1685 R_PAREN@2653..2654 ")"1905 NAME@2660..2672
1686 COLONCOLON@2654..2656 "::"1906 IDENT@2660..2672 "all_sections"
1687 WHITESPACE@2656..2661 "\n "1907 WHITESPACE@2672..2673 " "
1688 EXPR_IF_THEN_ELSE@2661..27321908 ASSIGN@2673..2674 "="
1689 IF_KW@2661..2663 "if"1909 WHITESPACE@2674..2675 " "
1690 WHITESPACE@2663..2664 " "1910 EXPR@2675..2768
1691 EXPR_BINARY@2664..26741911 EXPR_ARRAY_COMP@2675..2768
1692 LHS_EXPR@2664..26651912 L_BRACK@2675..2676 "["
1693 EXPR_VAR@2664..26651913 WHITESPACE@2676..2683 "\n "
1694 NAME@2664..26651914 EXPR@2683..2716
1695 IDENT@2664..2665 "x"1915 EXPR_VAR@2683..2696
1696 WHITESPACE@2665..2666 " "1916 NAME@2683..2696
1697 LT@2666..2667 "<"1917 IDENT@2683..2696 "section_lines"
1698 WHITESPACE@2667..2668 " "1918 SUFFIX_APPLY@2696..2716
1699 EXPR_VAR@2668..26741919 ARGS_DESC@2696..2716
1700 NAME@2668..26741920 L_PAREN@2696..2697 "("
1701 IDENT@2668..2674 "minVal"1921 ARG@2697..2698
1702 WHITESPACE@2674..2675 " "1922 EXPR@2697..2698
1703 THEN_KW@2675..2679 "then"1923 EXPR_VAR@2697..2698
1704 WHITESPACE@2679..2680 " "1924 NAME@2697..2698
1705 TRUE_EXPR@2680..26861925 IDENT@2697..2698 "k"
1706 EXPR_VAR@2680..26861926 COMMA@2698..2699 ","
1707 NAME@2680..26861927 WHITESPACE@2699..2700 " "
1708 IDENT@2680..2686 "minVal"1928 ARG@2700..2715
1709 WHITESPACE@2686..2691 "\n "1929 EXPR@2700..2715
1710 ELSE_KW@2691..2695 "else"1930 EXPR_VAR@2700..2703
1711 WHITESPACE@2695..2696 " "1931 NAME@2700..2703
1712 FALSE_EXPR@2696..27321932 IDENT@2700..2703 "ini"
1713 EXPR_IF_THEN_ELSE@2696..27321933 SUFFIX_INDEX@2703..2712
1714 IF_KW@2696..2698 "if"1934 DOT@2703..2704 "."
1715 WHITESPACE@2698..2699 " "1935 NAME@2704..2712
1716 EXPR_BINARY@2699..27091936 IDENT@2704..2712 "sections"
1717 LHS_EXPR@2699..27001937 SUFFIX_INDEX_EXPR@2712..2715
1718 EXPR_VAR@2699..27001938 L_BRACK@2712..2713 "["
1719 NAME@2699..27001939 EXPR@2713..2714
1720 IDENT@2699..2700 "x"1940 EXPR_VAR@2713..2714
1721 WHITESPACE@2700..2701 " "1941 NAME@2713..2714
1722 GT@2701..2702 ">"1942 IDENT@2713..2714 "k"
1723 WHITESPACE@2702..2703 " "1943 R_BRACK@2714..2715 "]"
1724 EXPR_VAR@2703..27091944 R_PAREN@2715..2716 ")"
1725 NAME@2703..27091945 WHITESPACE@2716..2723 "\n "
1726 IDENT@2703..2709 "maxVal"1946 FOR_SPEC@2723..2762
1727 WHITESPACE@2709..2710 " "1947 FOR_KW@2723..2726 "for"
1728 THEN_KW@2710..2714 "then"1948 WHITESPACE@2726..2727 " "
1729 WHITESPACE@2714..2715 " "1949 DESTRUCT_FULL@2727..2728
1730 TRUE_EXPR@2715..27211950 NAME@2727..2728
1731 EXPR_VAR@2715..27211951 IDENT@2727..2728 "k"
1732 NAME@2715..27211952 WHITESPACE@2728..2729 " "
1733 IDENT@2715..2721 "maxVal"1953 IN_KW@2729..2731 "in"
1734 WHITESPACE@2721..2726 "\n "1954 WHITESPACE@2731..2732 " "
1735 ELSE_KW@2726..2730 "else"1955 EXPR@2732..2762
1736 WHITESPACE@2730..2731 " "1956 EXPR_VAR@2732..2735
1737 FALSE_EXPR@2731..27321957 NAME@2732..2735
1738 EXPR_VAR@2731..27321958 IDENT@2732..2735 "std"
1739 NAME@2731..27321959 SUFFIX_INDEX@2735..2748
1740 IDENT@2731..2732 "x"1960 DOT@2735..2736 "."
1741 COMMA@2732..2733 ","1961 NAME@2736..2748
1742 WHITESPACE@2733..2737 "\n\n "1962 IDENT@2736..2748 "objectFields"
1743 MEMBER_FIELD_METHOD@2737..28041963 SUFFIX_APPLY@2748..2762
1744 FIELD_NAME_FIXED@2737..27501964 ARGS_DESC@2748..2762
1745 NAME@2737..27501965 L_PAREN@2748..2749 "("
1746 IDENT@2737..2750 "flattenArrays"1966 ARG@2749..2761
1747 PARAMS_DESC@2750..27561967 EXPR@2749..2761
1748 L_PAREN@2750..2751 "("1968 EXPR_VAR@2749..2752
1749 PARAM@2751..27551969 NAME@2749..2752
1750 DESTRUCT_FULL@2751..27551970 IDENT@2749..2752 "ini"
1751 NAME@2751..27551971 SUFFIX_INDEX@2752..2761
1752 IDENT@2751..2755 "arrs"1972 DOT@2752..2753 "."
1753 R_PAREN@2755..2756 ")"1973 NAME@2753..2761
1754 COLONCOLON@2756..2758 "::"1974 IDENT@2753..2761 "sections"
1755 WHITESPACE@2758..2763 "\n "1975 R_PAREN@2761..2762 ")"
1756 EXPR_APPLY@2763..28041976 WHITESPACE@2762..2767 "\n "
1757 EXPR_INDEX@2763..27721977 R_BRACK@2767..2768 "]"
1758 EXPR_VAR@2763..27661978 SEMI@2768..2769 ";"
1759 NAME@2763..27661979 WHITESPACE@2769..2774 "\n "
1760 IDENT@2763..2766 "std"1980 EXPR_VAR@2774..2777
1761 DOT@2766..2767 "."1981 NAME@2774..2777
1762 NAME@2767..27721982 IDENT@2774..2777 "std"
1763 IDENT@2767..2772 "foldl"1983 SUFFIX_INDEX@2777..2782
1764 ARGS_DESC@2772..28041984 DOT@2777..2778 "."
1765 L_PAREN@2772..2773 "("1985 NAME@2778..2782
1766 ARG@2773..27931986 IDENT@2778..2782 "join"
1767 EXPR_FUNCTION@2773..27931987 SUFFIX_APPLY@2782..2840
1768 FUNCTION_KW@2773..2781 "function"1988 ARGS_DESC@2782..2840
1769 PARAMS_DESC@2781..27871989 L_PAREN@2782..2783 "("
1770 L_PAREN@2781..2782 "("1990 ARG@2783..2787
1771 PARAM@2782..27831991 EXPR@2783..2787
1772 DESTRUCT_FULL@2782..27831992 EXPR_STRING@2783..2787
1773 NAME@2782..27831993 STRING_SINGLE@2783..2787 "'\\n'"
1774 IDENT@2782..2783 "a"1994 COMMA@2787..2788 ","
1775 COMMA@2783..2784 ","1995 WHITESPACE@2788..2789 " "
1776 WHITESPACE@2784..2785 " "1996 ARG@2789..2839
1777 PARAM@2785..27861997 EXPR@2789..2839
1778 DESTRUCT_FULL@2785..27861998 EXPR_BINARY@2789..2839
1779 NAME@2785..27861999 EXPR@2789..2832
1780 IDENT@2785..2786 "b"2000 EXPR_BINARY@2789..2832
1781 R_PAREN@2786..2787 ")"2001 EXPR@2789..2798
1782 WHITESPACE@2787..2788 " "2002 EXPR_VAR@2789..2798
1783 EXPR_BINARY@2788..27932003 NAME@2789..2798
1784 LHS_EXPR@2788..27892004 IDENT@2789..2798 "main_body"
1785 EXPR_VAR@2788..27892005 WHITESPACE@2798..2799 " "
1786 NAME@2788..27892006 PLUS@2799..2800 "+"
1787 IDENT@2788..2789 "a"2007 WHITESPACE@2800..2801 " "
1788 WHITESPACE@2789..2790 " "2008 EXPR@2801..2832
1789 PLUS@2790..2791 "+"2009 EXPR_VAR@2801..2804
1790 WHITESPACE@2791..2792 " "2010 NAME@2801..2804
1791 EXPR_VAR@2792..27932011 IDENT@2801..2804 "std"
1792 NAME@2792..27932012 SUFFIX_INDEX@2804..2818
1793 IDENT@2792..2793 "b"2013 DOT@2804..2805 "."
1794 COMMA@2793..2794 ","2014 NAME@2805..2818
1795 WHITESPACE@2794..2795 " "2015 IDENT@2805..2818 "flattenArrays"
1796 ARG@2795..27992016 SUFFIX_APPLY@2818..2832
1797 EXPR_VAR@2795..27992017 ARGS_DESC@2818..2832
1798 NAME@2795..27992018 L_PAREN@2818..2819 "("
1799 IDENT@2795..2799 "arrs"2019 ARG@2819..2831
1800 COMMA@2799..2800 ","2020 EXPR@2819..2831
1801 WHITESPACE@2800..2801 " "2021 EXPR_VAR@2819..2831
1802 ARG@2801..28032022 NAME@2819..2831
1803 EXPR_ARRAY@2801..28032023 IDENT@2819..2831 "all_sections"
1804 L_BRACK@2801..2802 "["2024 R_PAREN@2831..2832 ")"
1805 R_BRACK@2802..2803 "]"2025 WHITESPACE@2832..2833 " "
1806 R_PAREN@2803..2804 ")"2026 PLUS@2833..2834 "+"
1807 COMMA@2804..2805 ","2027 WHITESPACE@2834..2835 " "
1808 WHITESPACE@2805..2809 "\n\n "2028 EXPR@2835..2839
1809 MEMBER_FIELD_METHOD@2809..34952029 EXPR_ARRAY@2835..2839
1810 FIELD_NAME_FIXED@2809..28202030 L_BRACK@2835..2836 "["
1811 NAME@2809..28202031 EXPR@2836..2838
1812 IDENT@2809..2820 "manifestIni"2032 EXPR_STRING@2836..2838
1813 PARAMS_DESC@2820..28252033 STRING_SINGLE@2836..2838 "''"
1814 L_PAREN@2820..2821 "("2034 R_BRACK@2838..2839 "]"
1815 PARAM@2821..28242035 R_PAREN@2839..2840 ")"
1816 DESTRUCT_FULL@2821..28242036 COMMA@2840..2841 ","
1817 NAME@2821..28242037 WHITESPACE@2841..2845 "\n\n "
1818 IDENT@2821..2824 "ini"2038 MEMBER_FIELD_METHOD@2845..2898
1819 R_PAREN@2824..2825 ")"2039 FIELD_NAME_FIXED@2845..2857
1820 COLONCOLON@2825..2827 "::"2040 NAME@2845..2857
1821 WHITESPACE@2827..2832 "\n "2041 IDENT@2845..2857 "manifestToml"
1822 STMT_LOCAL@2832..31362042 PARAMS_DESC@2857..2864
1823 LOCAL_KW@2832..2837 "local"2043 L_PAREN@2857..2858 "("
1824 WHITESPACE@2837..2838 " "2044 PARAM@2858..2863
1825 BIND_FUNCTION@2838..31352045 DESTRUCT_FULL@2858..2863
1826 NAME@2838..28482046 NAME@2858..2863
1827 IDENT@2838..2848 "body_lines"2047 IDENT@2858..2863 "value"
1828 PARAMS_DESC@2848..28542048 R_PAREN@2863..2864 ")"
1829 L_PAREN@2848..2849 "("2049 COLONCOLON@2864..2866 "::"
1830 PARAM@2849..28532050 WHITESPACE@2866..2867 " "
1831 DESTRUCT_FULL@2849..28532051 EXPR@2867..2898
1832 NAME@2849..28532052 EXPR_VAR@2867..2870
1833 IDENT@2849..2853 "body"2053 NAME@2867..2870
1834 R_PAREN@2853..2854 ")"2054 IDENT@2867..2870 "std"
1835 WHITESPACE@2854..2855 " "2055 SUFFIX_INDEX@2870..2885
1836 ASSIGN@2855..2856 "="2056 DOT@2870..2871 "."
1837 WHITESPACE@2856..2863 "\n "2057 NAME@2871..2885
1838 EXPR_APPLY@2863..31352058 IDENT@2871..2885 "manifestTomlEx"
1839 EXPR_INDEX@2863..28712059 SUFFIX_APPLY@2885..2898
1840 EXPR_VAR@2863..28662060 ARGS_DESC@2885..2898
1841 NAME@2863..28662061 L_PAREN@2885..2886 "("
1842 IDENT@2863..2866 "std"2062 ARG@2886..2891
1843 DOT@2866..2867 "."2063 EXPR@2886..2891
1844 NAME@2867..28712064 EXPR_VAR@2886..2891
1845 IDENT@2867..2871 "join"2065 NAME@2886..2891
1846 ARGS_DESC@2871..31352066 IDENT@2886..2891 "value"
1847 L_PAREN@2871..2872 "("2067 COMMA@2891..2892 ","
1848 ARG@2872..28742068 WHITESPACE@2892..2893 " "
1849 EXPR_ARRAY@2872..28742069 ARG@2893..2897
1850 L_BRACK@2872..2873 "["2070 EXPR@2893..2897
1851 R_BRACK@2873..2874 "]"2071 EXPR_STRING@2893..2897
1852 COMMA@2874..2875 ","2072 STRING_SINGLE@2893..2897 "' '"
1853 WHITESPACE@2875..2876 " "2073 R_PAREN@2897..2898 ")"
1854 ARG@2876..31342074 COMMA@2898..2899 ","
1855 EXPR_ARRAY_COMP@2876..31342075 WHITESPACE@2899..2903 "\n\n "
1856 L_BRACK@2876..2877 "["2076 MEMBER_FIELD_METHOD@2903..2958
1857 WHITESPACE@2877..2886 "\n "2077 FIELD_NAME_FIXED@2903..2921
1858 STMT_LOCAL@2886..29182078 NAME@2903..2921
1859 LOCAL_KW@2886..2891 "local"2079 IDENT@2903..2921 "escapeStringPython"
1860 WHITESPACE@2891..2892 " "2080 PARAMS_DESC@2921..2926
1861 BIND_DESTRUCT@2892..29172081 L_PAREN@2921..2922 "("
1862 DESTRUCT_FULL@2892..29072082 PARAM@2922..2925
1863 NAME@2892..29072083 DESTRUCT_FULL@2922..2925
1864 IDENT@2892..2907 "value_or_values"2084 NAME@2922..2925
1865 WHITESPACE@2907..2908 " "2085 IDENT@2922..2925 "str"
1866 ASSIGN@2908..2909 "="2086 R_PAREN@2925..2926 ")"
1867 WHITESPACE@2909..2910 " "2087 COLONCOLON@2926..2928 "::"
1868 EXPR_INDEX_EXPR@2910..29172088 WHITESPACE@2928..2933 "\n "
1869 LHS_EXPR@2910..29142089 EXPR@2933..2958
1870 EXPR_VAR@2910..29142090 EXPR_VAR@2933..2936
1871 NAME@2910..29142091 NAME@2933..2936
1872 IDENT@2910..2914 "body"2092 IDENT@2933..2936 "std"
1873 L_BRACK@2914..2915 "["2093 SUFFIX_INDEX@2936..2953
1874 EXPR_VAR@2915..29162094 DOT@2936..2937 "."
1875 NAME@2915..29162095 NAME@2937..2953
1876 IDENT@2915..2916 "k"2096 IDENT@2937..2953 "escapeStringJson"
1877 R_BRACK@2916..2917 "]"2097 SUFFIX_APPLY@2953..2958
1878 SEMI@2917..2918 ";"2098 ARGS_DESC@2953..2958
1879 WHITESPACE@2918..2927 "\n "2099 L_PAREN@2953..2954 "("
1880 EXPR_IF_THEN_ELSE@2927..30852100 ARG@2954..2957
1881 IF_KW@2927..2929 "if"2101 EXPR@2954..2957
1882 WHITESPACE@2929..2930 " "2102 EXPR_VAR@2954..2957
1883 EXPR_APPLY@2930..29582103 NAME@2954..2957
1884 EXPR_INDEX@2930..29412104 IDENT@2954..2957 "str"
1885 EXPR_VAR@2930..29332105 R_PAREN@2957..2958 ")"
1886 NAME@2930..29332106 COMMA@2958..2959 ","
1887 IDENT@2930..2933 "std"2107 WHITESPACE@2959..2963 "\n\n "
1888 DOT@2933..2934 "."2108 MEMBER_FIELD_METHOD@2963..3180
1889 NAME@2934..29412109 FIELD_NAME_FIXED@2963..2979
1890 IDENT@2934..2941 "isArray"2110 NAME@2963..2979
1891 ARGS_DESC@2941..29582111 IDENT@2963..2979 "escapeStringBash"
1892 L_PAREN@2941..2942 "("2112 PARAMS_DESC@2979..2985
1893 ARG@2942..29572113 L_PAREN@2979..2980 "("
1894 EXPR_VAR@2942..29572114 PARAM@2980..2984
1895 NAME@2942..29572115 DESTRUCT_FULL@2980..2984
1896 IDENT@2942..2957 "value_or_values"2116 NAME@2980..2984
1897 R_PAREN@2957..2958 ")"2117 IDENT@2980..2984 "str_"
1898 WHITESPACE@2958..2959 " "2118 R_PAREN@2984..2985 ")"
1899 THEN_KW@2959..2963 "then"2119 COLONCOLON@2985..2987 "::"
1900 WHITESPACE@2963..2974 "\n "2120 WHITESPACE@2987..2992 "\n "
1901 TRUE_EXPR@2974..30272121 EXPR@2992..3180
1902 EXPR_ARRAY_COMP@2974..30272122 STMT_LOCAL@2992..3023
1903 L_BRACK@2974..2975 "["2123 LOCAL_KW@2992..2997 "local"
1904 EXPR_BINARY@2975..29972124 WHITESPACE@2997..2998 " "
1905 LHS_EXPR@2975..29842125 BIND_DESTRUCT@2998..3022
1906 EXPR_STRING@2975..29842126 DESTRUCT_FULL@2998..3001
1907 STRING_SINGLE@2975..2984 "'%s = %s'"2127 NAME@2998..3001
1908 WHITESPACE@2984..2985 " "2128 IDENT@2998..3001 "str"
1909 MODULO@2985..2986 "%"2129 WHITESPACE@3001..3002 " "
1910 WHITESPACE@2986..2987 " "2130 ASSIGN@3002..3003 "="
1911 EXPR_ARRAY@2987..29972131 WHITESPACE@3003..3004 " "
1912 L_BRACK@2987..2988 "["2132 EXPR@3004..3022
1913 EXPR_VAR@2988..29892133 EXPR_VAR@3004..3007
1914 NAME@2988..29892134 NAME@3004..3007
1915 IDENT@2988..2989 "k"2135 IDENT@3004..3007 "std"
1916 COMMA@2989..2990 ","2136 SUFFIX_INDEX@3007..3016
1917 WHITESPACE@2990..2991 " "2137 DOT@3007..3008 "."
1918 EXPR_VAR@2991..29962138 NAME@3008..3016
1919 NAME@2991..29962139 IDENT@3008..3016 "toString"
1920 IDENT@2991..2996 "value"2140 SUFFIX_APPLY@3016..3022
1921 R_BRACK@2996..2997 "]"2141 ARGS_DESC@3016..3022
1922 WHITESPACE@2997..2998 " "2142 L_PAREN@3016..3017 "("
1923 FOR_SPEC@2998..30262143 ARG@3017..3021
1924 FOR_KW@2998..3001 "for"2144 EXPR@3017..3021
1925 WHITESPACE@3001..3002 " "2145 EXPR_VAR@3017..3021
1926 NAME@3002..30072146 NAME@3017..3021
1927 IDENT@3002..3007 "value"2147 IDENT@3017..3021 "str_"
1928 WHITESPACE@3007..3008 " "2148 R_PAREN@3021..3022 ")"
1929 IN_KW@3008..3010 "in"2149 SEMI@3022..3023 ";"
1930 WHITESPACE@3010..3011 " "2150 WHITESPACE@3023..3028 "\n "
1931 EXPR_VAR@3011..30262151 STMT_LOCAL@3028..3110
1932 NAME@3011..30262152 LOCAL_KW@3028..3033 "local"
1933 IDENT@3011..3026 "value_or_values"2153 WHITESPACE@3033..3034 " "
1934 R_BRACK@3026..3027 "]"2154 BIND_FUNCTION@3034..3109
1935 WHITESPACE@3027..3036 "\n "2155 NAME@3034..3039
1936 ELSE_KW@3036..3040 "else"2156 IDENT@3034..3039 "trans"
1937 WHITESPACE@3040..3051 "\n "2157 PARAMS_DESC@3039..3043
1938 FALSE_EXPR@3051..30852158 L_PAREN@3039..3040 "("
1939 EXPR_ARRAY@3051..30852159 PARAM@3040..3042
1940 L_BRACK@3051..3052 "["2160 DESTRUCT_FULL@3040..3042
1941 EXPR_BINARY@3052..30842161 NAME@3040..3042
1942 LHS_EXPR@3052..30612162 IDENT@3040..3042 "ch"
1943 EXPR_STRING@3052..30612163 R_PAREN@3042..3043 ")"
1944 STRING_SINGLE@3052..3061 "'%s = %s'"2164 WHITESPACE@3043..3044 " "
1945 WHITESPACE@3061..3062 " "2165 ASSIGN@3044..3045 "="
1946 MODULO@3062..3063 "%"2166 WHITESPACE@3045..3052 "\n "
1947 WHITESPACE@3063..3064 " "2167 EXPR@3052..3109
1948 EXPR_ARRAY@3064..30842168 EXPR_IF_THEN_ELSE@3052..3109
1949 L_BRACK@3064..3065 "["2169 IF_KW@3052..3054 "if"
1950 EXPR_VAR@3065..30662170 WHITESPACE@3054..3055 " "
1951 NAME@3065..30662171 EXPR@3055..3064
1952 IDENT@3065..3066 "k"2172 EXPR_BINARY@3055..3064
1953 COMMA@3066..3067 ","2173 EXPR@3055..3057
1954 WHITESPACE@3067..3068 " "2174 EXPR_VAR@3055..3057
1955 EXPR_VAR@3068..30832175 NAME@3055..3057
1956 NAME@3068..30832176 IDENT@3055..3057 "ch"
1957 IDENT@3068..3083 "value_or_values"2177 WHITESPACE@3057..3058 " "
1958 R_BRACK@3083..3084 "]"2178 EQ@3058..3060 "=="
1959 R_BRACK@3084..3085 "]"2179 WHITESPACE@3060..3061 " "
1960 WHITESPACE@3085..3095 "\n\n "2180 EXPR@3061..3064
1961 FOR_SPEC@3095..31262181 EXPR_STRING@3061..3064
1962 FOR_KW@3095..3098 "for"2182 STRING_DOUBLE@3061..3064 "\"'\""
1963 WHITESPACE@3098..3099 " "2183 WHITESPACE@3064..3065 " "
1964 NAME@3099..31002184 THEN_KW@3065..3069 "then"
1965 IDENT@3099..3100 "k"2185 WHITESPACE@3069..3078 "\n "
1966 WHITESPACE@3100..3101 " "2186 TRUE_EXPR@3078..3087
1967 IN_KW@3101..3103 "in"2187 EXPR@3078..3087
1968 WHITESPACE@3103..3104 " "2188 EXPR_STRING@3078..3087
1969 EXPR_APPLY@3104..31262189 STRING_DOUBLE@3078..3087 "\"'\\\"'\\\"'\""
1970 EXPR_INDEX@3104..31202190 WHITESPACE@3087..3094 "\n "
1971 EXPR_VAR@3104..31072191 ELSE_KW@3094..3098 "else"
1972 NAME@3104..31072192 WHITESPACE@3098..3107 "\n "
1973 IDENT@3104..3107 "std"2193 FALSE_EXPR@3107..3109
1974 DOT@3107..3108 "."2194 EXPR@3107..3109
1975 NAME@3108..31202195 EXPR_VAR@3107..3109
1976 IDENT@3108..3120 "objectFields"2196 NAME@3107..3109
1977 ARGS_DESC@3120..31262197 IDENT@3107..3109 "ch"
1978 L_PAREN@3120..3121 "("2198 SEMI@3109..3110 ";"
1979 ARG@3121..31252199 WHITESPACE@3110..3115 "\n "
1980 EXPR_VAR@3121..31252200 EXPR_BINARY@3115..3180
1981 NAME@3121..31252201 EXPR@3115..3121
1982 IDENT@3121..3125 "body"2202 EXPR_STRING@3115..3121
1983 R_PAREN@3125..3126 ")"2203 STRING_DOUBLE@3115..3121 "\"'%s'\""
1984 WHITESPACE@3126..3133 "\n "2204 WHITESPACE@3121..3122 " "
1985 R_BRACK@3133..3134 "]"2205 MODULO@3122..3123 "%"
1986 R_PAREN@3134..3135 ")"2206 WHITESPACE@3123..3124 " "
1987 SEMI@3135..3136 ";"2207 EXPR@3124..3180
1988 WHITESPACE@3136..3142 "\n\n "2208 EXPR_VAR@3124..3127
1989 STMT_LOCAL@3142..34242209 NAME@3124..3127
1990 LOCAL_KW@3142..3147 "local"2210 IDENT@3124..3127 "std"
1991 WHITESPACE@3147..3148 " "2211 SUFFIX_INDEX@3127..3132
1992 BIND_FUNCTION@3148..32162212 DOT@3127..3128 "."
1993 NAME@3148..31612213 NAME@3128..3132
1994 IDENT@3148..3161 "section_lines"2214 IDENT@3128..3132 "join"
1995 PARAMS_DESC@3161..31752215 SUFFIX_APPLY@3132..3180
1996 L_PAREN@3161..3162 "("2216 ARGS_DESC@3132..3180
1997 PARAM@3162..31672217 L_PAREN@3132..3133 "("
1998 DESTRUCT_FULL@3162..31672218 ARG@3133..3135
1999 NAME@3162..31672219 EXPR@3133..3135
2000 IDENT@3162..3167 "sname"2220 EXPR_STRING@3133..3135
2001 COMMA@3167..3168 ","2221 STRING_SINGLE@3133..3135 "''"
2002 WHITESPACE@3168..3169 " "2222 COMMA@3135..3136 ","
2003 PARAM@3169..31742223 WHITESPACE@3136..3137 " "
2004 DESTRUCT_FULL@3169..31742224 ARG@3137..3179
2005 NAME@3169..31742225 EXPR@3137..3179
2006 IDENT@3169..3174 "sbody"2226 EXPR_ARRAY_COMP@3137..3179
2007 R_PAREN@3174..3175 ")"2227 L_BRACK@3137..3138 "["
2008 WHITESPACE@3175..3176 " "2228 EXPR@3138..3147
2009 ASSIGN@3176..3177 "="2229 EXPR_VAR@3138..3143
2010 WHITESPACE@3177..3178 " "2230 NAME@3138..3143
2011 EXPR_BINARY@3178..32162231 IDENT@3138..3143 "trans"
2012 LHS_EXPR@3178..31962232 SUFFIX_APPLY@3143..3147
2013 EXPR_ARRAY@3178..31962233 ARGS_DESC@3143..3147
2014 L_BRACK@3178..3179 "["2234 L_PAREN@3143..3144 "("
2015 EXPR_BINARY@3179..31952235 ARG@3144..3146
2016 LHS_EXPR@3179..31852236 EXPR@3144..3146
2017 EXPR_STRING@3179..31852237 EXPR_VAR@3144..3146
2018 STRING_SINGLE@3179..3185 "'[%s]'"2238 NAME@3144..3146
2019 WHITESPACE@3185..3186 " "2239 IDENT@3144..3146 "ch"
2020 MODULO@3186..3187 "%"2240 R_PAREN@3146..3147 ")"
2021 WHITESPACE@3187..3188 " "2241 WHITESPACE@3147..3148 " "
2022 EXPR_ARRAY@3188..31952242 FOR_SPEC@3148..3178
2023 L_BRACK@3188..3189 "["2243 FOR_KW@3148..3151 "for"
2024 EXPR_VAR@3189..31942244 WHITESPACE@3151..3152 " "
2025 NAME@3189..31942245 DESTRUCT_FULL@3152..3154
2026 IDENT@3189..3194 "sname"2246 NAME@3152..3154
2027 R_BRACK@3194..3195 "]"2247 IDENT@3152..3154 "ch"
2028 R_BRACK@3195..3196 "]"2248 WHITESPACE@3154..3155 " "
2029 WHITESPACE@3196..3197 " "2249 IN_KW@3155..3157 "in"
2030 PLUS@3197..3198 "+"2250 WHITESPACE@3157..3158 " "
2031 WHITESPACE@3198..3199 " "2251 EXPR@3158..3178
2032 EXPR_APPLY@3199..32162252 EXPR_VAR@3158..3161
2033 EXPR_VAR@3199..32092253 NAME@3158..3161
2034 NAME@3199..32092254 IDENT@3158..3161 "std"
2035 IDENT@3199..3209 "body_lines"2255 SUFFIX_INDEX@3161..3173
2036 ARGS_DESC@3209..32162256 DOT@3161..3162 "."
2037 L_PAREN@3209..3210 "("2257 NAME@3162..3173
2038 ARG@3210..32152258 IDENT@3162..3173 "stringChars"
2039 EXPR_VAR@3210..32152259 SUFFIX_APPLY@3173..3178
2040 NAME@3210..32152260 ARGS_DESC@3173..3178
2041 IDENT@3210..3215 "sbody"2261 L_PAREN@3173..3174 "("
2042 R_PAREN@3215..3216 ")"2262 ARG@3174..3177
2043 COMMA@3216..3217 ","2263 EXPR@3174..3177
2044 WHITESPACE@3217..3228 "\n "2264 EXPR_VAR@3174..3177
2045 BIND_DESTRUCT@3228..33032265 NAME@3174..3177
2046 DESTRUCT_FULL@3228..32372266 IDENT@3174..3177 "str"
2047 NAME@3228..32372267 R_PAREN@3177..3178 ")"
2048 IDENT@3228..3237 "main_body"2268 R_BRACK@3178..3179 "]"
2049 WHITESPACE@3237..3238 " "2269 R_PAREN@3179..3180 ")"
2050 ASSIGN@3238..3239 "="2270 COMMA@3180..3181 ","
2051 WHITESPACE@3239..3240 " "2271 WHITESPACE@3181..3185 "\n\n "
2052 EXPR_IF_THEN_ELSE@3240..33032272 MEMBER_FIELD_METHOD@3185..3399
2053 IF_KW@3240..3242 "if"2273 FIELD_NAME_FIXED@3185..3204
2054 WHITESPACE@3242..3243 " "2274 NAME@3185..3204
2055 EXPR_APPLY@3243..32692275 IDENT@3185..3204 "escapeStringDollars"
2056 EXPR_INDEX@3243..32562276 PARAMS_DESC@3204..3210
2057 EXPR_VAR@3243..32462277 L_PAREN@3204..3205 "("
2058 NAME@3243..32462278 PARAM@3205..3209
2059 IDENT@3243..3246 "std"2279 DESTRUCT_FULL@3205..3209
2060 DOT@3246..3247 "."2280 NAME@3205..3209
2061 NAME@3247..32562281 IDENT@3205..3209 "str_"
2062 IDENT@3247..3256 "objectHas"2282 R_PAREN@3209..3210 ")"
2063 ARGS_DESC@3256..32692283 COLONCOLON@3210..3212 "::"
2064 L_PAREN@3256..3257 "("2284 WHITESPACE@3212..3217 "\n "
2065 ARG@3257..32602285 EXPR@3217..3399
2066 EXPR_VAR@3257..32602286 STMT_LOCAL@3217..3248
2067 NAME@3257..32602287 LOCAL_KW@3217..3222 "local"
2068 IDENT@3257..3260 "ini"2288 WHITESPACE@3222..3223 " "
2069 COMMA@3260..3261 ","2289 BIND_DESTRUCT@3223..3247
2070 WHITESPACE@3261..3262 " "2290 DESTRUCT_FULL@3223..3226
2071 ARG@3262..32682291 NAME@3223..3226
2072 EXPR_STRING@3262..32682292 IDENT@3223..3226 "str"
2073 STRING_SINGLE@3262..3268 "'main'"2293 WHITESPACE@3226..3227 " "
2074 R_PAREN@3268..3269 ")"2294 ASSIGN@3227..3228 "="
2075 WHITESPACE@3269..3270 " "2295 WHITESPACE@3228..3229 " "
2076 THEN_KW@3270..3274 "then"2296 EXPR@3229..3247
2077 WHITESPACE@3274..3275 " "2297 EXPR_VAR@3229..3232
2078 TRUE_EXPR@3275..32952298 NAME@3229..3232
2079 EXPR_APPLY@3275..32952299 IDENT@3229..3232 "std"
2080 EXPR_VAR@3275..32852300 SUFFIX_INDEX@3232..3241
2081 NAME@3275..32852301 DOT@3232..3233 "."
2082 IDENT@3275..3285 "body_lines"2302 NAME@3233..3241
2083 ARGS_DESC@3285..32952303 IDENT@3233..3241 "toString"
2084 L_PAREN@3285..3286 "("2304 SUFFIX_APPLY@3241..3247
2085 ARG@3286..32942305 ARGS_DESC@3241..3247
2086 EXPR_INDEX@3286..32942306 L_PAREN@3241..3242 "("
2087 EXPR_VAR@3286..32892307 ARG@3242..3246
2088 NAME@3286..32892308 EXPR@3242..3246
2089 IDENT@3286..3289 "ini"2309 EXPR_VAR@3242..3246
2090 DOT@3289..3290 "."2310 NAME@3242..3246
2091 NAME@3290..32942311 IDENT@3242..3246 "str_"
2092 IDENT@3290..3294 "main"2312 R_PAREN@3246..3247 ")"
2093 R_PAREN@3294..3295 ")"2313 SEMI@3247..3248 ";"
2094 WHITESPACE@3295..3296 " "2314 WHITESPACE@3248..3253 "\n "
2095 ELSE_KW@3296..3300 "else"2315 STMT_LOCAL@3253..3330
2096 WHITESPACE@3300..3301 " "2316 LOCAL_KW@3253..3258 "local"
2097 FALSE_EXPR@3301..33032317 WHITESPACE@3258..3259 " "
2098 EXPR_ARRAY@3301..33032318 BIND_FUNCTION@3259..3329
2099 L_BRACK@3301..3302 "["2319 NAME@3259..3264
2100 R_BRACK@3302..3303 "]"2320 IDENT@3259..3264 "trans"
2101 COMMA@3303..3304 ","2321 PARAMS_DESC@3264..3268
2102 WHITESPACE@3304..3315 "\n "2322 L_PAREN@3264..3265 "("
2103 BIND_DESTRUCT@3315..34232323 PARAM@3265..3267
2104 DESTRUCT_FULL@3315..33272324 DESTRUCT_FULL@3265..3267
2105 NAME@3315..33272325 NAME@3265..3267
2106 IDENT@3315..3327 "all_sections"2326 IDENT@3265..3267 "ch"
2107 WHITESPACE@3327..3328 " "2327 R_PAREN@3267..3268 ")"
2108 ASSIGN@3328..3329 "="2328 WHITESPACE@3268..3269 " "
2109 WHITESPACE@3329..3330 " "2329 ASSIGN@3269..3270 "="
2110 EXPR_ARRAY_COMP@3330..34232330 WHITESPACE@3270..3277 "\n "
2111 L_BRACK@3330..3331 "["2331 EXPR@3277..3329
2112 WHITESPACE@3331..3338 "\n "2332 EXPR_IF_THEN_ELSE@3277..3329
2113 EXPR_APPLY@3338..33712333 IF_KW@3277..3279 "if"
2114 EXPR_VAR@3338..33512334 WHITESPACE@3279..3280 " "
2115 NAME@3338..33512335 EXPR@3280..3289
2116 IDENT@3338..3351 "section_lines"2336 EXPR_BINARY@3280..3289
2117 ARGS_DESC@3351..33712337 EXPR@3280..3282
2118 L_PAREN@3351..3352 "("2338 EXPR_VAR@3280..3282
2119 ARG@3352..33532339 NAME@3280..3282
2120 EXPR_VAR@3352..33532340 IDENT@3280..3282 "ch"
2121 NAME@3352..33532341 WHITESPACE@3282..3283 " "
2122 IDENT@3352..3353 "k"2342 EQ@3283..3285 "=="
2123 COMMA@3353..3354 ","2343 WHITESPACE@3285..3286 " "
2124 WHITESPACE@3354..3355 " "2344 EXPR@3286..3289
2125 ARG@3355..33702345 EXPR_STRING@3286..3289
2126 EXPR_INDEX_EXPR@3355..33702346 STRING_SINGLE@3286..3289 "'$'"
2127 LHS_EXPR@3355..33672347 WHITESPACE@3289..3290 " "
2128 EXPR_INDEX@3355..33672348 THEN_KW@3290..3294 "then"
2129 EXPR_VAR@3355..33582349 WHITESPACE@3294..3303 "\n "
2130 NAME@3355..33582350 TRUE_EXPR@3303..3307
2131 IDENT@3355..3358 "ini"2351 EXPR@3303..3307
2132 DOT@3358..3359 "."2352 EXPR_STRING@3303..3307
2133 NAME@3359..33672353 STRING_SINGLE@3303..3307 "'$$'"
2134 IDENT@3359..3367 "sections"2354 WHITESPACE@3307..3314 "\n "
2135 L_BRACK@3367..3368 "["2355 ELSE_KW@3314..3318 "else"
2136 EXPR_VAR@3368..33692356 WHITESPACE@3318..3327 "\n "
2137 NAME@3368..33692357 FALSE_EXPR@3327..3329
2138 IDENT@3368..3369 "k"2358 EXPR@3327..3329
2139 R_BRACK@3369..3370 "]"2359 EXPR_VAR@3327..3329
2140 R_PAREN@3370..3371 ")"2360 NAME@3327..3329
2141 WHITESPACE@3371..3378 "\n "2361 IDENT@3327..3329 "ch"
2142 FOR_SPEC@3378..34172362 SEMI@3329..3330 ";"
2143 FOR_KW@3378..3381 "for"2363 WHITESPACE@3330..3335 "\n "
2144 WHITESPACE@3381..3382 " "2364 EXPR_VAR@3335..3338
2145 NAME@3382..33832365 NAME@3335..3338
2146 IDENT@3382..3383 "k"2366 IDENT@3335..3338 "std"
2147 WHITESPACE@3383..3384 " "2367 SUFFIX_INDEX@3338..3344
2148 IN_KW@3384..3386 "in"2368 DOT@3338..3339 "."
2149 WHITESPACE@3386..3387 " "2369 NAME@3339..3344
2150 EXPR_APPLY@3387..34172370 IDENT@3339..3344 "foldl"
2151 EXPR_INDEX@3387..34032371 SUFFIX_APPLY@3344..3399
2152 EXPR_VAR@3387..33902372 ARGS_DESC@3344..3399
2153 NAME@3387..33902373 L_PAREN@3344..3345 "("
2154 IDENT@3387..3390 "std"2374 ARG@3345..3372
2155 DOT@3390..3391 "."2375 EXPR@3345..3372
2156 NAME@3391..34032376 EXPR_FUNCTION@3345..3372
2157 IDENT@3391..3403 "objectFields"2377 FUNCTION_KW@3345..3353 "function"
2158 ARGS_DESC@3403..34172378 PARAMS_DESC@3353..3359
2159 L_PAREN@3403..3404 "("2379 L_PAREN@3353..3354 "("
2160 ARG@3404..34162380 PARAM@3354..3355
2161 EXPR_INDEX@3404..34162381 DESTRUCT_FULL@3354..3355
2162 EXPR_VAR@3404..34072382 NAME@3354..3355
2163 NAME@3404..34072383 IDENT@3354..3355 "a"
2164 IDENT@3404..3407 "ini"2384 COMMA@3355..3356 ","
2165 DOT@3407..3408 "."2385 WHITESPACE@3356..3357 " "
2166 NAME@3408..34162386 PARAM@3357..3358
2167 IDENT@3408..3416 "sections"2387 DESTRUCT_FULL@3357..3358
2168 R_PAREN@3416..3417 ")"2388 NAME@3357..3358
2169 WHITESPACE@3417..3422 "\n "2389 IDENT@3357..3358 "b"
2170 R_BRACK@3422..3423 "]"2390 R_PAREN@3358..3359 ")"
2171 SEMI@3423..3424 ";"2391 WHITESPACE@3359..3360 " "
2172 WHITESPACE@3424..3429 "\n "2392 EXPR@3360..3372
2173 EXPR_APPLY@3429..34952393 EXPR_BINARY@3360..3372
2174 EXPR_INDEX@3429..34372394 EXPR@3360..3361
2175 EXPR_VAR@3429..34322395 EXPR_VAR@3360..3361
2176 NAME@3429..34322396 NAME@3360..3361
2177 IDENT@3429..3432 "std"2397 IDENT@3360..3361 "a"
2178 DOT@3432..3433 "."2398 WHITESPACE@3361..3362 " "
2179 NAME@3433..34372399 PLUS@3362..3363 "+"
2180 IDENT@3433..3437 "join"2400 WHITESPACE@3363..3364 " "
2181 ARGS_DESC@3437..34952401 EXPR@3364..3372
2182 L_PAREN@3437..3438 "("2402 EXPR_VAR@3364..3369
2183 ARG@3438..34422403 NAME@3364..3369
2184 EXPR_STRING@3438..34422404 IDENT@3364..3369 "trans"
2185 STRING_SINGLE@3438..3442 "'\\n'"2405 SUFFIX_APPLY@3369..3372
2186 COMMA@3442..3443 ","2406 ARGS_DESC@3369..3372
2187 WHITESPACE@3443..3444 " "2407 L_PAREN@3369..3370 "("
2188 ARG@3444..34942408 ARG@3370..3371
2189 EXPR_BINARY@3444..34942409 EXPR@3370..3371
2190 LHS_EXPR@3444..34872410 EXPR_VAR@3370..3371
2191 EXPR_BINARY@3444..34872411 NAME@3370..3371
2192 LHS_EXPR@3444..34532412 IDENT@3370..3371 "b"
2193 EXPR_VAR@3444..34532413 R_PAREN@3371..3372 ")"
2194 NAME@3444..34532414 COMMA@3372..3373 ","
2195 IDENT@3444..3453 "main_body"2415 WHITESPACE@3373..3374 " "
2196 WHITESPACE@3453..3454 " "2416 ARG@3374..3394
2197 PLUS@3454..3455 "+"2417 EXPR@3374..3394
2198 WHITESPACE@3455..3456 " "2418 EXPR_VAR@3374..3377
2199 EXPR_APPLY@3456..34872419 NAME@3374..3377
2200 EXPR_INDEX@3456..34732420 IDENT@3374..3377 "std"
2201 EXPR_VAR@3456..34592421 SUFFIX_INDEX@3377..3389
2202 NAME@3456..34592422 DOT@3377..3378 "."
2203 IDENT@3456..3459 "std"2423 NAME@3378..3389
2204 DOT@3459..3460 "."2424 IDENT@3378..3389 "stringChars"
2205 NAME@3460..34732425 SUFFIX_APPLY@3389..3394
2206 IDENT@3460..3473 "flattenArrays"2426 ARGS_DESC@3389..3394
2207 ARGS_DESC@3473..34872427 L_PAREN@3389..3390 "("
2208 L_PAREN@3473..3474 "("2428 ARG@3390..3393
2209 ARG@3474..34862429 EXPR@3390..3393
2210 EXPR_VAR@3474..34862430 EXPR_VAR@3390..3393
2211 NAME@3474..34862431 NAME@3390..3393
2212 IDENT@3474..3486 "all_sections"2432 IDENT@3390..3393 "str"
2213 R_PAREN@3486..3487 ")"2433 R_PAREN@3393..3394 ")"
2214 WHITESPACE@3487..3488 " "2434 COMMA@3394..3395 ","
2215 PLUS@3488..3489 "+"2435 WHITESPACE@3395..3396 " "
2216 WHITESPACE@3489..3490 " "2436 ARG@3396..3398
2217 EXPR_ARRAY@3490..34942437 EXPR@3396..3398
2218 L_BRACK@3490..3491 "["2438 EXPR_STRING@3396..3398
2219 EXPR_STRING@3491..34932439 STRING_SINGLE@3396..3398 "''"
2220 STRING_SINGLE@3491..3493 "''"2440 R_PAREN@3398..3399 ")"
2221 R_BRACK@3493..3494 "]"2441 COMMA@3399..3400 ","
2222 R_PAREN@3494..3495 ")"2442 WHITESPACE@3400..3404 "\n\n "
2223 COMMA@3495..3496 ","2443 MEMBER_BIND_STMT@3404..3519
2224 WHITESPACE@3496..3500 "\n\n "2444 OBJ_LOCAL@3404..3519
2225 MEMBER_FIELD_METHOD@3500..35532445 LOCAL_KW@3404..3409 "local"
2226 FIELD_NAME_FIXED@3500..35122446 WHITESPACE@3409..3410 " "
2227 NAME@3500..35122447 BIND_DESTRUCT@3410..3519
2228 IDENT@3500..3512 "manifestToml"2448 DESTRUCT_FULL@3410..3421
2229 PARAMS_DESC@3512..35192449 NAME@3410..3421
2230 L_PAREN@3512..3513 "("2450 IDENT@3410..3421 "xml_escapes"
2231 PARAM@3513..35182451 WHITESPACE@3421..3422 " "
2232 DESTRUCT_FULL@3513..35182452 ASSIGN@3422..3423 "="
2233 NAME@3513..35182453 WHITESPACE@3423..3424 " "
2234 IDENT@3513..3518 "value"2454 EXPR@3424..3519
2235 R_PAREN@3518..3519 ")"2455 EXPR_OBJECT@3424..3519
2236 COLONCOLON@3519..3521 "::"2456 OBJ_BODY_MEMBER_LIST@3424..3519
2237 WHITESPACE@3521..3522 " "2457 L_BRACE@3424..3425 "{"
2238 EXPR_APPLY@3522..35532458 WHITESPACE@3425..3430 "\n "
2239 EXPR_INDEX@3522..35402459 MEMBER_FIELD_NORMAL@3430..3441
2240 EXPR_VAR@3522..35252460 FIELD_NAME_FIXED@3430..3433
2241 NAME@3522..35252461 STRING_SINGLE@3430..3433 "'<'"
2242 IDENT@3522..3525 "std"2462 COLON@3433..3434 ":"
2243 DOT@3525..3526 "."2463 WHITESPACE@3434..3435 " "
2244 NAME@3526..35402464 EXPR@3435..3441
2245 IDENT@3526..3540 "manifestTomlEx"2465 EXPR_STRING@3435..3441
2246 ARGS_DESC@3540..35532466 STRING_SINGLE@3435..3441 "'&lt;'"
2247 L_PAREN@3540..3541 "("2467 COMMA@3441..3442 ","
2248 ARG@3541..35462468 WHITESPACE@3442..3447 "\n "
2249 EXPR_VAR@3541..35462469 MEMBER_FIELD_NORMAL@3447..3458
2250 NAME@3541..35462470 FIELD_NAME_FIXED@3447..3450
2251 IDENT@3541..3546 "value"2471 STRING_SINGLE@3447..3450 "'>'"
2252 COMMA@3546..3547 ","2472 COLON@3450..3451 ":"
2253 WHITESPACE@3547..3548 " "2473 WHITESPACE@3451..3452 " "
2254 ARG@3548..35522474 EXPR@3452..3458
2255 EXPR_STRING@3548..35522475 EXPR_STRING@3452..3458
2256 STRING_SINGLE@3548..3552 "' '"2476 STRING_SINGLE@3452..3458 "'&gt;'"
2257 R_PAREN@3552..3553 ")"2477 COMMA@3458..3459 ","
2258 COMMA@3553..3554 ","2478 WHITESPACE@3459..3464 "\n "
2259 WHITESPACE@3554..3558 "\n\n "2479 MEMBER_FIELD_NORMAL@3464..3476
2260 MEMBER_FIELD_METHOD@3558..36132480 FIELD_NAME_FIXED@3464..3467
2261 FIELD_NAME_FIXED@3558..35762481 STRING_SINGLE@3464..3467 "'&'"
2262 NAME@3558..35762482 COLON@3467..3468 ":"
2263 IDENT@3558..3576 "escapeStringPython"2483 WHITESPACE@3468..3469 " "
2264 PARAMS_DESC@3576..35812484 EXPR@3469..3476
2265 L_PAREN@3576..3577 "("2485 EXPR_STRING@3469..3476
2266 PARAM@3577..35802486 STRING_SINGLE@3469..3476 "'&amp;'"
2267 DESTRUCT_FULL@3577..35802487 COMMA@3476..3477 ","
2268 NAME@3577..35802488 WHITESPACE@3477..3482 "\n "
2269 IDENT@3577..3580 "str"2489 MEMBER_FIELD_NORMAL@3482..3495
2270 R_PAREN@3580..3581 ")"2490 FIELD_NAME_FIXED@3482..3485
2271 COLONCOLON@3581..3583 "::"2491 STRING_SINGLE@3482..3485 "'\"'"
2272 WHITESPACE@3583..3588 "\n "2492 COLON@3485..3486 ":"
2273 EXPR_APPLY@3588..36132493 WHITESPACE@3486..3487 " "
2274 EXPR_INDEX@3588..36082494 EXPR@3487..3495
2495 EXPR_STRING@3487..3495
2496 STRING_SINGLE@3487..3495 "'&quot;'"
2497 COMMA@3495..3496 ","
2498 WHITESPACE@3496..3501 "\n "
2499 MEMBER_FIELD_NORMAL@3501..3514
2500 FIELD_NAME_FIXED@3501..3504
2501 STRING_DOUBLE@3501..3504 "\"'\""
2502 COLON@3504..3505 ":"
2503 WHITESPACE@3505..3506 " "
2504 EXPR@3506..3514
2505 EXPR_STRING@3506..3514
2506 STRING_SINGLE@3506..3514 "'&apos;'"
2507 COMMA@3514..3515 ","
2508 WHITESPACE@3515..3518 "\n "
2509 R_BRACE@3518..3519 "}"
2510 COMMA@3519..3520 ","
2511 WHITESPACE@3520..3524 "\n\n "
2512 MEMBER_FIELD_METHOD@3524..3663
2513 FIELD_NAME_FIXED@3524..3539
2514 NAME@3524..3539
2515 IDENT@3524..3539 "escapeStringXML"
2516 PARAMS_DESC@3539..3545
2517 L_PAREN@3539..3540 "("
2518 PARAM@3540..3544
2519 DESTRUCT_FULL@3540..3544
2520 NAME@3540..3544
2521 IDENT@3540..3544 "str_"
2522 R_PAREN@3544..3545 ")"
2523 COLONCOLON@3545..3547 "::"
2524 WHITESPACE@3547..3552 "\n "
2525 EXPR@3552..3663
2526 STMT_LOCAL@3552..3583
2527 LOCAL_KW@3552..3557 "local"
2528 WHITESPACE@3557..3558 " "
2529 BIND_DESTRUCT@3558..3582
2530 DESTRUCT_FULL@3558..3561
2531 NAME@3558..3561
2532 IDENT@3558..3561 "str"
2533 WHITESPACE@3561..3562 " "
2534 ASSIGN@3562..3563 "="
2535 WHITESPACE@3563..3564 " "
2536 EXPR@3564..3582
2537 EXPR_VAR@3564..3567
2538 NAME@3564..3567
2539 IDENT@3564..3567 "std"
2540 SUFFIX_INDEX@3567..3576
2541 DOT@3567..3568 "."
2542 NAME@3568..3576
2543 IDENT@3568..3576 "toString"
2544 SUFFIX_APPLY@3576..3582
2545 ARGS_DESC@3576..3582
2546 L_PAREN@3576..3577 "("
2547 ARG@3577..3581
2548 EXPR@3577..3581
2549 EXPR_VAR@3577..3581
2550 NAME@3577..3581
2551 IDENT@3577..3581 "str_"
2552 R_PAREN@3581..3582 ")"
2553 SEMI@3582..3583 ";"
2554 WHITESPACE@3583..3588 "\n "
2275 EXPR_VAR@3588..35912555 EXPR_VAR@3588..3591
2276 NAME@3588..35912556 NAME@3588..3591
2277 IDENT@3588..3591 "std"2557 IDENT@3588..3591 "std"
2278 DOT@3591..3592 "."2558 SUFFIX_INDEX@3591..3596
2279 NAME@3592..36082559 DOT@3591..3592 "."
2280 IDENT@3592..3608 "escapeStringJson"2560 NAME@3592..3596
2281 ARGS_DESC@3608..36132561 IDENT@3592..3596 "join"
2282 L_PAREN@3608..3609 "("2562 SUFFIX_APPLY@3596..3663
2283 ARG@3609..36122563 ARGS_DESC@3596..3663
2284 EXPR_VAR@3609..36122564 L_PAREN@3596..3597 "("
2285 NAME@3609..36122565 ARG@3597..3599
2286 IDENT@3609..3612 "str"2566 EXPR@3597..3599
2287 R_PAREN@3612..3613 ")"2567 EXPR_STRING@3597..3599
2288 COMMA@3613..3614 ","2568 STRING_SINGLE@3597..3599 "''"
2289 WHITESPACE@3614..3618 "\n\n "2569 COMMA@3599..3600 ","
2290 MEMBER_FIELD_METHOD@3618..38352570 WHITESPACE@3600..3601 " "
2291 FIELD_NAME_FIXED@3618..36342571 ARG@3601..3662
2292 NAME@3618..36342572 EXPR@3601..3662
2293 IDENT@3618..3634 "escapeStringBash"2573 EXPR_ARRAY_COMP@3601..3662
2294 PARAMS_DESC@3634..36402574 L_BRACK@3601..3602 "["
2295 L_PAREN@3634..3635 "("2575 EXPR@3602..3630
2296 PARAM@3635..36392576 EXPR_VAR@3602..3605
2297 DESTRUCT_FULL@3635..36392577 NAME@3602..3605
2298 NAME@3635..36392578 IDENT@3602..3605 "std"
2299 IDENT@3635..3639 "str_"2579 SUFFIX_INDEX@3605..3609
2300 R_PAREN@3639..3640 ")"2580 DOT@3605..3606 "."
2301 COLONCOLON@3640..3642 "::"2581 NAME@3606..3609
2302 WHITESPACE@3642..3647 "\n "2582 IDENT@3606..3609 "get"
2303 STMT_LOCAL@3647..36782583 SUFFIX_APPLY@3609..3630
2304 LOCAL_KW@3647..3652 "local"2584 ARGS_DESC@3609..3630
2305 WHITESPACE@3652..3653 " "2585 L_PAREN@3609..3610 "("
2306 BIND_DESTRUCT@3653..36772586 ARG@3610..3621
2307 DESTRUCT_FULL@3653..36562587 EXPR@3610..3621
2308 NAME@3653..36562588 EXPR_VAR@3610..3621
2309 IDENT@3653..3656 "str"2589 NAME@3610..3621
2310 WHITESPACE@3656..3657 " "2590 IDENT@3610..3621 "xml_escapes"
2311 ASSIGN@3657..3658 "="2591 COMMA@3621..3622 ","
2312 WHITESPACE@3658..3659 " "2592 WHITESPACE@3622..3623 " "
2313 EXPR_APPLY@3659..36772593 ARG@3623..3625
2314 EXPR_INDEX@3659..36712594 EXPR@3623..3625
2315 EXPR_VAR@3659..36622595 EXPR_VAR@3623..3625
2316 NAME@3659..36622596 NAME@3623..3625
2317 IDENT@3659..3662 "std"2597 IDENT@3623..3625 "ch"
2318 DOT@3662..3663 "."2598 COMMA@3625..3626 ","
2319 NAME@3663..36712599 WHITESPACE@3626..3627 " "
2320 IDENT@3663..3671 "toString"2600 ARG@3627..3629
2321 ARGS_DESC@3671..36772601 EXPR@3627..3629
2322 L_PAREN@3671..3672 "("2602 EXPR_VAR@3627..3629
2323 ARG@3672..36762603 NAME@3627..3629
2324 EXPR_VAR@3672..36762604 IDENT@3627..3629 "ch"
2325 NAME@3672..36762605 R_PAREN@3629..3630 ")"
2326 IDENT@3672..3676 "str_"2606 WHITESPACE@3630..3631 " "
2327 R_PAREN@3676..3677 ")"2607 FOR_SPEC@3631..3661
2328 SEMI@3677..3678 ";"2608 FOR_KW@3631..3634 "for"
2329 WHITESPACE@3678..3683 "\n "2609 WHITESPACE@3634..3635 " "
2330 STMT_LOCAL@3683..37652610 DESTRUCT_FULL@3635..3637
2331 LOCAL_KW@3683..3688 "local"2611 NAME@3635..3637
2332 WHITESPACE@3688..3689 " "2612 IDENT@3635..3637 "ch"
2333 BIND_FUNCTION@3689..37642613 WHITESPACE@3637..3638 " "
2334 NAME@3689..36942614 IN_KW@3638..3640 "in"
2335 IDENT@3689..3694 "trans"2615 WHITESPACE@3640..3641 " "
2336 PARAMS_DESC@3694..36982616 EXPR@3641..3661
2337 L_PAREN@3694..3695 "("2617 EXPR_VAR@3641..3644
2338 PARAM@3695..36972618 NAME@3641..3644
2339 DESTRUCT_FULL@3695..36972619 IDENT@3641..3644 "std"
2340 NAME@3695..36972620 SUFFIX_INDEX@3644..3656
2341 IDENT@3695..3697 "ch"2621 DOT@3644..3645 "."
2342 R_PAREN@3697..3698 ")"2622 NAME@3645..3656
2343 WHITESPACE@3698..3699 " "2623 IDENT@3645..3656 "stringChars"
2344 ASSIGN@3699..3700 "="2624 SUFFIX_APPLY@3656..3661
2345 WHITESPACE@3700..3707 "\n "2625 ARGS_DESC@3656..3661
2346 EXPR_IF_THEN_ELSE@3707..37642626 L_PAREN@3656..3657 "("
2347 IF_KW@3707..3709 "if"2627 ARG@3657..3660
2348 WHITESPACE@3709..3710 " "2628 EXPR@3657..3660
2349 EXPR_BINARY@3710..37192629 EXPR_VAR@3657..3660
2350 LHS_EXPR@3710..37122630 NAME@3657..3660
2351 EXPR_VAR@3710..37122631 IDENT@3657..3660 "str"
2352 NAME@3710..37122632 R_PAREN@3660..3661 ")"
2353 IDENT@3710..3712 "ch"2633 R_BRACK@3661..3662 "]"
2354 WHITESPACE@3712..3713 " "2634 R_PAREN@3662..3663 ")"
2355 EQ@3713..3715 "=="2635 COMMA@3663..3664 ","
2636 WHITESPACE@3664..3668 "\n\n "
2637 MEMBER_FIELD_METHOD@3668..3734
2638 FIELD_NAME_FIXED@3668..3680
2639 NAME@3668..3680
2640 IDENT@3668..3680 "manifestJson"
2641 PARAMS_DESC@3680..3687
2642 L_PAREN@3680..3681 "("
2643 PARAM@3681..3686
2644 DESTRUCT_FULL@3681..3686
2645 NAME@3681..3686
2646 IDENT@3681..3686 "value"
2647 R_PAREN@3686..3687 ")"
2648 COLONCOLON@3687..3689 "::"
2649 WHITESPACE@3689..3690 " "
2650 EXPR@3690..3734
2651 EXPR_VAR@3690..3693
2652 NAME@3690..3693
2653 IDENT@3690..3693 "std"
2654 SUFFIX_INDEX@3693..3708
2655 DOT@3693..3694 "."
2656 NAME@3694..3708
2657 IDENT@3694..3708 "manifestJsonEx"
2658 SUFFIX_APPLY@3708..3734
2659 ARGS_DESC@3708..3734
2660 L_PAREN@3708..3709 "("
2661 ARG@3709..3714
2662 EXPR@3709..3714
2663 EXPR_VAR@3709..3714
2664 NAME@3709..3714
2665 IDENT@3709..3714 "value"
2666 COMMA@3714..3715 ","
2356 WHITESPACE@3715..3716 " "2667 WHITESPACE@3715..3716 " "
2357 EXPR_STRING@3716..37192668 ARG@3716..3722
2358 STRING_DOUBLE@3716..3719 "\"'\""2669 EXPR@3716..3722
2359 WHITESPACE@3719..3720 " "2670 EXPR_STRING@3716..3722
2360 THEN_KW@3720..3724 "then"2671 STRING_SINGLE@3716..3722 "' '"
2361 WHITESPACE@3724..3733 "\n "2672 R_PAREN@3722..3723 ")"
2362 TRUE_EXPR@3733..37422673 WHITESPACE@3723..3724 " "
2363 EXPR_STRING@3733..37422674 TAILSTRICT_KW@3724..3734 "tailstrict"
2364 STRING_DOUBLE@3733..3742 "\"'\\\"'\\\"'\""2675 COMMA@3734..3735 ","
2365 WHITESPACE@3742..3749 "\n "2676 WHITESPACE@3735..3739 "\n\n "
2366 ELSE_KW@3749..3753 "else"2677 MEMBER_FIELD_METHOD@3739..3807
2367 WHITESPACE@3753..3762 "\n "2678 FIELD_NAME_FIXED@3739..3759
2368 FALSE_EXPR@3762..37642679 NAME@3739..3759
2369 EXPR_VAR@3762..37642680 IDENT@3739..3759 "manifestJsonMinified"
2370 NAME@3762..37642681 PARAMS_DESC@3759..3766
2371 IDENT@3762..3764 "ch"2682 L_PAREN@3759..3760 "("
2372 SEMI@3764..3765 ";"2683 PARAM@3760..3765
2373 WHITESPACE@3765..3770 "\n "2684 DESTRUCT_FULL@3760..3765
2374 EXPR_BINARY@3770..38352685 NAME@3760..3765
2375 LHS_EXPR@3770..37762686 IDENT@3760..3765 "value"
2376 EXPR_STRING@3770..37762687 R_PAREN@3765..3766 ")"
2377 STRING_DOUBLE@3770..3776 "\"'%s'\""2688 COLONCOLON@3766..3768 "::"
2378 WHITESPACE@3776..3777 " "2689 WHITESPACE@3768..3769 " "
2379 MODULO@3777..3778 "%"2690 EXPR@3769..3807
2380 WHITESPACE@3778..3779 " "2691 EXPR_VAR@3769..3772
2381 EXPR_APPLY@3779..38352692 NAME@3769..3772
2382 EXPR_INDEX@3779..37872693 IDENT@3769..3772 "std"
2383 EXPR_VAR@3779..37822694 SUFFIX_INDEX@3772..3787
2384 NAME@3779..37822695 DOT@3772..3773 "."
2385 IDENT@3779..3782 "std"2696 NAME@3773..3787
2386 DOT@3782..3783 "."2697 IDENT@3773..3787 "manifestJsonEx"
2387 NAME@3783..37872698 SUFFIX_APPLY@3787..3807
2388 IDENT@3783..3787 "join"2699 ARGS_DESC@3787..3807
2389 ARGS_DESC@3787..38352700 L_PAREN@3787..3788 "("
2390 L_PAREN@3787..3788 "("2701 ARG@3788..3793
2391 ARG@3788..37902702 EXPR@3788..3793
2392 EXPR_STRING@3788..37902703 EXPR_VAR@3788..3793
2393 STRING_SINGLE@3788..3790 "''"2704 NAME@3788..3793
2394 COMMA@3790..3791 ","2705 IDENT@3788..3793 "value"
2395 WHITESPACE@3791..3792 " "2706 COMMA@3793..3794 ","
2396 ARG@3792..38342707 WHITESPACE@3794..3795 " "
2397 EXPR_ARRAY_COMP@3792..38342708 ARG@3795..3797
2398 L_BRACK@3792..3793 "["2709 EXPR@3795..3797
2399 EXPR_APPLY@3793..38022710 EXPR_STRING@3795..3797
2400 EXPR_VAR@3793..37982711 STRING_SINGLE@3795..3797 "''"
2401 NAME@3793..37982712 COMMA@3797..3798 ","
2402 IDENT@3793..3798 "trans"2713 WHITESPACE@3798..3799 " "
2403 ARGS_DESC@3798..38022714 ARG@3799..3801
2404 L_PAREN@3798..3799 "("2715 EXPR@3799..3801
2405 ARG@3799..38012716 EXPR_STRING@3799..3801
2406 EXPR_VAR@3799..38012717 STRING_SINGLE@3799..3801 "''"
2407 NAME@3799..38012718 COMMA@3801..3802 ","
2408 IDENT@3799..3801 "ch"2719 WHITESPACE@3802..3803 " "
2409 R_PAREN@3801..3802 ")"2720 ARG@3803..3806
2410 WHITESPACE@3802..3803 " "2721 EXPR@3803..3806
2411 FOR_SPEC@3803..38332722 EXPR_STRING@3803..3806
2412 FOR_KW@3803..3806 "for"2723 STRING_SINGLE@3803..3806 "':'"
2413 WHITESPACE@3806..3807 " "2724 R_PAREN@3806..3807 ")"
2414 NAME@3807..38092725 COMMA@3807..3808 ","
2415 IDENT@3807..3809 "ch"2726 WHITESPACE@3808..3812 "\n\n "
2416 WHITESPACE@3809..3810 " "2727 MEMBER_FIELD_METHOD@3812..4197
2417 IN_KW@3810..3812 "in"2728 FIELD_NAME_FIXED@3812..3830
2418 WHITESPACE@3812..3813 " "2729 NAME@3812..3830
2419 EXPR_APPLY@3813..38332730 IDENT@3812..3830 "manifestYamlStream"
2420 EXPR_INDEX@3813..38282731 PARAMS_DESC@3830..3905
2421 EXPR_VAR@3813..38162732 L_PAREN@3830..3831 "("
2422 NAME@3813..38162733 PARAM@3831..3836
2423 IDENT@3813..3816 "std"2734 DESTRUCT_FULL@3831..3836
2424 DOT@3816..3817 "."2735 NAME@3831..3836
2425 NAME@3817..38282736 IDENT@3831..3836 "value"
2426 IDENT@3817..3828 "stringChars"2737 COMMA@3836..3837 ","
2427 ARGS_DESC@3828..38332738 WHITESPACE@3837..3838 " "
2428 L_PAREN@3828..3829 "("2739 PARAM@3838..3866
2429 ARG@3829..38322740 DESTRUCT_FULL@3838..3860
2430 EXPR_VAR@3829..38322741 NAME@3838..3860
2431 NAME@3829..38322742 IDENT@3838..3860 "indent_array_in_object"
2432 IDENT@3829..3832 "str"2743 ASSIGN@3860..3861 "="
2433 R_PAREN@3832..3833 ")"2744 EXPR@3861..3866
2434 R_BRACK@3833..3834 "]"2745 EXPR_LITERAL@3861..3866
2435 R_PAREN@3834..3835 ")"2746 FALSE_KW@3861..3866 "false"
2436 COMMA@3835..3836 ","2747 COMMA@3866..3867 ","
2437 WHITESPACE@3836..3840 "\n\n "2748 WHITESPACE@3867..3868 " "
2438 MEMBER_FIELD_METHOD@3840..40542749 PARAM@3868..3887
2439 FIELD_NAME_FIXED@3840..38592750 DESTRUCT_FULL@3868..3882
2440 NAME@3840..38592751 NAME@3868..3882
2441 IDENT@3840..3859 "escapeStringDollars"2752 IDENT@3868..3882 "c_document_end"
2442 PARAMS_DESC@3859..38652753 ASSIGN@3882..3883 "="
2443 L_PAREN@3859..3860 "("2754 EXPR@3883..3887
2444 PARAM@3860..38642755 EXPR_LITERAL@3883..3887
2445 DESTRUCT_FULL@3860..38642756 TRUE_KW@3883..3887 "true"
2446 NAME@3860..38642757 COMMA@3887..3888 ","
2447 IDENT@3860..3864 "str_"2758 WHITESPACE@3888..3889 " "
2448 R_PAREN@3864..3865 ")"2759 PARAM@3889..3904
2449 COLONCOLON@3865..3867 "::"2760 DESTRUCT_FULL@3889..3899
2450 WHITESPACE@3867..3872 "\n "2761 NAME@3889..3899
2451 STMT_LOCAL@3872..39032762 IDENT@3889..3899 "quote_keys"
2452 LOCAL_KW@3872..3877 "local"2763 ASSIGN@3899..3900 "="
2453 WHITESPACE@3877..3878 " "2764 EXPR@3900..3904
2454 BIND_DESTRUCT@3878..39022765 EXPR_LITERAL@3900..3904
2455 DESTRUCT_FULL@3878..38812766 TRUE_KW@3900..3904 "true"
2456 NAME@3878..38812767 R_PAREN@3904..3905 ")"
2457 IDENT@3878..3881 "str"2768 COLONCOLON@3905..3907 "::"
2458 WHITESPACE@3881..3882 " "2769 WHITESPACE@3907..3912 "\n "
2459 ASSIGN@3882..3883 "="2770 EXPR@3912..4197
2460 WHITESPACE@3883..3884 " "2771 EXPR_IF_THEN_ELSE@3912..4197
2461 EXPR_APPLY@3884..39022772 IF_KW@3912..3914 "if"
2462 EXPR_INDEX@3884..38962773 WHITESPACE@3914..3915 " "
2463 EXPR_VAR@3884..38872774 EXPR@3915..3934
2464 NAME@3884..38872775 EXPR_UNARY@3915..3934
2465 IDENT@3884..3887 "std"2776 NOT@3915..3916 "!"
2466 DOT@3887..3888 "."2777 EXPR_VAR@3916..3919
2467 NAME@3888..38962778 NAME@3916..3919
2468 IDENT@3888..3896 "toString"2779 IDENT@3916..3919 "std"
2469 ARGS_DESC@3896..39022780 SUFFIX_INDEX@3919..3927
2470 L_PAREN@3896..3897 "("2781 DOT@3919..3920 "."
2471 ARG@3897..39012782 NAME@3920..3927
2472 EXPR_VAR@3897..39012783 IDENT@3920..3927 "isArray"
2473 NAME@3897..39012784 SUFFIX_APPLY@3927..3934
2474 IDENT@3897..3901 "str_"2785 ARGS_DESC@3927..3934
2475 R_PAREN@3901..3902 ")"2786 L_PAREN@3927..3928 "("
2476 SEMI@3902..3903 ";"2787 ARG@3928..3933
2477 WHITESPACE@3903..3908 "\n "2788 EXPR@3928..3933
2478 STMT_LOCAL@3908..39852789 EXPR_VAR@3928..3933
2479 LOCAL_KW@3908..3913 "local"2790 NAME@3928..3933
2480 WHITESPACE@3913..3914 " "2791 IDENT@3928..3933 "value"
2481 BIND_FUNCTION@3914..39842792 R_PAREN@3933..3934 ")"
2482 NAME@3914..3919
2483 IDENT@3914..3919 "trans"
2484 PARAMS_DESC@3919..3923
2485 L_PAREN@3919..3920 "("
2486 PARAM@3920..3922
2487 DESTRUCT_FULL@3920..3922
2488 NAME@3920..3922
2489 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..3984
2495 IF_KW@3932..3934 "if"
2496 WHITESPACE@3934..3935 " "2793 WHITESPACE@3934..3935 " "
2497 EXPR_BINARY@3935..39442794 THEN_KW@3935..3939 "then"
2498 LHS_EXPR@3935..39372795 WHITESPACE@3939..3946 "\n "
2499 EXPR_VAR@3935..39372796 TRUE_EXPR@3946..4014
2500 NAME@3935..39372797 EXPR@3946..4014
2501 IDENT@3935..3937 "ch"2798 EXPR_ERROR@3946..4014
2502 WHITESPACE@3937..3938 " "2799 ERROR_KW@3946..3951 "error"
2503 EQ@3938..3940 "=="2800 WHITESPACE@3951..3952 " "
2504 WHITESPACE@3940..3941 " "2801 EXPR@3952..4014
2505 EXPR_STRING@3941..39442802 EXPR_BINARY@3952..4014
2506 STRING_SINGLE@3941..3944 "'$'"2803 EXPR@3952..3996
2507 WHITESPACE@3944..3945 " "2804 EXPR_STRING@3952..3996
2508 THEN_KW@3945..3949 "then"2805 STRING_SINGLE@3952..3996 "'manifestYamlStream o ..."
2509 WHITESPACE@3949..3958 "\n "2806 WHITESPACE@3996..3997 " "
2510 TRUE_EXPR@3958..39622807 PLUS@3997..3998 "+"
2511 EXPR_STRING@3958..39622808 WHITESPACE@3998..3999 " "
2512 STRING_SINGLE@3958..3962 "'$$'"2809 EXPR@3999..4014
2513 WHITESPACE@3962..3969 "\n "2810 EXPR_VAR@3999..4002
2514 ELSE_KW@3969..3973 "else"2811 NAME@3999..4002
2515 WHITESPACE@3973..3982 "\n "2812 IDENT@3999..4002 "std"
2516 FALSE_EXPR@3982..39842813 SUFFIX_INDEX@4002..4007
2517 EXPR_VAR@3982..39842814 DOT@4002..4003 "."
2518 NAME@3982..39842815 NAME@4003..4007
2519 IDENT@3982..3984 "ch"2816 IDENT@4003..4007 "type"
2520 SEMI@3984..3985 ";"2817 SUFFIX_APPLY@4007..4014
2521 WHITESPACE@3985..3990 "\n "2818 ARGS_DESC@4007..4014
2522 EXPR_APPLY@3990..40542819 L_PAREN@4007..4008 "("
2523 EXPR_INDEX@3990..39992820 ARG@4008..4013
2524 EXPR_VAR@3990..39932821 EXPR@4008..4013
2525 NAME@3990..39932822 EXPR_VAR@4008..4013
2526 IDENT@3990..3993 "std"2823 NAME@4008..4013
2527 DOT@3993..3994 "."2824 IDENT@4008..4013 "value"
2528 NAME@3994..39992825 R_PAREN@4013..4014 ")"
2529 IDENT@3994..3999 "foldl"2826 WHITESPACE@4014..4019 "\n "
2530 ARGS_DESC@3999..40542827 ELSE_KW@4019..4023 "else"
2531 L_PAREN@3999..4000 "("2828 WHITESPACE@4023..4030 "\n "
2532 ARG@4000..40272829 FALSE_EXPR@4030..4197
2533 EXPR_FUNCTION@4000..40272830 EXPR@4030..4197
2534 FUNCTION_KW@4000..4008 "function"2831 EXPR_BINARY@4030..4197
2535 PARAMS_DESC@4008..40142832 EXPR@4030..4152
2536 L_PAREN@4008..4009 "("2833 EXPR_BINARY@4030..4152
2537 PARAM@4009..40102834 EXPR@4030..4037
2538 DESTRUCT_FULL@4009..40102835 EXPR_STRING@4030..4037
2539 NAME@4009..40102836 STRING_SINGLE@4030..4037 "'---\\n'"
2540 IDENT@4009..4010 "a"2837 WHITESPACE@4037..4038 " "
2541 COMMA@4010..4011 ","2838 PLUS@4038..4039 "+"
2542 WHITESPACE@4011..4012 " "2839 WHITESPACE@4039..4040 " "
2543 PARAM@4012..40132840 EXPR@4040..4152
2544 DESTRUCT_FULL@4012..40132841 EXPR_VAR@4040..4043
2545 NAME@4012..40132842 NAME@4040..4043
2546 IDENT@4012..4013 "b"2843 IDENT@4040..4043 "std"
2547 R_PAREN@4013..4014 ")"2844 SUFFIX_INDEX@4043..4048
2548 WHITESPACE@4014..4015 " "2845 DOT@4043..4044 "."
2549 EXPR_BINARY@4015..40272846 NAME@4044..4048
2550 LHS_EXPR@4015..40162847 IDENT@4044..4048 "join"
2551 EXPR_VAR@4015..40162848 SUFFIX_APPLY@4048..4152
2552 NAME@4015..40162849 ARGS_DESC@4048..4152
2553 IDENT@4015..4016 "a"2850 L_PAREN@4048..4049 "("
2554 WHITESPACE@4016..4017 " "2851 WHITESPACE@4049..4058 "\n "
2555 PLUS@4017..4018 "+"2852 ARG@4058..4067
2556 WHITESPACE@4018..4019 " "2853 EXPR@4058..4067
2557 EXPR_APPLY@4019..40272854 EXPR_STRING@4058..4067
2558 EXPR_VAR@4019..40242855 STRING_SINGLE@4058..4067 "'\\n---\\n'"
2559 NAME@4019..40242856 COMMA@4067..4068 ","
2560 IDENT@4019..4024 "trans"2857 WHITESPACE@4068..4069 " "
2561 ARGS_DESC@4024..40272858 ARG@4069..4144
2562 L_PAREN@4024..4025 "("2859 EXPR@4069..4144
2563 ARG@4025..40262860 EXPR_ARRAY_COMP@4069..4144
2564 EXPR_VAR@4025..40262861 L_BRACK@4069..4070 "["
2565 NAME@4025..40262862 EXPR@4070..4128
2566 IDENT@4025..4026 "b"2863 EXPR_VAR@4070..4073
2567 R_PAREN@4026..4027 ")"2864 NAME@4070..4073
2568 COMMA@4027..4028 ","2865 IDENT@4070..4073 "std"
2569 WHITESPACE@4028..4029 " "2866 SUFFIX_INDEX@4073..4089
2570 ARG@4029..40492867 DOT@4073..4074 "."
2571 EXPR_APPLY@4029..40492868 NAME@4074..4089
2572 EXPR_INDEX@4029..40442869 IDENT@4074..4089 "manifestYamlDoc"
2573 EXPR_VAR@4029..40322870 SUFFIX_APPLY@4089..4128
2574 NAME@4029..40322871 ARGS_DESC@4089..4128
2575 IDENT@4029..4032 "std"2872 L_PAREN@4089..4090 "("
2576 DOT@4032..4033 "."2873 ARG@4090..4091
2577 NAME@4033..40442874 EXPR@4090..4091
2578 IDENT@4033..4044 "stringChars"2875 EXPR_VAR@4090..4091
2579 ARGS_DESC@4044..40492876 NAME@4090..4091
2580 L_PAREN@4044..4045 "("2877 IDENT@4090..4091 "e"
2581 ARG@4045..40482878 COMMA@4091..4092 ","
2582 EXPR_VAR@4045..40482879 WHITESPACE@4092..4093 " "
2583 NAME@4045..40482880 ARG@4093..4115
2584 IDENT@4045..4048 "str"2881 EXPR@4093..4115
2585 R_PAREN@4048..4049 ")"2882 EXPR_VAR@4093..4115
2586 COMMA@4049..4050 ","2883 NAME@4093..4115
2587 WHITESPACE@4050..4051 " "2884 IDENT@4093..4115 "indent_array_in_object"
2588 ARG@4051..40532885 COMMA@4115..4116 ","
2589 EXPR_STRING@4051..40532886 WHITESPACE@4116..4117 " "
2590 STRING_SINGLE@4051..4053 "''"2887 ARG@4117..4127
2591 R_PAREN@4053..4054 ")"2888 EXPR@4117..4127
2592 COMMA@4054..4055 ","2889 EXPR_VAR@4117..4127
2593 WHITESPACE@4055..4059 "\n\n "2890 NAME@4117..4127
2594 MEMBER_BIND_STMT@4059..41742891 IDENT@4117..4127 "quote_keys"
2595 OBJ_LOCAL@4059..41742892 R_PAREN@4127..4128 ")"
2596 LOCAL_KW@4059..4064 "local"2893 WHITESPACE@4128..4129 " "
2597 WHITESPACE@4064..4065 " "2894 FOR_SPEC@4129..4143
2598 BIND_DESTRUCT@4065..41742895 FOR_KW@4129..4132 "for"
2599 DESTRUCT_FULL@4065..40762896 WHITESPACE@4132..4133 " "
2600 NAME@4065..40762897 DESTRUCT_FULL@4133..4134
2601 IDENT@4065..4076 "xml_escapes"2898 NAME@4133..4134
2602 WHITESPACE@4076..4077 " "2899 IDENT@4133..4134 "e"
2603 ASSIGN@4077..4078 "="2900 WHITESPACE@4134..4135 " "
2604 WHITESPACE@4078..4079 " "2901 IN_KW@4135..4137 "in"
2605 EXPR_OBJECT@4079..41742902 WHITESPACE@4137..4138 " "
2606 OBJ_BODY_MEMBER_LIST@4079..41742903 EXPR@4138..4143
2607 L_BRACE@4079..4080 "{"2904 EXPR_VAR@4138..4143
2608 WHITESPACE@4080..4085 "\n "2905 NAME@4138..4143
2609 MEMBER_FIELD_NORMAL@4085..40962906 IDENT@4138..4143 "value"
2610 FIELD_NAME_FIXED@4085..40882907 R_BRACK@4143..4144 "]"
2611 STRING_SINGLE@4085..4088 "'<'"2908 WHITESPACE@4144..4151 "\n "
2612 COLON@4088..4089 ":"2909 R_PAREN@4151..4152 ")"
2613 WHITESPACE@4089..4090 " "2910 WHITESPACE@4152..4153 " "
2614 EXPR_STRING@4090..40962911 PLUS@4153..4154 "+"
2615 STRING_SINGLE@4090..4096 "'&lt;'"2912 WHITESPACE@4154..4155 " "
2616 COMMA@4096..4097 ","2913 EXPR@4155..4197
2617 WHITESPACE@4097..4102 "\n "2914 EXPR_IF_THEN_ELSE@4155..4197
2618 MEMBER_FIELD_NORMAL@4102..41132915 IF_KW@4155..4157 "if"
2619 FIELD_NAME_FIXED@4102..41052916 WHITESPACE@4157..4158 " "
2620 STRING_SINGLE@4102..4105 "'>'"2917 EXPR@4158..4172
2621 COLON@4105..4106 ":"2918 EXPR_VAR@4158..4172
2622 WHITESPACE@4106..4107 " "2919 NAME@4158..4172
2623 EXPR_STRING@4107..41132920 IDENT@4158..4172 "c_document_end"
2624 STRING_SINGLE@4107..4113 "'&gt;'"2921 WHITESPACE@4172..4173 " "
2625 COMMA@4113..4114 ","2922 THEN_KW@4173..4177 "then"
2626 WHITESPACE@4114..4119 "\n "2923 WHITESPACE@4177..4178 " "
2627 MEMBER_FIELD_NORMAL@4119..41312924 TRUE_EXPR@4178..4187
2628 FIELD_NAME_FIXED@4119..41222925 EXPR@4178..4187
2629 STRING_SINGLE@4119..4122 "'&'"2926 EXPR_STRING@4178..4187
2630 COLON@4122..4123 ":"2927 STRING_SINGLE@4178..4187 "'\\n...\\n'"
2631 WHITESPACE@4123..4124 " "2928 WHITESPACE@4187..4188 " "
2632 EXPR_STRING@4124..41312929 ELSE_KW@4188..4192 "else"
2633 STRING_SINGLE@4124..4131 "'&amp;'"2930 WHITESPACE@4192..4193 " "
2634 COMMA@4131..4132 ","2931 FALSE_EXPR@4193..4197
2635 WHITESPACE@4132..4137 "\n "2932 EXPR@4193..4197
2636 MEMBER_FIELD_NORMAL@4137..41502933 EXPR_STRING@4193..4197
2637 FIELD_NAME_FIXED@4137..41402934 STRING_SINGLE@4193..4197 "'\\n'"
2638 STRING_SINGLE@4137..4140 "'\"'"2935 COMMA@4197..4198 ","
2639 COLON@4140..4141 ":"2936 WHITESPACE@4198..4202 "\n\n "
2640 WHITESPACE@4141..4142 " "2937 MEMBER_FIELD_METHOD@4202..4858
2641 EXPR_STRING@4142..41502938 FIELD_NAME_FIXED@4202..4216
2642 STRING_SINGLE@4142..4150 "'&quot;'"2939 NAME@4202..4216
2643 COMMA@4150..4151 ","2940 IDENT@4202..4216 "manifestPython"
2644 WHITESPACE@4151..4156 "\n "2941 PARAMS_DESC@4216..4219
2645 MEMBER_FIELD_NORMAL@4156..41692942 L_PAREN@4216..4217 "("
2646 FIELD_NAME_FIXED@4156..41592943 PARAM@4217..4218
2647 STRING_DOUBLE@4156..4159 "\"'\""2944 DESTRUCT_FULL@4217..4218
2648 COLON@4159..4160 ":"2945 NAME@4217..4218
2649 WHITESPACE@4160..4161 " "2946 IDENT@4217..4218 "v"
2650 EXPR_STRING@4161..41692947 R_PAREN@4218..4219 ")"
2651 STRING_SINGLE@4161..4169 "'&apos;'"2948 COLONCOLON@4219..4221 "::"
2652 COMMA@4169..4170 ","2949 WHITESPACE@4221..4226 "\n "
2653 WHITESPACE@4170..4173 "\n "2950 EXPR@4226..4858
2654 R_BRACE@4173..4174 "}"2951 EXPR_IF_THEN_ELSE@4226..4858
2655 COMMA@4174..4175 ","2952 IF_KW@4226..4228 "if"
2656 WHITESPACE@4175..4179 "\n\n "2953 WHITESPACE@4228..4229 " "
2657 MEMBER_FIELD_METHOD@4179..43182954 EXPR@4229..4244
2658 FIELD_NAME_FIXED@4179..41942955 EXPR_VAR@4229..4232
2659 NAME@4179..41942956 NAME@4229..4232
2660 IDENT@4179..4194 "escapeStringXML"2957 IDENT@4229..4232 "std"
2661 PARAMS_DESC@4194..42002958 SUFFIX_INDEX@4232..4241
2662 L_PAREN@4194..4195 "("2959 DOT@4232..4233 "."
2663 PARAM@4195..41992960 NAME@4233..4241
2664 DESTRUCT_FULL@4195..41992961 IDENT@4233..4241 "isObject"
2665 NAME@4195..41992962 SUFFIX_APPLY@4241..4244
2666 IDENT@4195..4199 "str_"2963 ARGS_DESC@4241..4244
2667 R_PAREN@4199..4200 ")"2964 L_PAREN@4241..4242 "("
2668 COLONCOLON@4200..4202 "::"2965 ARG@4242..4243
2669 WHITESPACE@4202..4207 "\n "2966 EXPR@4242..4243
2670 STMT_LOCAL@4207..42382967 EXPR_VAR@4242..4243
2671 LOCAL_KW@4207..4212 "local"2968 NAME@4242..4243
2672 WHITESPACE@4212..4213 " "2969 IDENT@4242..4243 "v"
2673 BIND_DESTRUCT@4213..42372970 R_PAREN@4243..4244 ")"
2674 DESTRUCT_FULL@4213..42162971 WHITESPACE@4244..4245 " "
2675 NAME@4213..42162972 THEN_KW@4245..4249 "then"
2676 IDENT@4213..4216 "str"2973 WHITESPACE@4249..4256 "\n "
2677 WHITESPACE@4216..4217 " "2974 TRUE_EXPR@4256..4431
2678 ASSIGN@4217..4218 "="2975 EXPR@4256..4431
2679 WHITESPACE@4218..4219 " "2976 STMT_LOCAL@4256..4391
2680 EXPR_APPLY@4219..42372977 LOCAL_KW@4256..4261 "local"
2681 EXPR_INDEX@4219..42312978 WHITESPACE@4261..4262 " "
2682 EXPR_VAR@4219..42222979 BIND_DESTRUCT@4262..4390
2683 NAME@4219..42222980 DESTRUCT_FULL@4262..4268
2684 IDENT@4219..4222 "std"2981 NAME@4262..4268
2685 DOT@4222..4223 "."2982 IDENT@4262..4268 "fields"
2686 NAME@4223..42312983 WHITESPACE@4268..4269 " "
2687 IDENT@4223..4231 "toString"2984 ASSIGN@4269..4270 "="
2688 ARGS_DESC@4231..42372985 WHITESPACE@4270..4271 " "
2689 L_PAREN@4231..4232 "("2986 EXPR@4271..4390
2690 ARG@4232..42362987 EXPR_ARRAY_COMP@4271..4390
2691 EXPR_VAR@4232..42362988 L_BRACK@4271..4272 "["
2692 NAME@4232..42362989 WHITESPACE@4272..4281 "\n "
2693 IDENT@4232..4236 "str_"2990 EXPR@4281..4345
2694 R_PAREN@4236..4237 ")"2991 EXPR_BINARY@4281..4345
2695 SEMI@4237..4238 ";"2992 EXPR@4281..4289
2696 WHITESPACE@4238..4243 "\n "2993 EXPR_STRING@4281..4289
2697 EXPR_APPLY@4243..43182994 STRING_SINGLE@4281..4289 "'%s: %s'"
2698 EXPR_INDEX@4243..42512995 WHITESPACE@4289..4290 " "
2699 EXPR_VAR@4243..42462996 MODULO@4290..4291 "%"
2700 NAME@4243..42462997 WHITESPACE@4291..4292 " "
2701 IDENT@4243..4246 "std"2998 EXPR@4292..4345
2702 DOT@4246..4247 "."2999 EXPR_ARRAY@4292..4345
2703 NAME@4247..42513000 L_BRACK@4292..4293 "["
2704 IDENT@4247..4251 "join"3001 EXPR@4293..4318
2705 ARGS_DESC@4251..43183002 EXPR_VAR@4293..4296
2706 L_PAREN@4251..4252 "("3003 NAME@4293..4296
2707 ARG@4252..42543004 IDENT@4293..4296 "std"
2708 EXPR_STRING@4252..42543005 SUFFIX_INDEX@4296..4315
2709 STRING_SINGLE@4252..4254 "''"3006 DOT@4296..4297 "."
2710 COMMA@4254..4255 ","3007 NAME@4297..4315
2711 WHITESPACE@4255..4256 " "3008 IDENT@4297..4315 "escapeStringPython"
2712 ARG@4256..43173009 SUFFIX_APPLY@4315..4318
2713 EXPR_ARRAY_COMP@4256..43173010 ARGS_DESC@4315..4318
2714 L_BRACK@4256..4257 "["3011 L_PAREN@4315..4316 "("
2715 EXPR_APPLY@4257..42853012 ARG@4316..4317
2716 EXPR_INDEX@4257..42643013 EXPR@4316..4317
2717 EXPR_VAR@4257..42603014 EXPR_VAR@4316..4317
2718 NAME@4257..42603015 NAME@4316..4317
2719 IDENT@4257..4260 "std"3016 IDENT@4316..4317 "k"
2720 DOT@4260..4261 "."3017 R_PAREN@4317..4318 ")"
2721 NAME@4261..42643018 COMMA@4318..4319 ","
2722 IDENT@4261..4264 "get"3019 WHITESPACE@4319..4320 " "
2723 ARGS_DESC@4264..42853020 EXPR@4320..4344
2724 L_PAREN@4264..4265 "("3021 EXPR_VAR@4320..4323
2725 ARG@4265..42763022 NAME@4320..4323
2726 EXPR_VAR@4265..42763023 IDENT@4320..4323 "std"
2727 NAME@4265..42763024 SUFFIX_INDEX@4323..4338
2728 IDENT@4265..4276 "xml_escapes"3025 DOT@4323..4324 "."
2729 COMMA@4276..4277 ","3026 NAME@4324..4338
2730 WHITESPACE@4277..4278 " "3027 IDENT@4324..4338 "manifestPython"
2731 ARG@4278..42803028 SUFFIX_APPLY@4338..4344
2732 EXPR_VAR@4278..42803029 ARGS_DESC@4338..4344
2733 NAME@4278..42803030 L_PAREN@4338..4339 "("
2734 IDENT@4278..4280 "ch"3031 ARG@4339..4343
2735 COMMA@4280..4281 ","3032 EXPR@4339..4343
2736 WHITESPACE@4281..4282 " "3033 EXPR_VAR@4339..4340
2737 ARG@4282..42843034 NAME@4339..4340
2738 EXPR_VAR@4282..42843035 IDENT@4339..4340 "v"
2739 NAME@4282..42843036 SUFFIX_INDEX_EXPR@4340..4343
2740 IDENT@4282..4284 "ch"3037 L_BRACK@4340..4341 "["
2741 R_PAREN@4284..4285 ")"3038 EXPR@4341..4342
2742 WHITESPACE@4285..4286 " "3039 EXPR_VAR@4341..4342
2743 FOR_SPEC@4286..43163040 NAME@4341..4342
2744 FOR_KW@4286..4289 "for"3041 IDENT@4341..4342 "k"
2745 WHITESPACE@4289..4290 " "3042 R_BRACK@4342..4343 "]"
2746 NAME@4290..42923043 R_PAREN@4343..4344 ")"
2747 IDENT@4290..4292 "ch"3044 R_BRACK@4344..4345 "]"
2748 WHITESPACE@4292..4293 " "3045 WHITESPACE@4345..4354 "\n "
2749 IN_KW@4293..4295 "in"3046 FOR_SPEC@4354..4382
2750 WHITESPACE@4295..4296 " "3047 FOR_KW@4354..4357 "for"
2751 EXPR_APPLY@4296..43163048 WHITESPACE@4357..4358 " "
2752 EXPR_INDEX@4296..43113049 DESTRUCT_FULL@4358..4359
2753 EXPR_VAR@4296..42993050 NAME@4358..4359
2754 NAME@4296..42993051 IDENT@4358..4359 "k"
2755 IDENT@4296..4299 "std"3052 WHITESPACE@4359..4360 " "
2756 DOT@4299..4300 "."3053 IN_KW@4360..4362 "in"
2757 NAME@4300..43113054 WHITESPACE@4362..4363 " "
2758 IDENT@4300..4311 "stringChars"3055 EXPR@4363..4382
2759 ARGS_DESC@4311..43163056 EXPR_VAR@4363..4366
2760 L_PAREN@4311..4312 "("3057 NAME@4363..4366
2761 ARG@4312..43153058 IDENT@4363..4366 "std"
2762 EXPR_VAR@4312..43153059 SUFFIX_INDEX@4366..4379
2763 NAME@4312..43153060 DOT@4366..4367 "."
2764 IDENT@4312..4315 "str"3061 NAME@4367..4379
2765 R_PAREN@4315..4316 ")"3062 IDENT@4367..4379 "objectFields"
2766 R_BRACK@4316..4317 "]"3063 SUFFIX_APPLY@4379..4382
2767 R_PAREN@4317..4318 ")"3064 ARGS_DESC@4379..4382
2768 COMMA@4318..4319 ","3065 L_PAREN@4379..4380 "("
2769 WHITESPACE@4319..4323 "\n\n "3066 ARG@4380..4381
2770 MEMBER_FIELD_METHOD@4323..43893067 EXPR@4380..4381
2771 FIELD_NAME_FIXED@4323..43353068 EXPR_VAR@4380..4381
2772 NAME@4323..43353069 NAME@4380..4381
2773 IDENT@4323..4335 "manifestJson"3070 IDENT@4380..4381 "v"
2774 PARAMS_DESC@4335..43423071 R_PAREN@4381..4382 ")"
2775 L_PAREN@4335..4336 "("3072 WHITESPACE@4382..4389 "\n "
2776 PARAM@4336..43413073 R_BRACK@4389..4390 "]"
2777 DESTRUCT_FULL@4336..43413074 SEMI@4390..4391 ";"
2778 NAME@4336..43413075 WHITESPACE@4391..4398 "\n "
2779 IDENT@4336..4341 "value"3076 EXPR_BINARY@4398..4431
2780 R_PAREN@4341..4342 ")"3077 EXPR@4398..4404
2781 COLONCOLON@4342..4344 "::"3078 EXPR_STRING@4398..4404
2782 WHITESPACE@4344..4345 " "3079 STRING_SINGLE@4398..4404 "'{%s}'"
2783 EXPR_APPLY@4345..43893080 WHITESPACE@4404..4405 " "
2784 EXPR_INDEX@4345..43633081 MODULO@4405..4406 "%"
2785 EXPR_VAR@4345..43483082 WHITESPACE@4406..4407 " "
2786 NAME@4345..43483083 EXPR@4407..4431
2787 IDENT@4345..4348 "std"3084 EXPR_ARRAY@4407..4431
2788 DOT@4348..4349 "."3085 L_BRACK@4407..4408 "["
2789 NAME@4349..43633086 EXPR@4408..4430
2790 IDENT@4349..4363 "manifestJsonEx"3087 EXPR_VAR@4408..4411
2791 ARGS_DESC@4363..43893088 NAME@4408..4411
2792 L_PAREN@4363..4364 "("3089 IDENT@4408..4411 "std"
2793 ARG@4364..43693090 SUFFIX_INDEX@4411..4416
2794 EXPR_VAR@4364..43693091 DOT@4411..4412 "."
2795 NAME@4364..43693092 NAME@4412..4416
2796 IDENT@4364..4369 "value"3093 IDENT@4412..4416 "join"
2797 COMMA@4369..4370 ","3094 SUFFIX_APPLY@4416..4430
2798 WHITESPACE@4370..4371 " "3095 ARGS_DESC@4416..4430
2799 ARG@4371..43773096 L_PAREN@4416..4417 "("
2800 EXPR_STRING@4371..43773097 ARG@4417..4421
2801 STRING_SINGLE@4371..4377 "' '"3098 EXPR@4417..4421
2802 R_PAREN@4377..4378 ")"3099 EXPR_STRING@4417..4421
2803 WHITESPACE@4378..4379 " "3100 STRING_SINGLE@4417..4421 "', '"
2804 TAILSTRICT_KW@4379..4389 "tailstrict"3101 COMMA@4421..4422 ","
2805 COMMA@4389..4390 ","3102 WHITESPACE@4422..4423 " "
2806 WHITESPACE@4390..4394 "\n\n "3103 ARG@4423..4429
2807 MEMBER_FIELD_METHOD@4394..44623104 EXPR@4423..4429
2808 FIELD_NAME_FIXED@4394..44143105 EXPR_VAR@4423..4429
2809 NAME@4394..44143106 NAME@4423..4429
2810 IDENT@4394..4414 "manifestJsonMinified"3107 IDENT@4423..4429 "fields"
2811 PARAMS_DESC@4414..44213108 R_PAREN@4429..4430 ")"
2812 L_PAREN@4414..4415 "("3109 R_BRACK@4430..4431 "]"
2813 PARAM@4415..44203110 WHITESPACE@4431..4436 "\n "
2814 DESTRUCT_FULL@4415..44203111 ELSE_KW@4436..4440 "else"
2815 NAME@4415..44203112 WHITESPACE@4440..4441 " "
2816 IDENT@4415..4420 "value"3113 FALSE_EXPR@4441..4858
2817 R_PAREN@4420..4421 ")"3114 EXPR@4441..4858
2818 COLONCOLON@4421..4423 "::"3115 EXPR_IF_THEN_ELSE@4441..4858
2819 WHITESPACE@4423..4424 " "3116 IF_KW@4441..4443 "if"
2820 EXPR_APPLY@4424..44623117 WHITESPACE@4443..4444 " "
2821 EXPR_INDEX@4424..44423118 EXPR@4444..4458
2822 EXPR_VAR@4424..44273119 EXPR_VAR@4444..4447
2823 NAME@4424..44273120 NAME@4444..4447
2824 IDENT@4424..4427 "std"3121 IDENT@4444..4447 "std"
2825 DOT@4427..4428 "."3122 SUFFIX_INDEX@4447..4455
2826 NAME@4428..44423123 DOT@4447..4448 "."
2827 IDENT@4428..4442 "manifestJsonEx"3124 NAME@4448..4455
2828 ARGS_DESC@4442..44623125 IDENT@4448..4455 "isArray"
2829 L_PAREN@4442..4443 "("3126 SUFFIX_APPLY@4455..4458
2830 ARG@4443..44483127 ARGS_DESC@4455..4458
2831 EXPR_VAR@4443..44483128 L_PAREN@4455..4456 "("
2832 NAME@4443..44483129 ARG@4456..4457
2833 IDENT@4443..4448 "value"3130 EXPR@4456..4457
2834 COMMA@4448..4449 ","3131 EXPR_VAR@4456..4457
2835 WHITESPACE@4449..4450 " "3132 NAME@4456..4457
2836 ARG@4450..44523133 IDENT@4456..4457 "v"
2837 EXPR_STRING@4450..44523134 R_PAREN@4457..4458 ")"
2838 STRING_SINGLE@4450..4452 "''"3135 WHITESPACE@4458..4459 " "
2839 COMMA@4452..4453 ","3136 THEN_KW@4459..4463 "then"
2840 WHITESPACE@4453..4454 " "3137 WHITESPACE@4463..4470 "\n "
2841 ARG@4454..44563138 TRUE_EXPR@4470..4533
2842 EXPR_STRING@4454..44563139 EXPR@4470..4533
2843 STRING_SINGLE@4454..4456 "''"3140 EXPR_BINARY@4470..4533
2844 COMMA@4456..4457 ","3141 EXPR@4470..4476
2845 WHITESPACE@4457..4458 " "3142 EXPR_STRING@4470..4476
2846 ARG@4458..44613143 STRING_SINGLE@4470..4476 "'[%s]'"
2847 EXPR_STRING@4458..44613144 WHITESPACE@4476..4477 " "
2848 STRING_SINGLE@4458..4461 "':'"3145 MODULO@4477..4478 "%"
2849 R_PAREN@4461..4462 ")"3146 WHITESPACE@4478..4479 " "
2850 COMMA@4462..4463 ","3147 EXPR@4479..4533
2851 WHITESPACE@4463..4467 "\n\n "3148 EXPR_ARRAY@4479..4533
2852 MEMBER_FIELD_METHOD@4467..48523149 L_BRACK@4479..4480 "["
2853 FIELD_NAME_FIXED@4467..44853150 EXPR@4480..4532
2854 NAME@4467..44853151 EXPR_VAR@4480..4483
2855 IDENT@4467..4485 "manifestYamlStream"3152 NAME@4480..4483
2856 PARAMS_DESC@4485..45603153 IDENT@4480..4483 "std"
2857 L_PAREN@4485..4486 "("3154 SUFFIX_INDEX@4483..4488
2858 PARAM@4486..44913155 DOT@4483..4484 "."
2859 DESTRUCT_FULL@4486..44913156 NAME@4484..4488
2860 NAME@4486..44913157 IDENT@4484..4488 "join"
2861 IDENT@4486..4491 "value"3158 SUFFIX_APPLY@4488..4532
2862 COMMA@4491..4492 ","3159 ARGS_DESC@4488..4532
2863 WHITESPACE@4492..4493 " "3160 L_PAREN@4488..4489 "("
2864 PARAM@4493..45213161 ARG@4489..4493
2865 DESTRUCT_FULL@4493..45153162 EXPR@4489..4493
2866 NAME@4493..45153163 EXPR_STRING@4489..4493
2867 IDENT@4493..4515 "indent_array_in_object"3164 STRING_SINGLE@4489..4493 "', '"
2868 ASSIGN@4515..4516 "="3165 COMMA@4493..4494 ","
2869 EXPR_LITERAL@4516..45213166 WHITESPACE@4494..4495 " "
2870 FALSE_KW@4516..4521 "false"3167 ARG@4495..4531
2871 COMMA@4521..4522 ","3168 EXPR@4495..4531
2872 WHITESPACE@4522..4523 " "3169 EXPR_ARRAY_COMP@4495..4531
2873 PARAM@4523..45423170 L_BRACK@4495..4496 "["
2874 DESTRUCT_FULL@4523..45373171 EXPR@4496..4518
2875 NAME@4523..45373172 EXPR_VAR@4496..4499
2876 IDENT@4523..4537 "c_document_end"3173 NAME@4496..4499
2877 ASSIGN@4537..4538 "="3174 IDENT@4496..4499 "std"
2878 EXPR_LITERAL@4538..45423175 SUFFIX_INDEX@4499..4514
2879 TRUE_KW@4538..4542 "true"3176 DOT@4499..4500 "."
2880 COMMA@4542..4543 ","3177 NAME@4500..4514
2881 WHITESPACE@4543..4544 " "3178 IDENT@4500..4514 "manifestPython"
2882 PARAM@4544..45593179 SUFFIX_APPLY@4514..4518
2883 DESTRUCT_FULL@4544..45543180 ARGS_DESC@4514..4518
2884 NAME@4544..45543181 L_PAREN@4514..4515 "("
2885 IDENT@4544..4554 "quote_keys"3182 ARG@4515..4517
2886 ASSIGN@4554..4555 "="3183 EXPR@4515..4517
2887 EXPR_LITERAL@4555..45593184 EXPR_VAR@4515..4517
2888 TRUE_KW@4555..4559 "true"3185 NAME@4515..4517
2889 R_PAREN@4559..4560 ")"3186 IDENT@4515..4517 "v2"
2890 COLONCOLON@4560..4562 "::"3187 R_PAREN@4517..4518 ")"
2891 WHITESPACE@4562..4567 "\n "3188 WHITESPACE@4518..4519 " "
2892 EXPR_IF_THEN_ELSE@4567..48523189 FOR_SPEC@4519..4530
2893 IF_KW@4567..4569 "if"3190 FOR_KW@4519..4522 "for"
2894 WHITESPACE@4569..4570 " "3191 WHITESPACE@4522..4523 " "
2895 EXPR_UNARY@4570..45893192 DESTRUCT_FULL@4523..4525
2896 NOT@4570..4571 "!"3193 NAME@4523..4525
2897 EXPR_APPLY@4571..45893194 IDENT@4523..4525 "v2"
2898 EXPR_INDEX@4571..45823195 WHITESPACE@4525..4526 " "
2899 EXPR_VAR@4571..45743196 IN_KW@4526..4528 "in"
2900 NAME@4571..45743197 WHITESPACE@4528..4529 " "
2901 IDENT@4571..4574 "std"3198 EXPR@4529..4530
2902 DOT@4574..4575 "."3199 EXPR_VAR@4529..4530
2903 NAME@4575..45823200 NAME@4529..4530
2904 IDENT@4575..4582 "isArray"3201 IDENT@4529..4530 "v"
2905 ARGS_DESC@4582..45893202 R_BRACK@4530..4531 "]"
2906 L_PAREN@4582..4583 "("3203 R_PAREN@4531..4532 ")"
2907 ARG@4583..45883204 R_BRACK@4532..4533 "]"
2908 EXPR_VAR@4583..45883205 WHITESPACE@4533..4538 "\n "
2909 NAME@4583..45883206 ELSE_KW@4538..4542 "else"
2910 IDENT@4583..4588 "value"3207 WHITESPACE@4542..4543 " "
2911 R_PAREN@4588..4589 ")"3208 FALSE_EXPR@4543..4858
2912 WHITESPACE@4589..4590 " "3209 EXPR@4543..4858
2913 THEN_KW@4590..4594 "then"3210 EXPR_IF_THEN_ELSE@4543..4858
2914 WHITESPACE@4594..4601 "\n "3211 IF_KW@4543..4545 "if"
2915 TRUE_EXPR@4601..46693212 WHITESPACE@4545..4546 " "
2916 EXPR_ERROR@4601..46693213 EXPR@4546..4561
2917 ERROR_KW@4601..4606 "error"3214 EXPR_VAR@4546..4549
2918 WHITESPACE@4606..4607 " "3215 NAME@4546..4549
2919 EXPR_BINARY@4607..46693216 IDENT@4546..4549 "std"
2920 LHS_EXPR@4607..46513217 SUFFIX_INDEX@4549..4558
2921 EXPR_STRING@4607..46513218 DOT@4549..4550 "."
2922 STRING_SINGLE@4607..4651 "'manifestYamlStream o ..."3219 NAME@4550..4558
2923 WHITESPACE@4651..4652 " "3220 IDENT@4550..4558 "isString"
2924 PLUS@4652..4653 "+"3221 SUFFIX_APPLY@4558..4561
2925 WHITESPACE@4653..4654 " "3222 ARGS_DESC@4558..4561
2926 EXPR_APPLY@4654..46693223 L_PAREN@4558..4559 "("
2927 EXPR_INDEX@4654..46623224 ARG@4559..4560
2928 EXPR_VAR@4654..46573225 EXPR@4559..4560
2929 NAME@4654..46573226 EXPR_VAR@4559..4560
2930 IDENT@4654..4657 "std"3227 NAME@4559..4560
2931 DOT@4657..4658 "."3228 IDENT@4559..4560 "v"
2932 NAME@4658..46623229 R_PAREN@4560..4561 ")"
2933 IDENT@4658..4662 "type"3230 WHITESPACE@4561..4562 " "
2934 ARGS_DESC@4662..46693231 THEN_KW@4562..4566 "then"
2935 L_PAREN@4662..4663 "("3232 WHITESPACE@4566..4573 "\n "
2936 ARG@4663..46683233 TRUE_EXPR@4573..4607
2937 EXPR_VAR@4663..46683234 EXPR@4573..4607
2938 NAME@4663..46683235 EXPR_BINARY@4573..4607
2939 IDENT@4663..4668 "value"3236 EXPR@4573..4577
2940 R_PAREN@4668..4669 ")"3237 EXPR_STRING@4573..4577
2941 WHITESPACE@4669..4674 "\n "3238 STRING_SINGLE@4573..4577 "'%s'"
2942 ELSE_KW@4674..4678 "else"3239 WHITESPACE@4577..4578 " "
2943 WHITESPACE@4678..4685 "\n "3240 MODULO@4578..4579 "%"
2944 FALSE_EXPR@4685..48523241 WHITESPACE@4579..4580 " "
2945 EXPR_BINARY@4685..48523242 EXPR@4580..4607
2946 LHS_EXPR@4685..48073243 EXPR_ARRAY@4580..4607
2947 EXPR_BINARY@4685..48073244 L_BRACK@4580..4581 "["
2948 LHS_EXPR@4685..46923245 EXPR@4581..4606
2949 EXPR_STRING@4685..46923246 EXPR_VAR@4581..4584
2950 STRING_SINGLE@4685..4692 "'---\\n'"3247 NAME@4581..4584
2951 WHITESPACE@4692..4693 " "3248 IDENT@4581..4584 "std"
2952 PLUS@4693..4694 "+"3249 SUFFIX_INDEX@4584..4603
2953 WHITESPACE@4694..4695 " "3250 DOT@4584..4585 "."
2954 EXPR_APPLY@4695..48073251 NAME@4585..4603
2955 EXPR_INDEX@4695..47033252 IDENT@4585..4603 "escapeStringPython"
2956 EXPR_VAR@4695..46983253 SUFFIX_APPLY@4603..4606
2957 NAME@4695..46983254 ARGS_DESC@4603..4606
2958 IDENT@4695..4698 "std"3255 L_PAREN@4603..4604 "("
2959 DOT@4698..4699 "."3256 ARG@4604..4605
2960 NAME@4699..47033257 EXPR@4604..4605
2961 IDENT@4699..4703 "join"3258 EXPR_VAR@4604..4605
2962 ARGS_DESC@4703..48073259 NAME@4604..4605
2963 L_PAREN@4703..4704 "("3260 IDENT@4604..4605 "v"
2964 WHITESPACE@4704..4713 "\n "3261 R_PAREN@4605..4606 ")"
2965 ARG@4713..47223262 R_BRACK@4606..4607 "]"
2966 EXPR_STRING@4713..47223263 WHITESPACE@4607..4612 "\n "
2967 STRING_SINGLE@4713..4722 "'\\n---\\n'"3264 ELSE_KW@4612..4616 "else"
2968 COMMA@4722..4723 ","3265 WHITESPACE@4616..4617 " "
2969 WHITESPACE@4723..4724 " "3266 FALSE_EXPR@4617..4858
2970 ARG@4724..47993267 EXPR@4617..4858
2971 EXPR_ARRAY_COMP@4724..47993268 EXPR_IF_THEN_ELSE@4617..4858
2972 L_BRACK@4724..4725 "["3269 IF_KW@4617..4619 "if"
2973 EXPR_APPLY@4725..47833270 WHITESPACE@4619..4620 " "
2974 EXPR_INDEX@4725..47443271 EXPR@4620..4637
2975 EXPR_VAR@4725..47283272 EXPR_VAR@4620..4623
2976 NAME@4725..47283273 NAME@4620..4623
2977 IDENT@4725..4728 "std"3274 IDENT@4620..4623 "std"
2978 DOT@4728..4729 "."3275 SUFFIX_INDEX@4623..4634
2979 NAME@4729..47443276 DOT@4623..4624 "."
2980 IDENT@4729..4744 "manifestYamlDoc"3277 NAME@4624..4634
2981 ARGS_DESC@4744..47833278 IDENT@4624..4634 "isFunction"
2982 L_PAREN@4744..4745 "("3279 SUFFIX_APPLY@4634..4637
2983 ARG@4745..47463280 ARGS_DESC@4634..4637
2984 EXPR_VAR@4745..47463281 L_PAREN@4634..4635 "("
2985 NAME@4745..47463282 ARG@4635..4636
2986 IDENT@4745..4746 "e"3283 EXPR@4635..4636
2987 COMMA@4746..4747 ","3284 EXPR_VAR@4635..4636
2988 WHITESPACE@4747..4748 " "3285 NAME@4635..4636
2989 ARG@4748..47703286 IDENT@4635..4636 "v"
2990 EXPR_VAR@4748..47703287 R_PAREN@4636..4637 ")"
2991 NAME@4748..47703288 WHITESPACE@4637..4638 " "
2992 IDENT@4748..4770 "indent_array_in_object"3289 THEN_KW@4638..4642 "then"
2993 COMMA@4770..4771 ","3290 WHITESPACE@4642..4649 "\n "
2994 WHITESPACE@4771..4772 " "3291 TRUE_EXPR@4649..4681
2995 ARG@4772..47823292 EXPR@4649..4681
2996 EXPR_VAR@4772..47823293 EXPR_ERROR@4649..4681
2997 NAME@4772..47823294 ERROR_KW@4649..4654 "error"
2998 IDENT@4772..4782 "quote_keys"3295 WHITESPACE@4654..4655 " "
2999 R_PAREN@4782..4783 ")"3296 EXPR@4655..4681
3000 WHITESPACE@4783..4784 " "3297 EXPR_STRING@4655..4681
3001 FOR_SPEC@4784..47983298 STRING_SINGLE@4655..4681 "'cannot manifest func ..."
3002 FOR_KW@4784..4787 "for"3299 WHITESPACE@4681..4686 "\n "
3003 WHITESPACE@4787..4788 " "3300 ELSE_KW@4686..4690 "else"
3004 NAME@4788..47893301 WHITESPACE@4690..4691 " "
3005 IDENT@4788..4789 "e"3302 FALSE_EXPR@4691..4858
3006 WHITESPACE@4789..4790 " "3303 EXPR@4691..4858
3007 IN_KW@4790..4792 "in"3304 EXPR_IF_THEN_ELSE@4691..4858
3008 WHITESPACE@4792..4793 " "3305 IF_KW@4691..4693 "if"
3009 EXPR_VAR@4793..47983306 WHITESPACE@4693..4694 " "
3010 NAME@4793..47983307 EXPR@4694..4709
3011 IDENT@4793..4798 "value"3308 EXPR_VAR@4694..4697
3012 R_BRACK@4798..4799 "]"3309 NAME@4694..4697
3013 WHITESPACE@4799..4806 "\n "3310 IDENT@4694..4697 "std"
3014 R_PAREN@4806..4807 ")"3311 SUFFIX_INDEX@4697..4706
3015 WHITESPACE@4807..4808 " "3312 DOT@4697..4698 "."
3016 PLUS@4808..4809 "+"3313 NAME@4698..4706
3017 WHITESPACE@4809..4810 " "3314 IDENT@4698..4706 "isNumber"
3018 EXPR_IF_THEN_ELSE@4810..48523315 SUFFIX_APPLY@4706..4709
3019 IF_KW@4810..4812 "if"3316 ARGS_DESC@4706..4709
3020 WHITESPACE@4812..4813 " "3317 L_PAREN@4706..4707 "("
3021 EXPR_VAR@4813..48273318 ARG@4707..4708
3022 NAME@4813..48273319 EXPR@4707..4708
3023 IDENT@4813..4827 "c_document_end"3320 EXPR_VAR@4707..4708
3024 WHITESPACE@4827..4828 " "3321 NAME@4707..4708
3025 THEN_KW@4828..4832 "then"3322 IDENT@4707..4708 "v"
3026 WHITESPACE@4832..4833 " "3323 R_PAREN@4708..4709 ")"
3027 TRUE_EXPR@4833..48423324 WHITESPACE@4709..4710 " "
3028 EXPR_STRING@4833..48423325 THEN_KW@4710..4714 "then"
3029 STRING_SINGLE@4833..4842 "'\\n...\\n'"3326 WHITESPACE@4714..4721 "\n "
3030 WHITESPACE@4842..4843 " "3327 TRUE_EXPR@4721..4736
3031 ELSE_KW@4843..4847 "else"3328 EXPR@4721..4736
3032 WHITESPACE@4847..4848 " "3329 EXPR_VAR@4721..4724
3033 FALSE_EXPR@4848..48523330 NAME@4721..4724
3034 EXPR_STRING@4848..48523331 IDENT@4721..4724 "std"
3035 STRING_SINGLE@4848..4852 "'\\n'"3332 SUFFIX_INDEX@4724..4733
3036 COMMA@4852..4853 ","3333 DOT@4724..4725 "."
3037 WHITESPACE@4853..4857 "\n\n "3334 NAME@4725..4733
3038 MEMBER_FIELD_METHOD@4857..55133335 IDENT@4725..4733 "toString"
3039 FIELD_NAME_FIXED@4857..48713336 SUFFIX_APPLY@4733..4736
3040 NAME@4857..48713337 ARGS_DESC@4733..4736
3041 IDENT@4857..4871 "manifestPython"3338 L_PAREN@4733..4734 "("
3042 PARAMS_DESC@4871..48743339 ARG@4734..4735
3043 L_PAREN@4871..4872 "("3340 EXPR@4734..4735
3044 PARAM@4872..48733341 EXPR_VAR@4734..4735
3045 DESTRUCT_FULL@4872..48733342 NAME@4734..4735
3046 NAME@4872..48733343 IDENT@4734..4735 "v"
3047 IDENT@4872..4873 "v"3344 R_PAREN@4735..4736 ")"
3048 R_PAREN@4873..4874 ")"3345 WHITESPACE@4736..4741 "\n "
3049 COLONCOLON@4874..4876 "::"3346 ELSE_KW@4741..4745 "else"
3050 WHITESPACE@4876..4881 "\n "3347 WHITESPACE@4745..4746 " "
3051 EXPR_IF_THEN_ELSE@4881..55133348 FALSE_EXPR@4746..4858
3052 IF_KW@4881..4883 "if"3349 EXPR@4746..4858
3053 WHITESPACE@4883..4884 " "3350 EXPR_IF_THEN_ELSE@4746..4858
3054 EXPR_APPLY@4884..48993351 IF_KW@4746..4748 "if"
3055 EXPR_INDEX@4884..48963352 WHITESPACE@4748..4749 " "
3056 EXPR_VAR@4884..48873353 EXPR@4749..4758
3057 NAME@4884..48873354 EXPR_BINARY@4749..4758
3058 IDENT@4884..4887 "std"3355 EXPR@4749..4750
3059 DOT@4887..4888 "."3356 EXPR_VAR@4749..4750
3060 NAME@4888..48963357 NAME@4749..4750
3061 IDENT@4888..4896 "isObject"3358 IDENT@4749..4750 "v"
3062 ARGS_DESC@4896..48993359 WHITESPACE@4750..4751 " "
3063 L_PAREN@4896..4897 "("3360 EQ@4751..4753 "=="
3064 ARG@4897..48983361 WHITESPACE@4753..4754 " "
3065 EXPR_VAR@4897..48983362 EXPR@4754..4758
3066 NAME@4897..48983363 EXPR_LITERAL@4754..4758
3067 IDENT@4897..4898 "v"3364 TRUE_KW@4754..4758 "true"
3068 R_PAREN@4898..4899 ")"3365 WHITESPACE@4758..4759 " "
3069 WHITESPACE@4899..4900 " "3366 THEN_KW@4759..4763 "then"
3070 THEN_KW@4900..4904 "then"3367 WHITESPACE@4763..4770 "\n "
3071 WHITESPACE@4904..4911 "\n "3368 TRUE_EXPR@4770..4776
3072 STMT_LOCAL@4911..50463369 EXPR@4770..4776
3073 LOCAL_KW@4911..4916 "local"3370 EXPR_STRING@4770..4776
3074 WHITESPACE@4916..4917 " "3371 STRING_SINGLE@4770..4776 "'True'"
3075 BIND_DESTRUCT@4917..50453372 WHITESPACE@4776..4781 "\n "
3076 DESTRUCT_FULL@4917..49233373 ELSE_KW@4781..4785 "else"
3077 NAME@4917..49233374 WHITESPACE@4785..4786 " "
3078 IDENT@4917..4923 "fields"3375 FALSE_EXPR@4786..4858
3079 WHITESPACE@4923..4924 " "3376 EXPR@4786..4858
3080 ASSIGN@4924..4925 "="3377 EXPR_IF_THEN_ELSE@4786..4858
3081 WHITESPACE@4925..4926 " "3378 IF_KW@4786..4788 "if"
3082 EXPR_ARRAY_COMP@4926..50453379 WHITESPACE@4788..4789 " "
3083 L_BRACK@4926..4927 "["3380 EXPR@4789..4799
3084 WHITESPACE@4927..4936 "\n "3381 EXPR_BINARY@4789..4799
3085 EXPR_BINARY@4936..50003382 EXPR@4789..4790
3086 LHS_EXPR@4936..49443383 EXPR_VAR@4789..4790
3087 EXPR_STRING@4936..49443384 NAME@4789..4790
3088 STRING_SINGLE@4936..4944 "'%s: %s'"3385 IDENT@4789..4790 "v"
3089 WHITESPACE@4944..4945 " "3386 WHITESPACE@4790..4791 " "
3090 MODULO@4945..4946 "%"3387 EQ@4791..4793 "=="
3091 WHITESPACE@4946..4947 " "3388 WHITESPACE@4793..4794 " "
3092 EXPR_ARRAY@4947..50003389 EXPR@4794..4799
3093 L_BRACK@4947..4948 "["3390 EXPR_LITERAL@4794..4799
3094 EXPR_APPLY@4948..49733391 FALSE_KW@4794..4799 "false"
3095 EXPR_INDEX@4948..49703392 WHITESPACE@4799..4800 " "
3096 EXPR_VAR@4948..49513393 THEN_KW@4800..4804 "then"
3097 NAME@4948..49513394 WHITESPACE@4804..4811 "\n "
3098 IDENT@4948..4951 "std"3395 TRUE_EXPR@4811..4818
3099 DOT@4951..4952 "."3396 EXPR@4811..4818
3100 NAME@4952..49703397 EXPR_STRING@4811..4818
3101 IDENT@4952..4970 "escapeStringPython"3398 STRING_SINGLE@4811..4818 "'False'"
3102 ARGS_DESC@4970..49733399 WHITESPACE@4818..4823 "\n "
3103 L_PAREN@4970..4971 "("3400 ELSE_KW@4823..4827 "else"
3104 ARG@4971..49723401 WHITESPACE@4827..4828 " "
3105 EXPR_VAR@4971..49723402 FALSE_EXPR@4828..4858
3106 NAME@4971..49723403 EXPR@4828..4858
3107 IDENT@4971..4972 "k"3404 EXPR_IF_THEN_ELSE@4828..4858
3108 R_PAREN@4972..4973 ")"3405 IF_KW@4828..4830 "if"
3109 COMMA@4973..4974 ","3406 WHITESPACE@4830..4831 " "
3110 WHITESPACE@4974..4975 " "3407 EXPR@4831..4840
3111 EXPR_APPLY@4975..49993408 EXPR_BINARY@4831..4840
3112 EXPR_INDEX@4975..49933409 EXPR@4831..4832
3113 EXPR_VAR@4975..49783410 EXPR_VAR@4831..4832
3114 NAME@4975..49783411 NAME@4831..4832
3115 IDENT@4975..4978 "std"3412 IDENT@4831..4832 "v"
3116 DOT@4978..4979 "."3413 WHITESPACE@4832..4833 " "
3117 NAME@4979..49933414 EQ@4833..4835 "=="
3118 IDENT@4979..4993 "manifestPython"3415 WHITESPACE@4835..4836 " "
3119 ARGS_DESC@4993..49993416 EXPR@4836..4840
3120 L_PAREN@4993..4994 "("3417 EXPR_LITERAL@4836..4840
3121 ARG@4994..49983418 NULL_KW@4836..4840 "null"
3122 EXPR_INDEX_EXPR@4994..49983419 WHITESPACE@4840..4841 " "
3123 LHS_EXPR@4994..49953420 THEN_KW@4841..4845 "then"
3124 EXPR_VAR@4994..49953421 WHITESPACE@4845..4852 "\n "
3125 NAME@4994..49953422 TRUE_EXPR@4852..4858
3126 IDENT@4994..4995 "v"3423 EXPR@4852..4858
3127 L_BRACK@4995..4996 "["3424 EXPR_STRING@4852..4858
3128 EXPR_VAR@4996..49973425 STRING_SINGLE@4852..4858 "'None'"
3129 NAME@4996..49973426 COMMA@4858..4859 ","
3130 IDENT@4996..4997 "k"3427 WHITESPACE@4859..4863 "\n\n "
3131 R_BRACK@4997..4998 "]"3428 MEMBER_FIELD_METHOD@4863..5018
3132 R_PAREN@4998..4999 ")"3429 FIELD_NAME_FIXED@4863..4881
3133 R_BRACK@4999..5000 "]"3430 NAME@4863..4881
3134 WHITESPACE@5000..5009 "\n "3431 IDENT@4863..4881 "manifestPythonVars"
3135 FOR_SPEC@5009..50373432 PARAMS_DESC@4881..4887
3136 FOR_KW@5009..5012 "for"3433 L_PAREN@4881..4882 "("
3137 WHITESPACE@5012..5013 " "3434 PARAM@4882..4886
3138 NAME@5013..50143435 DESTRUCT_FULL@4882..4886
3139 IDENT@5013..5014 "k"3436 NAME@4882..4886
3140 WHITESPACE@5014..5015 " "3437 IDENT@4882..4886 "conf"
3141 IN_KW@5015..5017 "in"3438 R_PAREN@4886..4887 ")"
3142 WHITESPACE@5017..5018 " "3439 COLONCOLON@4887..4889 "::"
3143 EXPR_APPLY@5018..50373440 WHITESPACE@4889..4894 "\n "
3144 EXPR_INDEX@5018..50343441 EXPR@4894..5018
3145 EXPR_VAR@5018..50213442 STMT_LOCAL@4894..4986
3146 NAME@5018..50213443 LOCAL_KW@4894..4899 "local"
3147 IDENT@5018..5021 "std"3444 WHITESPACE@4899..4900 " "
3148 DOT@5021..5022 "."3445 BIND_DESTRUCT@4900..4985
3149 NAME@5022..50343446 DESTRUCT_FULL@4900..4904
3150 IDENT@5022..5034 "objectFields"3447 NAME@4900..4904
3151 ARGS_DESC@5034..50373448 IDENT@4900..4904 "vars"
3152 L_PAREN@5034..5035 "("3449 WHITESPACE@4904..4905 " "
3153 ARG@5035..50363450 ASSIGN@4905..4906 "="
3154 EXPR_VAR@5035..50363451 WHITESPACE@4906..4907 " "
3155 NAME@5035..50363452 EXPR@4907..4985
3156 IDENT@5035..5036 "v"3453 EXPR_ARRAY_COMP@4907..4985
3157 R_PAREN@5036..5037 ")"3454 L_BRACK@4907..4908 "["
3158 WHITESPACE@5037..5044 "\n "3455 EXPR@4908..4952
3159 R_BRACK@5044..5045 "]"3456 EXPR_BINARY@4908..4952
3160 SEMI@5045..5046 ";"3457 EXPR@4908..4917
3161 WHITESPACE@5046..5053 "\n "3458 EXPR_STRING@4908..4917
3162 TRUE_EXPR@5053..50863459 STRING_SINGLE@4908..4917 "'%s = %s'"
3163 EXPR_BINARY@5053..50863460 WHITESPACE@4917..4918 " "
3164 LHS_EXPR@5053..50593461 MODULO@4918..4919 "%"
3165 EXPR_STRING@5053..50593462 WHITESPACE@4919..4920 " "
3166 STRING_SINGLE@5053..5059 "'{%s}'"3463 EXPR@4920..4952
3167 WHITESPACE@5059..5060 " "3464 EXPR_ARRAY@4920..4952
3168 MODULO@5060..5061 "%"3465 L_BRACK@4920..4921 "["
3169 WHITESPACE@5061..5062 " "3466 EXPR@4921..4922
3170 EXPR_ARRAY@5062..50863467 EXPR_VAR@4921..4922
3171 L_BRACK@5062..5063 "["3468 NAME@4921..4922
3172 EXPR_APPLY@5063..50853469 IDENT@4921..4922 "k"
3173 EXPR_INDEX@5063..50713470 COMMA@4922..4923 ","
3174 EXPR_VAR@5063..50663471 WHITESPACE@4923..4924 " "
3175 NAME@5063..50663472 EXPR@4924..4951
3176 IDENT@5063..5066 "std"3473 EXPR_VAR@4924..4927
3177 DOT@5066..5067 "."3474 NAME@4924..4927
3178 NAME@5067..50713475 IDENT@4924..4927 "std"
3179 IDENT@5067..5071 "join"3476 SUFFIX_INDEX@4927..4942
3180 ARGS_DESC@5071..50853477 DOT@4927..4928 "."
3181 L_PAREN@5071..5072 "("3478 NAME@4928..4942
3182 ARG@5072..50763479 IDENT@4928..4942 "manifestPython"
3183 EXPR_STRING@5072..50763480 SUFFIX_APPLY@4942..4951
3184 STRING_SINGLE@5072..5076 "', '"3481 ARGS_DESC@4942..4951
3185 COMMA@5076..5077 ","3482 L_PAREN@4942..4943 "("
3186 WHITESPACE@5077..5078 " "3483 ARG@4943..4950
3187 ARG@5078..50843484 EXPR@4943..4950
3188 EXPR_VAR@5078..50843485 EXPR_VAR@4943..4947
3189 NAME@5078..50843486 NAME@4943..4947
3190 IDENT@5078..5084 "fields"3487 IDENT@4943..4947 "conf"
3191 R_PAREN@5084..5085 ")"3488 SUFFIX_INDEX_EXPR@4947..4950
3192 R_BRACK@5085..5086 "]"3489 L_BRACK@4947..4948 "["
3193 WHITESPACE@5086..5091 "\n "3490 EXPR@4948..4949
3194 ELSE_KW@5091..5095 "else"3491 EXPR_VAR@4948..4949
3195 WHITESPACE@5095..5096 " "3492 NAME@4948..4949
3196 FALSE_EXPR@5096..55133493 IDENT@4948..4949 "k"
3197 EXPR_IF_THEN_ELSE@5096..55133494 R_BRACK@4949..4950 "]"
3198 IF_KW@5096..5098 "if"3495 R_PAREN@4950..4951 ")"
3199 WHITESPACE@5098..5099 " "3496 R_BRACK@4951..4952 "]"
3200 EXPR_APPLY@5099..51133497 WHITESPACE@4952..4953 " "
3201 EXPR_INDEX@5099..51103498 FOR_SPEC@4953..4984
3202 EXPR_VAR@5099..51023499 FOR_KW@4953..4956 "for"
3203 NAME@5099..51023500 WHITESPACE@4956..4957 " "
3204 IDENT@5099..5102 "std"3501 DESTRUCT_FULL@4957..4958
3205 DOT@5102..5103 "."3502 NAME@4957..4958
3206 NAME@5103..51103503 IDENT@4957..4958 "k"
3207 IDENT@5103..5110 "isArray"3504 WHITESPACE@4958..4959 " "
3208 ARGS_DESC@5110..51133505 IN_KW@4959..4961 "in"
3209 L_PAREN@5110..5111 "("3506 WHITESPACE@4961..4962 " "
3210 ARG@5111..51123507 EXPR@4962..4984
3211 EXPR_VAR@5111..51123508 EXPR_VAR@4962..4965
3212 NAME@5111..51123509 NAME@4962..4965
3213 IDENT@5111..5112 "v"3510 IDENT@4962..4965 "std"
3214 R_PAREN@5112..5113 ")"3511 SUFFIX_INDEX@4965..4978
3215 WHITESPACE@5113..5114 " "3512 DOT@4965..4966 "."
3216 THEN_KW@5114..5118 "then"3513 NAME@4966..4978
3217 WHITESPACE@5118..5125 "\n "3514 IDENT@4966..4978 "objectFields"
3218 TRUE_EXPR@5125..51883515 SUFFIX_APPLY@4978..4984
3219 EXPR_BINARY@5125..51883516 ARGS_DESC@4978..4984
3220 LHS_EXPR@5125..51313517 L_PAREN@4978..4979 "("
3221 EXPR_STRING@5125..51313518 ARG@4979..4983
3222 STRING_SINGLE@5125..5131 "'[%s]'"3519 EXPR@4979..4983
3223 WHITESPACE@5131..5132 " "3520 EXPR_VAR@4979..4983
3224 MODULO@5132..5133 "%"3521 NAME@4979..4983
3225 WHITESPACE@5133..5134 " "3522 IDENT@4979..4983 "conf"
3226 EXPR_ARRAY@5134..51883523 R_PAREN@4983..4984 ")"
3227 L_BRACK@5134..5135 "["3524 R_BRACK@4984..4985 "]"
3228 EXPR_APPLY@5135..51873525 SEMI@4985..4986 ";"
3229 EXPR_INDEX@5135..51433526 WHITESPACE@4986..4991 "\n "
3230 EXPR_VAR@5135..51383527 EXPR_VAR@4991..4994
3231 NAME@5135..51383528 NAME@4991..4994
3232 IDENT@5135..5138 "std"3529 IDENT@4991..4994 "std"
3233 DOT@5138..5139 "."3530 SUFFIX_INDEX@4994..4999
3234 NAME@5139..51433531 DOT@4994..4995 "."
3235 IDENT@5139..5143 "join"3532 NAME@4995..4999
3236 ARGS_DESC@5143..51873533 IDENT@4995..4999 "join"
3237 L_PAREN@5143..5144 "("3534 SUFFIX_APPLY@4999..5018
3238 ARG@5144..51483535 ARGS_DESC@4999..5018
3239 EXPR_STRING@5144..51483536 L_PAREN@4999..5000 "("
3240 STRING_SINGLE@5144..5148 "', '"3537 ARG@5000..5004
3241 COMMA@5148..5149 ","3538 EXPR@5000..5004
3242 WHITESPACE@5149..5150 " "3539 EXPR_STRING@5000..5004
3243 ARG@5150..51863540 STRING_SINGLE@5000..5004 "'\\n'"
3244 EXPR_ARRAY_COMP@5150..51863541 COMMA@5004..5005 ","
3245 L_BRACK@5150..5151 "["3542 WHITESPACE@5005..5006 " "
3246 EXPR_APPLY@5151..51733543 ARG@5006..5017
3247 EXPR_INDEX@5151..51693544 EXPR@5006..5017
3248 EXPR_VAR@5151..51543545 EXPR_BINARY@5006..5017
3249 NAME@5151..51543546 EXPR@5006..5010
3250 IDENT@5151..5154 "std"3547 EXPR_VAR@5006..5010
3251 DOT@5154..5155 "."3548 NAME@5006..5010
3252 NAME@5155..51693549 IDENT@5006..5010 "vars"
3253 IDENT@5155..5169 "manifestPython"3550 WHITESPACE@5010..5011 " "
3254 ARGS_DESC@5169..51733551 PLUS@5011..5012 "+"
3255 L_PAREN@5169..5170 "("3552 WHITESPACE@5012..5013 " "
3256 ARG@5170..51723553 EXPR@5013..5017
3257 EXPR_VAR@5170..51723554 EXPR_ARRAY@5013..5017
3258 NAME@5170..51723555 L_BRACK@5013..5014 "["
3259 IDENT@5170..5172 "v2"3556 EXPR@5014..5016
3260 R_PAREN@5172..5173 ")"3557 EXPR_STRING@5014..5016
3261 WHITESPACE@5173..5174 " "3558 STRING_SINGLE@5014..5016 "''"
3262 FOR_SPEC@5174..51853559 R_BRACK@5016..5017 "]"
3263 FOR_KW@5174..5177 "for"3560 R_PAREN@5017..5018 ")"
3264 WHITESPACE@5177..5178 " "3561 COMMA@5018..5019 ","
3265 NAME@5178..51803562 WHITESPACE@5019..5023 "\n\n "
3266 IDENT@5178..5180 "v2"3563 MEMBER_FIELD_METHOD@5023..5690
3267 WHITESPACE@5180..5181 " "3564 FIELD_NAME_FIXED@5023..5040
3268 IN_KW@5181..5183 "in"3565 NAME@5023..5040
3269 WHITESPACE@5183..5184 " "3566 IDENT@5023..5040 "manifestXmlJsonml"
3270 EXPR_VAR@5184..51853567 PARAMS_DESC@5040..5047
3271 NAME@5184..51853568 L_PAREN@5040..5041 "("
3272 IDENT@5184..5185 "v"3569 PARAM@5041..5046
3273 R_BRACK@5185..5186 "]"3570 DESTRUCT_FULL@5041..5046
3274 R_PAREN@5186..5187 ")"3571 NAME@5041..5046
3275 R_BRACK@5187..5188 "]"3572 IDENT@5041..5046 "value"
3276 WHITESPACE@5188..5193 "\n "3573 R_PAREN@5046..5047 ")"
3277 ELSE_KW@5193..5197 "else"3574 COLONCOLON@5047..5049 "::"
3278 WHITESPACE@5197..5198 " "3575 WHITESPACE@5049..5054 "\n "
3279 FALSE_EXPR@5198..55133576 EXPR@5054..5690
3280 EXPR_IF_THEN_ELSE@5198..55133577 EXPR_IF_THEN_ELSE@5054..5690
3281 IF_KW@5198..5200 "if"3578 IF_KW@5054..5056 "if"
3282 WHITESPACE@5200..5201 " "3579 WHITESPACE@5056..5057 " "
3283 EXPR_APPLY@5201..52163580 EXPR@5057..5076
3284 EXPR_INDEX@5201..52133581 EXPR_UNARY@5057..5076
3285 EXPR_VAR@5201..52043582 NOT@5057..5058 "!"
3286 NAME@5201..52043583 EXPR_VAR@5058..5061
3287 IDENT@5201..5204 "std"3584 NAME@5058..5061
3288 DOT@5204..5205 "."3585 IDENT@5058..5061 "std"
3289 NAME@5205..52133586 SUFFIX_INDEX@5061..5069
3290 IDENT@5205..5213 "isString"3587 DOT@5061..5062 "."
3291 ARGS_DESC@5213..52163588 NAME@5062..5069
3292 L_PAREN@5213..5214 "("3589 IDENT@5062..5069 "isArray"
3293 ARG@5214..52153590 SUFFIX_APPLY@5069..5076
3294 EXPR_VAR@5214..52153591 ARGS_DESC@5069..5076
3295 NAME@5214..52153592 L_PAREN@5069..5070 "("
3296 IDENT@5214..5215 "v"3593 ARG@5070..5075
3297 R_PAREN@5215..5216 ")"3594 EXPR@5070..5075
3298 WHITESPACE@5216..5217 " "3595 EXPR_VAR@5070..5075
3299 THEN_KW@5217..5221 "then"3596 NAME@5070..5075
3300 WHITESPACE@5221..5228 "\n "3597 IDENT@5070..5075 "value"
3301 TRUE_EXPR@5228..52623598 R_PAREN@5075..5076 ")"
3302 EXPR_BINARY@5228..52623599 WHITESPACE@5076..5077 " "
3303 LHS_EXPR@5228..52323600 THEN_KW@5077..5081 "then"
3304 EXPR_STRING@5228..52323601 WHITESPACE@5081..5088 "\n "
3305 STRING_SINGLE@5228..5232 "'%s'"3602 TRUE_EXPR@5088..5156
3306 WHITESPACE@5232..5233 " "3603 EXPR@5088..5156
3307 MODULO@5233..5234 "%"3604 EXPR_ERROR@5088..5156
3308 WHITESPACE@5234..5235 " "3605 ERROR_KW@5088..5093 "error"
3309 EXPR_ARRAY@5235..52623606 WHITESPACE@5093..5094 " "
3310 L_BRACK@5235..5236 "["3607 EXPR@5094..5156
3311 EXPR_APPLY@5236..52613608 EXPR_BINARY@5094..5156
3312 EXPR_INDEX@5236..52583609 EXPR@5094..5138
3313 EXPR_VAR@5236..52393610 EXPR_STRING@5094..5138
3314 NAME@5236..52393611 STRING_SINGLE@5094..5138 "'Expected a JSONML va ..."
3315 IDENT@5236..5239 "std"3612 WHITESPACE@5138..5139 " "
3316 DOT@5239..5240 "."3613 MODULO@5139..5140 "%"
3317 NAME@5240..52583614 WHITESPACE@5140..5141 " "
3318 IDENT@5240..5258 "escapeStringPython"3615 EXPR@5141..5156
3319 ARGS_DESC@5258..52613616 EXPR_VAR@5141..5144
3320 L_PAREN@5258..5259 "("3617 NAME@5141..5144
3321 ARG@5259..52603618 IDENT@5141..5144 "std"
3322 EXPR_VAR@5259..52603619 SUFFIX_INDEX@5144..5149
3323 NAME@5259..52603620 DOT@5144..5145 "."
3324 IDENT@5259..5260 "v"3621 NAME@5145..5149
3325 R_PAREN@5260..5261 ")"3622 IDENT@5145..5149 "type"
3326 R_BRACK@5261..5262 "]"3623 SUFFIX_APPLY@5149..5156
3327 WHITESPACE@5262..5267 "\n "3624 ARGS_DESC@5149..5156
3328 ELSE_KW@5267..5271 "else"3625 L_PAREN@5149..5150 "("
3329 WHITESPACE@5271..5272 " "3626 ARG@5150..5155
3330 FALSE_EXPR@5272..55133627 EXPR@5150..5155
3331 EXPR_IF_THEN_ELSE@5272..55133628 EXPR_VAR@5150..5155
3332 IF_KW@5272..5274 "if"3629 NAME@5150..5155
3333 WHITESPACE@5274..5275 " "3630 IDENT@5150..5155 "value"
3334 EXPR_APPLY@5275..52923631 R_PAREN@5155..5156 ")"
3335 EXPR_INDEX@5275..52893632 WHITESPACE@5156..5161 "\n "
3336 EXPR_VAR@5275..52783633 ELSE_KW@5161..5165 "else"
3337 NAME@5275..52783634 WHITESPACE@5165..5172 "\n "
3338 IDENT@5275..5278 "std"3635 FALSE_EXPR@5172..5690
3339 DOT@5278..5279 "."3636 EXPR@5172..5690
3340 NAME@5279..52893637 STMT_LOCAL@5172..5672
3341 IDENT@5279..5289 "isFunction"3638 LOCAL_KW@5172..5177 "local"
3342 ARGS_DESC@5289..52923639 WHITESPACE@5177..5178 " "
3343 L_PAREN@5289..5290 "("3640 BIND_FUNCTION@5178..5671
3344 ARG@5290..52913641 NAME@5178..5181
3345 EXPR_VAR@5290..52913642 IDENT@5178..5181 "aux"
3346 NAME@5290..52913643 PARAMS_DESC@5181..5184
3347 IDENT@5290..5291 "v"3644 L_PAREN@5181..5182 "("
3348 R_PAREN@5291..5292 ")"3645 PARAM@5182..5183
3349 WHITESPACE@5292..5293 " "3646 DESTRUCT_FULL@5182..5183
3350 THEN_KW@5293..5297 "then"3647 NAME@5182..5183
3351 WHITESPACE@5297..5304 "\n "3648 IDENT@5182..5183 "v"
3352 TRUE_EXPR@5304..53363649 R_PAREN@5183..5184 ")"
3353 EXPR_ERROR@5304..53363650 WHITESPACE@5184..5185 " "
3354 ERROR_KW@5304..5309 "error"3651 ASSIGN@5185..5186 "="
3355 WHITESPACE@5309..5310 " "3652 WHITESPACE@5186..5195 "\n "
3356 EXPR_STRING@5310..53363653 EXPR@5195..5671
3357 STRING_SINGLE@5310..5336 "'cannot manifest func ..."3654 EXPR_IF_THEN_ELSE@5195..5671
3358 WHITESPACE@5336..5341 "\n "3655 IF_KW@5195..5197 "if"
3359 ELSE_KW@5341..5345 "else"3656 WHITESPACE@5197..5198 " "
3360 WHITESPACE@5345..5346 " "3657 EXPR@5198..5213
3361 FALSE_EXPR@5346..55133658 EXPR_VAR@5198..5201
3362 EXPR_IF_THEN_ELSE@5346..55133659 NAME@5198..5201
3363 IF_KW@5346..5348 "if"3660 IDENT@5198..5201 "std"
3364 WHITESPACE@5348..5349 " "3661 SUFFIX_INDEX@5201..5210
3365 EXPR_APPLY@5349..53643662 DOT@5201..5202 "."
3366 EXPR_INDEX@5349..53613663 NAME@5202..5210
3367 EXPR_VAR@5349..53523664 IDENT@5202..5210 "isString"
3368 NAME@5349..53523665 SUFFIX_APPLY@5210..5213
3369 IDENT@5349..5352 "std"3666 ARGS_DESC@5210..5213
3370 DOT@5352..5353 "."3667 L_PAREN@5210..5211 "("
3371 NAME@5353..53613668 ARG@5211..5212
3372 IDENT@5353..5361 "isNumber"3669 EXPR@5211..5212
3373 ARGS_DESC@5361..53643670 EXPR_VAR@5211..5212
3374 L_PAREN@5361..5362 "("3671 NAME@5211..5212
3375 ARG@5362..53633672 IDENT@5211..5212 "v"
3376 EXPR_VAR@5362..53633673 R_PAREN@5212..5213 ")"
3377 NAME@5362..53633674 WHITESPACE@5213..5214 " "
3378 IDENT@5362..5363 "v"3675 THEN_KW@5214..5218 "then"
3379 R_PAREN@5363..5364 ")"3676 WHITESPACE@5218..5229 "\n "
3380 WHITESPACE@5364..5365 " "3677 TRUE_EXPR@5229..5230
3381 THEN_KW@5365..5369 "then"3678 EXPR@5229..5230
3382 WHITESPACE@5369..5376 "\n "3679 EXPR_VAR@5229..5230
3383 TRUE_EXPR@5376..53913680 NAME@5229..5230
3384 EXPR_APPLY@5376..53913681 IDENT@5229..5230 "v"
3385 EXPR_INDEX@5376..53883682 WHITESPACE@5230..5239 "\n "
3386 EXPR_VAR@5376..53793683 ELSE_KW@5239..5243 "else"
3387 NAME@5376..53793684 WHITESPACE@5243..5254 "\n "
3388 IDENT@5376..5379 "std"3685 FALSE_EXPR@5254..5671
3389 DOT@5379..5380 "."3686 EXPR@5254..5671
3390 NAME@5380..53883687 STMT_LOCAL@5254..5271
3391 IDENT@5380..5388 "toString"3688 LOCAL_KW@5254..5259 "local"
3392 ARGS_DESC@5388..53913689 WHITESPACE@5259..5260 " "
3393 L_PAREN@5388..5389 "("3690 BIND_DESTRUCT@5260..5270
3394 ARG@5389..53903691 DESTRUCT_FULL@5260..5263
3395 EXPR_VAR@5389..53903692 NAME@5260..5263
3396 NAME@5389..53903693 IDENT@5260..5263 "tag"
3397 IDENT@5389..5390 "v"3694 WHITESPACE@5263..5264 " "
3398 R_PAREN@5390..5391 ")"3695 ASSIGN@5264..5265 "="
3399 WHITESPACE@5391..5396 "\n "3696 WHITESPACE@5265..5266 " "
3400 ELSE_KW@5396..5400 "else"3697 EXPR@5266..5270
3401 WHITESPACE@5400..5401 " "3698 EXPR_VAR@5266..5267
3402 FALSE_EXPR@5401..55133699 NAME@5266..5267
3403 EXPR_IF_THEN_ELSE@5401..55133700 IDENT@5266..5267 "v"
3404 IF_KW@5401..5403 "if"3701 SUFFIX_INDEX_EXPR@5267..5270
3405 WHITESPACE@5403..5404 " "3702 L_BRACK@5267..5268 "["
3406 EXPR_BINARY@5404..54133703 EXPR@5268..5269
3407 LHS_EXPR@5404..54053704 EXPR_NUMBER@5268..5269
3408 EXPR_VAR@5404..54053705 FLOAT@5268..5269 "0"
3409 NAME@5404..54053706 R_BRACK@5269..5270 "]"
3410 IDENT@5404..5405 "v"3707 SEMI@5270..5271 ";"
3411 WHITESPACE@5405..5406 " "3708 WHITESPACE@5271..5282 "\n "
3412 EQ@5406..5408 "=="3709 STMT_LOCAL@5282..5340
3413 WHITESPACE@5408..5409 " "3710 LOCAL_KW@5282..5287 "local"
3414 EXPR_LITERAL@5409..54133711 WHITESPACE@5287..5288 " "
3415 TRUE_KW@5409..5413 "true"3712 BIND_DESTRUCT@5288..5339
3416 WHITESPACE@5413..5414 " "3713 DESTRUCT_FULL@5288..5297
3417 THEN_KW@5414..5418 "then"3714 NAME@5288..5297
3418 WHITESPACE@5418..5425 "\n "3715 IDENT@5288..5297 "has_attrs"
3419 TRUE_EXPR@5425..54313716 WHITESPACE@5297..5298 " "
3420 EXPR_STRING@5425..54313717 ASSIGN@5298..5299 "="
3421 STRING_SINGLE@5425..5431 "'True'"3718 WHITESPACE@5299..5300 " "
3422 WHITESPACE@5431..5436 "\n "3719 EXPR@5300..5339
3423 ELSE_KW@5436..5440 "else"3720 EXPR_BINARY@5300..5339
3424 WHITESPACE@5440..5441 " "3721 EXPR@5300..5317
3425 FALSE_EXPR@5441..55133722 EXPR_BINARY@5300..5317
3426 EXPR_IF_THEN_ELSE@5441..55133723 EXPR@5300..5303
3427 IF_KW@5441..5443 "if"3724 EXPR_VAR@5300..5303
3428 WHITESPACE@5443..5444 " "3725 NAME@5300..5303
3429 EXPR_BINARY@5444..54543726 IDENT@5300..5303 "std"
3430 LHS_EXPR@5444..54453727 SUFFIX_INDEX@5303..5310
3431 EXPR_VAR@5444..54453728 DOT@5303..5304 "."
3432 NAME@5444..54453729 NAME@5304..5310
3433 IDENT@5444..5445 "v"3730 IDENT@5304..5310 "length"
3434 WHITESPACE@5445..5446 " "3731 SUFFIX_APPLY@5310..5313
3435 EQ@5446..5448 "=="3732 ARGS_DESC@5310..5313
3436 WHITESPACE@5448..5449 " "3733 L_PAREN@5310..5311 "("
3437 EXPR_LITERAL@5449..54543734 ARG@5311..5312
3438 FALSE_KW@5449..5454 "false"3735 EXPR@5311..5312
3439 WHITESPACE@5454..5455 " "3736 EXPR_VAR@5311..5312
3440 THEN_KW@5455..5459 "then"3737 NAME@5311..5312
3441 WHITESPACE@5459..5466 "\n "3738 IDENT@5311..5312 "v"
3442 TRUE_EXPR@5466..54733739 R_PAREN@5312..5313 ")"
3443 EXPR_STRING@5466..54733740 WHITESPACE@5313..5314 " "
3444 STRING_SINGLE@5466..5473 "'False'"3741 GT@5314..5315 ">"
3445 WHITESPACE@5473..5478 "\n "3742 WHITESPACE@5315..5316 " "
3446 ELSE_KW@5478..5482 "else"3743 EXPR@5316..5317
3447 WHITESPACE@5482..5483 " "3744 EXPR_NUMBER@5316..5317
3448 FALSE_EXPR@5483..55133745 FLOAT@5316..5317 "1"
3449 EXPR_IF_THEN_ELSE@5483..55133746 WHITESPACE@5317..5318 " "
3450 IF_KW@5483..5485 "if"3747 AND@5318..5320 "&&"
3451 WHITESPACE@5485..5486 " "3748 WHITESPACE@5320..5321 " "
3452 EXPR_BINARY@5486..54953749 EXPR@5321..5339
3453 LHS_EXPR@5486..54873750 EXPR_VAR@5321..5324
3454 EXPR_VAR@5486..54873751 NAME@5321..5324
3455 NAME@5486..54873752 IDENT@5321..5324 "std"
3456 IDENT@5486..5487 "v"3753 SUFFIX_INDEX@5324..5333
3457 WHITESPACE@5487..5488 " "3754 DOT@5324..5325 "."
3458 EQ@5488..5490 "=="3755 NAME@5325..5333
3459 WHITESPACE@5490..5491 " "3756 IDENT@5325..5333 "isObject"
3460 EXPR_LITERAL@5491..54953757 SUFFIX_APPLY@5333..5339
3461 NULL_KW@5491..5495 "null"3758 ARGS_DESC@5333..5339
3462 WHITESPACE@5495..5496 " "3759 L_PAREN@5333..5334 "("
3463 THEN_KW@5496..5500 "then"3760 ARG@5334..5338
3464 WHITESPACE@5500..5507 "\n "3761 EXPR@5334..5338
3465 TRUE_EXPR@5507..55133762 EXPR_VAR@5334..5335
3466 EXPR_STRING@5507..55133763 NAME@5334..5335
3467 STRING_SINGLE@5507..5513 "'None'"3764 IDENT@5334..5335 "v"
3468 COMMA@5513..5514 ","3765 SUFFIX_INDEX_EXPR@5335..5338
3469 WHITESPACE@5514..5518 "\n\n "3766 L_BRACK@5335..5336 "["
3470 MEMBER_FIELD_METHOD@5518..56733767 EXPR@5336..5337
3471 FIELD_NAME_FIXED@5518..55363768 EXPR_NUMBER@5336..5337
3472 NAME@5518..55363769 FLOAT@5336..5337 "1"
3473 IDENT@5518..5536 "manifestPythonVars"3770 R_BRACK@5337..5338 "]"
3474 PARAMS_DESC@5536..55423771 R_PAREN@5338..5339 ")"
3475 L_PAREN@5536..5537 "("3772 SEMI@5339..5340 ";"
3476 PARAM@5537..55413773 WHITESPACE@5340..5351 "\n "
3477 DESTRUCT_FULL@5537..55413774 STMT_LOCAL@5351..5396
3478 NAME@5537..55413775 LOCAL_KW@5351..5356 "local"
3479 IDENT@5537..5541 "conf"3776 WHITESPACE@5356..5357 " "
3480 R_PAREN@5541..5542 ")"3777 BIND_DESTRUCT@5357..5395
3481 COLONCOLON@5542..5544 "::"3778 DESTRUCT_FULL@5357..5362
3482 WHITESPACE@5544..5549 "\n "3779 NAME@5357..5362
3483 STMT_LOCAL@5549..56413780 IDENT@5357..5362 "attrs"
3484 LOCAL_KW@5549..5554 "local"3781 WHITESPACE@5362..5363 " "
3485 WHITESPACE@5554..5555 " "3782 ASSIGN@5363..5364 "="
3486 BIND_DESTRUCT@5555..56403783 WHITESPACE@5364..5365 " "
3487 DESTRUCT_FULL@5555..55593784 EXPR@5365..5395
3488 NAME@5555..55593785 EXPR_IF_THEN_ELSE@5365..5395
3489 IDENT@5555..5559 "vars"3786 IF_KW@5365..5367 "if"
3490 WHITESPACE@5559..5560 " "3787 WHITESPACE@5367..5368 " "
3491 ASSIGN@5560..5561 "="3788 EXPR@5368..5377
3492 WHITESPACE@5561..5562 " "3789 EXPR_VAR@5368..5377
3493 EXPR_ARRAY_COMP@5562..56403790 NAME@5368..5377
3494 L_BRACK@5562..5563 "["3791 IDENT@5368..5377 "has_attrs"
3495 EXPR_BINARY@5563..56073792 WHITESPACE@5377..5378 " "
3496 LHS_EXPR@5563..55723793 THEN_KW@5378..5382 "then"
3497 EXPR_STRING@5563..55723794 WHITESPACE@5382..5383 " "
3498 STRING_SINGLE@5563..5572 "'%s = %s'"3795 TRUE_EXPR@5383..5387
3499 WHITESPACE@5572..5573 " "3796 EXPR@5383..5387
3500 MODULO@5573..5574 "%"3797 EXPR_VAR@5383..5384
3501 WHITESPACE@5574..5575 " "3798 NAME@5383..5384
3502 EXPR_ARRAY@5575..56073799 IDENT@5383..5384 "v"
3503 L_BRACK@5575..5576 "["3800 SUFFIX_INDEX_EXPR@5384..5387
3504 EXPR_VAR@5576..55773801 L_BRACK@5384..5385 "["
3505 NAME@5576..55773802 EXPR@5385..5386
3506 IDENT@5576..5577 "k"3803 EXPR_NUMBER@5385..5386
3507 COMMA@5577..5578 ","3804 FLOAT@5385..5386 "1"
3508 WHITESPACE@5578..5579 " "3805 R_BRACK@5386..5387 "]"
3509 EXPR_APPLY@5579..56063806 WHITESPACE@5387..5388 " "
3510 EXPR_INDEX@5579..55973807 ELSE_KW@5388..5392 "else"
3511 EXPR_VAR@5579..55823808 WHITESPACE@5392..5393 " "
3512 NAME@5579..55823809 FALSE_EXPR@5393..5395
3513 IDENT@5579..5582 "std"3810 EXPR@5393..5395
3514 DOT@5582..5583 "."3811 EXPR_OBJECT@5393..5395
3515 NAME@5583..55973812 OBJ_BODY_MEMBER_LIST@5393..5395
3516 IDENT@5583..5597 "manifestPython"3813 L_BRACE@5393..5394 "{"
3517 ARGS_DESC@5597..56063814 R_BRACE@5394..5395 "}"
3518 L_PAREN@5597..5598 "("3815 SEMI@5395..5396 ";"
3519 ARG@5598..56053816 WHITESPACE@5396..5407 "\n "
3520 EXPR_INDEX_EXPR@5598..56053817 STMT_LOCAL@5407..5459
3521 LHS_EXPR@5598..56023818 LOCAL_KW@5407..5412 "local"
3522 EXPR_VAR@5598..56023819 WHITESPACE@5412..5413 " "
3523 NAME@5598..56023820 BIND_DESTRUCT@5413..5458
3524 IDENT@5598..5602 "conf"3821 DESTRUCT_FULL@5413..5421
3525 L_BRACK@5602..5603 "["3822 NAME@5413..5421
3526 EXPR_VAR@5603..56043823 IDENT@5413..5421 "children"
3527 NAME@5603..56043824 WHITESPACE@5421..5422 " "
3528 IDENT@5603..5604 "k"3825 ASSIGN@5422..5423 "="
3529 R_BRACK@5604..5605 "]"3826 WHITESPACE@5423..5424 " "
3530 R_PAREN@5605..5606 ")"3827 EXPR@5424..5458
3531 R_BRACK@5606..5607 "]"3828 EXPR_IF_THEN_ELSE@5424..5458
3532 WHITESPACE@5607..5608 " "3829 IF_KW@5424..5426 "if"
3533 FOR_SPEC@5608..56393830 WHITESPACE@5426..5427 " "
3534 FOR_KW@5608..5611 "for"3831 EXPR@5427..5436
3535 WHITESPACE@5611..5612 " "3832 EXPR_VAR@5427..5436
3536 NAME@5612..56133833 NAME@5427..5436
3537 IDENT@5612..5613 "k"3834 IDENT@5427..5436 "has_attrs"
3538 WHITESPACE@5613..5614 " "3835 WHITESPACE@5436..5437 " "
3539 IN_KW@5614..5616 "in"3836 THEN_KW@5437..5441 "then"
3540 WHITESPACE@5616..5617 " "3837 WHITESPACE@5441..5442 " "
3541 EXPR_APPLY@5617..56393838 TRUE_EXPR@5442..5447
3542 EXPR_INDEX@5617..56333839 EXPR@5442..5447
3543 EXPR_VAR@5617..56203840 EXPR_VAR@5442..5443
3544 NAME@5617..56203841 NAME@5442..5443
3545 IDENT@5617..5620 "std"3842 IDENT@5442..5443 "v"
3546 DOT@5620..5621 "."3843 SUFFIX_SLICE@5443..5447
3547 NAME@5621..56333844 SLICE_DESC@5443..5447
3548 IDENT@5621..5633 "objectFields"3845 L_BRACK@5443..5444 "["
3549 ARGS_DESC@5633..56393846 EXPR@5444..5445
3550 L_PAREN@5633..5634 "("3847 EXPR_NUMBER@5444..5445
3551 ARG@5634..56383848 FLOAT@5444..5445 "2"
3552 EXPR_VAR@5634..56383849 COLON@5445..5446 ":"
3553 NAME@5634..56383850 R_BRACK@5446..5447 "]"
3554 IDENT@5634..5638 "conf"3851 WHITESPACE@5447..5448 " "
3555 R_PAREN@5638..5639 ")"3852 ELSE_KW@5448..5452 "else"
3556 R_BRACK@5639..5640 "]"3853 WHITESPACE@5452..5453 " "
3557 SEMI@5640..5641 ";"3854 FALSE_EXPR@5453..5458
3558 WHITESPACE@5641..5646 "\n "3855 EXPR@5453..5458
3559 EXPR_APPLY@5646..56733856 EXPR_VAR@5453..5454
3560 EXPR_INDEX@5646..56543857 NAME@5453..5454
3561 EXPR_VAR@5646..56493858 IDENT@5453..5454 "v"
3562 NAME@5646..56493859 SUFFIX_SLICE@5454..5458
3563 IDENT@5646..5649 "std"3860 SLICE_DESC@5454..5458
3564 DOT@5649..5650 "."3861 L_BRACK@5454..5455 "["
3565 NAME@5650..56543862 EXPR@5455..5456
3566 IDENT@5650..5654 "join"3863 EXPR_NUMBER@5455..5456
3567 ARGS_DESC@5654..56733864 FLOAT@5455..5456 "1"
3568 L_PAREN@5654..5655 "("3865 COLON@5456..5457 ":"
3569 ARG@5655..56593866 R_BRACK@5457..5458 "]"
3570 EXPR_STRING@5655..56593867 SEMI@5458..5459 ";"
3571 STRING_SINGLE@5655..5659 "'\\n'"3868 WHITESPACE@5459..5470 "\n "
3572 COMMA@5659..5660 ","3869 STMT_LOCAL@5470..5576
3573 WHITESPACE@5660..5661 " "3870 LOCAL_KW@5470..5475 "local"
3574 ARG@5661..56723871 WHITESPACE@5475..5476 " "
3575 EXPR_BINARY@5661..56723872 BIND_DESTRUCT@5476..5575
3576 LHS_EXPR@5661..56653873 DESTRUCT_FULL@5476..5485
3577 EXPR_VAR@5661..56653874 NAME@5476..5485
3578 NAME@5661..56653875 IDENT@5476..5485 "attrs_str"
3579 IDENT@5661..5665 "vars"3876 WHITESPACE@5485..5486 " "
3580 WHITESPACE@5665..5666 " "3877 ASSIGN@5486..5487 "="
3581 PLUS@5666..5667 "+"3878 WHITESPACE@5487..5500 "\n "
3582 WHITESPACE@5667..5668 " "3879 EXPR@5500..5575
3583 EXPR_ARRAY@5668..56723880 EXPR_VAR@5500..5503
3584 L_BRACK@5668..5669 "["3881 NAME@5500..5503
3585 EXPR_STRING@5669..56713882 IDENT@5500..5503 "std"
3586 STRING_SINGLE@5669..5671 "''"3883 SUFFIX_INDEX@5503..5508
3587 R_BRACK@5671..5672 "]"3884 DOT@5503..5504 "."
3588 R_PAREN@5672..5673 ")"3885 NAME@5504..5508
3589 COMMA@5673..5674 ","3886 IDENT@5504..5508 "join"
3590 WHITESPACE@5674..5678 "\n\n "3887 SUFFIX_APPLY@5508..5575
3591 MEMBER_FIELD_METHOD@5678..63453888 ARGS_DESC@5508..5575
3592 FIELD_NAME_FIXED@5678..56953889 L_PAREN@5508..5509 "("
3593 NAME@5678..56953890 ARG@5509..5511
3594 IDENT@5678..5695 "manifestXmlJsonml"3891 EXPR@5509..5511
3595 PARAMS_DESC@5695..57023892 EXPR_STRING@5509..5511
3596 L_PAREN@5695..5696 "("3893 STRING_SINGLE@5509..5511 "''"
3597 PARAM@5696..57013894 COMMA@5511..5512 ","
3598 DESTRUCT_FULL@5696..57013895 WHITESPACE@5512..5513 " "
3599 NAME@5696..57013896 ARG@5513..5574
3600 IDENT@5696..5701 "value"3897 EXPR@5513..5574
3601 R_PAREN@5701..5702 ")"3898 EXPR_ARRAY_COMP@5513..5574
3602 COLONCOLON@5702..5704 "::"3899 L_BRACK@5513..5514 "["
3603 WHITESPACE@5704..5709 "\n "3900 EXPR@5514..5540
3604 EXPR_IF_THEN_ELSE@5709..63453901 EXPR_BINARY@5514..5540
3605 IF_KW@5709..5711 "if"3902 EXPR@5514..5524
3606 WHITESPACE@5711..5712 " "3903 EXPR_STRING@5514..5524
3607 EXPR_UNARY@5712..57313904 STRING_SINGLE@5514..5524 "' %s=\"%s\"'"
3608 NOT@5712..5713 "!"3905 WHITESPACE@5524..5525 " "
3609 EXPR_APPLY@5713..57313906 MODULO@5525..5526 "%"
3610 EXPR_INDEX@5713..57243907 WHITESPACE@5526..5527 " "
3611 EXPR_VAR@5713..57163908 EXPR@5527..5540
3612 NAME@5713..57163909 EXPR_ARRAY@5527..5540
3613 IDENT@5713..5716 "std"3910 L_BRACK@5527..5528 "["
3614 DOT@5716..5717 "."3911 EXPR@5528..5529
3615 NAME@5717..57243912 EXPR_VAR@5528..5529
3616 IDENT@5717..5724 "isArray"3913 NAME@5528..5529
3617 ARGS_DESC@5724..57313914 IDENT@5528..5529 "k"
3618 L_PAREN@5724..5725 "("3915 COMMA@5529..5530 ","
3619 ARG@5725..57303916 WHITESPACE@5530..5531 " "
3620 EXPR_VAR@5725..57303917 EXPR@5531..5539
3621 NAME@5725..57303918 EXPR_VAR@5531..5536
3622 IDENT@5725..5730 "value"3919 NAME@5531..5536
3623 R_PAREN@5730..5731 ")"3920 IDENT@5531..5536 "attrs"
3624 WHITESPACE@5731..5732 " "3921 SUFFIX_INDEX_EXPR@5536..5539
3625 THEN_KW@5732..5736 "then"3922 L_BRACK@5536..5537 "["
3626 WHITESPACE@5736..5743 "\n "3923 EXPR@5537..5538
3627 TRUE_EXPR@5743..58113924 EXPR_VAR@5537..5538
3628 EXPR_ERROR@5743..58113925 NAME@5537..5538
3629 ERROR_KW@5743..5748 "error"3926 IDENT@5537..5538 "k"
3630 WHITESPACE@5748..5749 " "3927 R_BRACK@5538..5539 "]"
3631 EXPR_BINARY@5749..58113928 R_BRACK@5539..5540 "]"
3632 LHS_EXPR@5749..57933929 WHITESPACE@5540..5541 " "
3633 EXPR_STRING@5749..57933930 FOR_SPEC@5541..5573
3634 STRING_SINGLE@5749..5793 "'Expected a JSONML va ..."3931 FOR_KW@5541..5544 "for"
3635 WHITESPACE@5793..5794 " "3932 WHITESPACE@5544..5545 " "
3636 MODULO@5794..5795 "%"3933 DESTRUCT_FULL@5545..5546
3637 WHITESPACE@5795..5796 " "3934 NAME@5545..5546
3638 EXPR_APPLY@5796..58113935 IDENT@5545..5546 "k"
3639 EXPR_INDEX@5796..58043936 WHITESPACE@5546..5547 " "
3640 EXPR_VAR@5796..57993937 IN_KW@5547..5549 "in"
3641 NAME@5796..57993938 WHITESPACE@5549..5550 " "
3642 IDENT@5796..5799 "std"3939 EXPR@5550..5573
3643 DOT@5799..5800 "."3940 EXPR_VAR@5550..5553
3644 NAME@5800..58043941 NAME@5550..5553
3645 IDENT@5800..5804 "type"3942 IDENT@5550..5553 "std"
3646 ARGS_DESC@5804..58113943 SUFFIX_INDEX@5553..5566
3647 L_PAREN@5804..5805 "("3944 DOT@5553..5554 "."
3648 ARG@5805..58103945 NAME@5554..5566
3649 EXPR_VAR@5805..58103946 IDENT@5554..5566 "objectFields"
3650 NAME@5805..58103947 SUFFIX_APPLY@5566..5573
3651 IDENT@5805..5810 "value"3948 ARGS_DESC@5566..5573
3652 R_PAREN@5810..5811 ")"3949 L_PAREN@5566..5567 "("
3653 WHITESPACE@5811..5816 "\n "3950 ARG@5567..5572
3654 ELSE_KW@5816..5820 "else"3951 EXPR@5567..5572
3655 WHITESPACE@5820..5827 "\n "3952 EXPR_VAR@5567..5572
3656 STMT_LOCAL@5827..63273953 NAME@5567..5572
3657 LOCAL_KW@5827..5832 "local"3954 IDENT@5567..5572 "attrs"
3658 WHITESPACE@5832..5833 " "3955 R_PAREN@5572..5573 ")"
3659 BIND_FUNCTION@5833..63263956 R_BRACK@5573..5574 "]"
3660 NAME@5833..58363957 R_PAREN@5574..5575 ")"
3661 IDENT@5833..5836 "aux"3958 SEMI@5575..5576 ";"
3662 PARAMS_DESC@5836..58393959 WHITESPACE@5576..5587 "\n "
3663 L_PAREN@5836..5837 "("3960 EXPR_VAR@5587..5590
3664 PARAM@5837..58383961 NAME@5587..5590
3665 DESTRUCT_FULL@5837..58383962 IDENT@5587..5590 "std"
3666 NAME@5837..58383963 SUFFIX_INDEX@5590..5599
3667 IDENT@5837..5838 "v"3964 DOT@5590..5591 "."
3668 R_PAREN@5838..5839 ")"3965 NAME@5591..5599
3669 WHITESPACE@5839..5840 " "3966 IDENT@5591..5599 "deepJoin"
3670 ASSIGN@5840..5841 "="3967 SUFFIX_APPLY@5599..5671
3671 WHITESPACE@5841..5850 "\n "3968 ARGS_DESC@5599..5671
3672 EXPR_IF_THEN_ELSE@5850..63263969 L_PAREN@5599..5600 "("
3673 IF_KW@5850..5852 "if"3970 ARG@5600..5670
3674 WHITESPACE@5852..5853 " "3971 EXPR@5600..5670
3675 EXPR_APPLY@5853..58683972 EXPR_ARRAY@5600..5670
3676 EXPR_INDEX@5853..58653973 L_BRACK@5600..5601 "["
3677 EXPR_VAR@5853..58563974 EXPR@5601..5604
3678 NAME@5853..58563975 EXPR_STRING@5601..5604
3679 IDENT@5853..5856 "std"3976 STRING_SINGLE@5601..5604 "'<'"
3680 DOT@5856..5857 "."3977 COMMA@5604..5605 ","
3681 NAME@5857..58653978 WHITESPACE@5605..5606 " "
3682 IDENT@5857..5865 "isString"3979 EXPR@5606..5609
3683 ARGS_DESC@5865..58683980 EXPR_VAR@5606..5609
3684 L_PAREN@5865..5866 "("3981 NAME@5606..5609
3685 ARG@5866..58673982 IDENT@5606..5609 "tag"
3686 EXPR_VAR@5866..58673983 COMMA@5609..5610 ","
3687 NAME@5866..58673984 WHITESPACE@5610..5611 " "
3688 IDENT@5866..5867 "v"3985 EXPR@5611..5620
3689 R_PAREN@5867..5868 ")"3986 EXPR_VAR@5611..5620
3690 WHITESPACE@5868..5869 " "3987 NAME@5611..5620
3691 THEN_KW@5869..5873 "then"3988 IDENT@5611..5620 "attrs_str"
3692 WHITESPACE@5873..5884 "\n "3989 COMMA@5620..5621 ","
3693 TRUE_EXPR@5884..58853990 WHITESPACE@5621..5622 " "
3694 EXPR_VAR@5884..58853991 EXPR@5622..5625
3695 NAME@5884..58853992 EXPR_STRING@5622..5625
3696 IDENT@5884..5885 "v"3993 STRING_SINGLE@5622..5625 "'>'"
3697 WHITESPACE@5885..5894 "\n "3994 COMMA@5625..5626 ","
3698 ELSE_KW@5894..5898 "else"3995 WHITESPACE@5626..5627 " "
3699 WHITESPACE@5898..5909 "\n "3996 EXPR@5627..5653
3700 STMT_LOCAL@5909..59263997 EXPR_ARRAY_COMP@5627..5653
3701 LOCAL_KW@5909..5914 "local"3998 L_BRACK@5627..5628 "["
3702 WHITESPACE@5914..5915 " "3999 EXPR@5628..5634
3703 BIND_DESTRUCT@5915..59254000 EXPR_VAR@5628..5631
3704 DESTRUCT_FULL@5915..59184001 NAME@5628..5631
3705 NAME@5915..59184002 IDENT@5628..5631 "aux"
3706 IDENT@5915..5918 "tag"4003 SUFFIX_APPLY@5631..5634
3707 WHITESPACE@5918..5919 " "4004 ARGS_DESC@5631..5634
3708 ASSIGN@5919..5920 "="4005 L_PAREN@5631..5632 "("
3709 WHITESPACE@5920..5921 " "4006 ARG@5632..5633
3710 EXPR_INDEX_EXPR@5921..59254007 EXPR@5632..5633
3711 LHS_EXPR@5921..59224008 EXPR_VAR@5632..5633
3712 EXPR_VAR@5921..59224009 NAME@5632..5633
3713 NAME@5921..59224010 IDENT@5632..5633 "x"
3714 IDENT@5921..5922 "v"4011 R_PAREN@5633..5634 ")"
3715 L_BRACK@5922..5923 "["4012 WHITESPACE@5634..5635 " "
3716 EXPR_NUMBER@5923..59244013 FOR_SPEC@5635..5652
3717 FLOAT@5923..5924 "0"4014 FOR_KW@5635..5638 "for"
3718 R_BRACK@5924..5925 "]"4015 WHITESPACE@5638..5639 " "
3719 SEMI@5925..5926 ";"4016 DESTRUCT_FULL@5639..5640
3720 WHITESPACE@5926..5937 "\n "4017 NAME@5639..5640
3721 STMT_LOCAL@5937..59954018 IDENT@5639..5640 "x"
3722 LOCAL_KW@5937..5942 "local"4019 WHITESPACE@5640..5641 " "
3723 WHITESPACE@5942..5943 " "4020 IN_KW@5641..5643 "in"
3724 BIND_DESTRUCT@5943..59944021 WHITESPACE@5643..5644 " "
3725 DESTRUCT_FULL@5943..59524022 EXPR@5644..5652
3726 NAME@5943..59524023 EXPR_VAR@5644..5652
3727 IDENT@5943..5952 "has_attrs"4024 NAME@5644..5652
3728 WHITESPACE@5952..5953 " "4025 IDENT@5644..5652 "children"
3729 ASSIGN@5953..5954 "="4026 R_BRACK@5652..5653 "]"
3730 WHITESPACE@5954..5955 " "4027 COMMA@5653..5654 ","
3731 EXPR_BINARY@5955..59944028 WHITESPACE@5654..5655 " "
3732 LHS_EXPR@5955..59724029 EXPR@5655..5659
3733 EXPR_BINARY@5955..59724030 EXPR_STRING@5655..5659
3734 LHS_EXPR@5955..59684031 STRING_SINGLE@5655..5659 "'</'"
3735 EXPR_APPLY@5955..59684032 COMMA@5659..5660 ","
3736 EXPR_INDEX@5955..59654033 WHITESPACE@5660..5661 " "
3737 EXPR_VAR@5955..59584034 EXPR@5661..5664
3738 NAME@5955..59584035 EXPR_VAR@5661..5664
3739 IDENT@5955..5958 "std"4036 NAME@5661..5664
3740 DOT@5958..5959 "."4037 IDENT@5661..5664 "tag"
3741 NAME@5959..59654038 COMMA@5664..5665 ","
3742 IDENT@5959..5965 "length"4039 WHITESPACE@5665..5666 " "
3743 ARGS_DESC@5965..59684040 EXPR@5666..5669
3744 L_PAREN@5965..5966 "("4041 EXPR_STRING@5666..5669
3745 ARG@5966..59674042 STRING_SINGLE@5666..5669 "'>'"
3746 EXPR_VAR@5966..59674043 R_BRACK@5669..5670 "]"
3747 NAME@5966..59674044 R_PAREN@5670..5671 ")"
3748 IDENT@5966..5967 "v"4045 SEMI@5671..5672 ";"
3749 R_PAREN@5967..5968 ")"4046 WHITESPACE@5672..5680 "\n\n "
3750 WHITESPACE@5968..5969 " "4047 EXPR_VAR@5680..5683
3751 GT@5969..5970 ">"4048 NAME@5680..5683
3752 WHITESPACE@5970..5971 " "4049 IDENT@5680..5683 "aux"
3753 EXPR_NUMBER@5971..59724050 SUFFIX_APPLY@5683..5690
3754 FLOAT@5971..5972 "1"4051 ARGS_DESC@5683..5690
3755 WHITESPACE@5972..5973 " "4052 L_PAREN@5683..5684 "("
3756 AND@5973..5975 "&&"4053 ARG@5684..5689
3757 WHITESPACE@5975..5976 " "4054 EXPR@5684..5689
3758 EXPR_APPLY@5976..59944055 EXPR_VAR@5684..5689
3759 EXPR_INDEX@5976..59884056 NAME@5684..5689
3760 EXPR_VAR@5976..59794057 IDENT@5684..5689 "value"
3761 NAME@5976..59794058 R_PAREN@5689..5690 ")"
3762 IDENT@5976..5979 "std"4059 COMMA@5690..5691 ","
3763 DOT@5979..5980 "."4060 WHITESPACE@5691..5695 "\n\n "
3764 NAME@5980..59884061 MEMBER_FIELD_METHOD@5695..6483
3765 IDENT@5980..5988 "isObject"4062 FIELD_NAME_FIXED@5695..5705
3766 ARGS_DESC@5988..59944063 NAME@5695..5705
3767 L_PAREN@5988..5989 "("4064 IDENT@5695..5705 "mergePatch"
3768 ARG@5989..59934065 PARAMS_DESC@5705..5720
3769 EXPR_INDEX_EXPR@5989..59934066 L_PAREN@5705..5706 "("
3770 LHS_EXPR@5989..59904067 PARAM@5706..5712
3771 EXPR_VAR@5989..59904068 DESTRUCT_FULL@5706..5712
3772 NAME@5989..59904069 NAME@5706..5712
3773 IDENT@5989..5990 "v"4070 IDENT@5706..5712 "target"
3774 L_BRACK@5990..5991 "["4071 COMMA@5712..5713 ","
3775 EXPR_NUMBER@5991..59924072 WHITESPACE@5713..5714 " "
3776 FLOAT@5991..5992 "1"4073 PARAM@5714..5719
3777 R_BRACK@5992..5993 "]"4074 DESTRUCT_FULL@5714..5719
3778 R_PAREN@5993..5994 ")"4075 NAME@5714..5719
3779 SEMI@5994..5995 ";"4076 IDENT@5714..5719 "patch"
3780 WHITESPACE@5995..6006 "\n "4077 R_PAREN@5719..5720 ")"
3781 STMT_LOCAL@6006..60514078 COLONCOLON@5720..5722 "::"
3782 LOCAL_KW@6006..6011 "local"4079 WHITESPACE@5722..5727 "\n "
3783 WHITESPACE@6011..6012 " "4080 EXPR@5727..6483
3784 BIND_DESTRUCT@6012..60504081 EXPR_IF_THEN_ELSE@5727..6483
3785 DESTRUCT_FULL@6012..60174082 IF_KW@5727..5729 "if"
3786 NAME@6012..60174083 WHITESPACE@5729..5730 " "
3787 IDENT@6012..6017 "attrs"4084 EXPR@5730..5749
3788 WHITESPACE@6017..6018 " "4085 EXPR_VAR@5730..5733
3789 ASSIGN@6018..6019 "="4086 NAME@5730..5733
3790 WHITESPACE@6019..6020 " "4087 IDENT@5730..5733 "std"
3791 EXPR_IF_THEN_ELSE@6020..60504088 SUFFIX_INDEX@5733..5742
3792 IF_KW@6020..6022 "if"4089 DOT@5733..5734 "."
3793 WHITESPACE@6022..6023 " "4090 NAME@5734..5742
3794 EXPR_VAR@6023..60324091 IDENT@5734..5742 "isObject"
3795 NAME@6023..60324092 SUFFIX_APPLY@5742..5749
3796 IDENT@6023..6032 "has_attrs"4093 ARGS_DESC@5742..5749
3797 WHITESPACE@6032..6033 " "4094 L_PAREN@5742..5743 "("
3798 THEN_KW@6033..6037 "then"4095 ARG@5743..5748
3799 WHITESPACE@6037..6038 " "4096 EXPR@5743..5748
3800 TRUE_EXPR@6038..60424097 EXPR_VAR@5743..5748
3801 EXPR_INDEX_EXPR@6038..60424098 NAME@5743..5748
3802 LHS_EXPR@6038..60394099 IDENT@5743..5748 "patch"
3803 EXPR_VAR@6038..60394100 R_PAREN@5748..5749 ")"
3804 NAME@6038..60394101 WHITESPACE@5749..5750 " "
3805 IDENT@6038..6039 "v"4102 THEN_KW@5750..5754 "then"
3806 L_BRACK@6039..6040 "["4103 WHITESPACE@5754..5761 "\n "
3807 EXPR_NUMBER@6040..60414104 TRUE_EXPR@5761..6462
3808 FLOAT@6040..6041 "1"4105 EXPR@5761..6462
3809 R_BRACK@6041..6042 "]"4106 STMT_LOCAL@5761..5835
3810 WHITESPACE@6042..6043 " "4107 LOCAL_KW@5761..5766 "local"
3811 ELSE_KW@6043..6047 "else"4108 WHITESPACE@5766..5767 " "
3812 WHITESPACE@6047..6048 " "4109 BIND_DESTRUCT@5767..5834
3813 FALSE_EXPR@6048..60504110 DESTRUCT_FULL@5767..5780
3814 EXPR_OBJECT@6048..60504111 NAME@5767..5780
3815 OBJ_BODY_MEMBER_LIST@6048..60504112 IDENT@5767..5780 "target_object"
3816 L_BRACE@6048..6049 "{"4113 WHITESPACE@5780..5781 " "
3817 R_BRACE@6049..6050 "}"4114 ASSIGN@5781..5782 "="
3818 SEMI@6050..6051 ";"4115 WHITESPACE@5782..5791 "\n "
3819 WHITESPACE@6051..6062 "\n "4116 EXPR@5791..5834
3820 STMT_LOCAL@6062..61144117 EXPR_IF_THEN_ELSE@5791..5834
3821 LOCAL_KW@6062..6067 "local"4118 IF_KW@5791..5793 "if"
3822 WHITESPACE@6067..6068 " "4119 WHITESPACE@5793..5794 " "
3823 BIND_DESTRUCT@6068..61134120 EXPR@5794..5814
3824 DESTRUCT_FULL@6068..60764121 EXPR_VAR@5794..5797
3825 NAME@6068..60764122 NAME@5794..5797
3826 IDENT@6068..6076 "children"4123 IDENT@5794..5797 "std"
3827 WHITESPACE@6076..6077 " "4124 SUFFIX_INDEX@5797..5806
3828 ASSIGN@6077..6078 "="4125 DOT@5797..5798 "."
3829 WHITESPACE@6078..6079 " "4126 NAME@5798..5806
3830 EXPR_IF_THEN_ELSE@6079..61134127 IDENT@5798..5806 "isObject"
3831 IF_KW@6079..6081 "if"4128 SUFFIX_APPLY@5806..5814
3832 WHITESPACE@6081..6082 " "4129 ARGS_DESC@5806..5814
3833 EXPR_VAR@6082..60914130 L_PAREN@5806..5807 "("
3834 NAME@6082..60914131 ARG@5807..5813
3835 IDENT@6082..6091 "has_attrs"4132 EXPR@5807..5813
3836 WHITESPACE@6091..6092 " "4133 EXPR_VAR@5807..5813
3837 THEN_KW@6092..6096 "then"4134 NAME@5807..5813
3838 WHITESPACE@6096..6097 " "4135 IDENT@5807..5813 "target"
3839 TRUE_EXPR@6097..61024136 R_PAREN@5813..5814 ")"
3840 EXPR_SLICE@6097..61024137 WHITESPACE@5814..5815 " "
3841 EXPR_VAR@6097..60984138 THEN_KW@5815..5819 "then"
3842 NAME@6097..60984139 WHITESPACE@5819..5820 " "
3843 IDENT@6097..6098 "v"4140 TRUE_EXPR@5820..5826
3844 SLICE_DESC@6098..61024141 EXPR@5820..5826
3845 L_BRACK@6098..6099 "["4142 EXPR_VAR@5820..5826
3846 EXPR_NUMBER@6099..61004143 NAME@5820..5826
3847 FLOAT@6099..6100 "2"4144 IDENT@5820..5826 "target"
3848 COLON@6100..6101 ":"4145 WHITESPACE@5826..5827 " "
3849 R_BRACK@6101..6102 "]"4146 ELSE_KW@5827..5831 "else"
3850 WHITESPACE@6102..6103 " "4147 WHITESPACE@5831..5832 " "
3851 ELSE_KW@6103..6107 "else"4148 FALSE_EXPR@5832..5834
3852 WHITESPACE@6107..6108 " "4149 EXPR@5832..5834
3853 FALSE_EXPR@6108..61134150 EXPR_OBJECT@5832..5834
3854 EXPR_SLICE@6108..61134151 OBJ_BODY_MEMBER_LIST@5832..5834
3855 EXPR_VAR@6108..61094152 L_BRACE@5832..5833 "{"
3856 NAME@6108..61094153 R_BRACE@5833..5834 "}"
3857 IDENT@6108..6109 "v"4154 SEMI@5834..5835 ";"
3858 SLICE_DESC@6109..61134155 WHITESPACE@5835..5843 "\n\n "
3859 L_BRACK@6109..6110 "["4156 STMT_LOCAL@5843..5949
3860 EXPR_NUMBER@6110..61114157 LOCAL_KW@5843..5848 "local"
3861 FLOAT@6110..6111 "1"4158 WHITESPACE@5848..5849 " "
3862 COLON@6111..6112 ":"4159 BIND_DESTRUCT@5849..5948
3863 R_BRACK@6112..6113 "]"4160 DESTRUCT_FULL@5849..5862
3864 SEMI@6113..6114 ";"4161 NAME@5849..5862
3865 WHITESPACE@6114..6125 "\n "4162 IDENT@5849..5862 "target_fields"
3866 STMT_LOCAL@6125..62314163 WHITESPACE@5862..5863 " "
3867 LOCAL_KW@6125..6130 "local"4164 ASSIGN@5863..5864 "="
3868 WHITESPACE@6130..6131 " "4165 WHITESPACE@5864..5873 "\n "
3869 BIND_DESTRUCT@6131..62304166 EXPR@5873..5948
3870 DESTRUCT_FULL@6131..61404167 EXPR_IF_THEN_ELSE@5873..5948
3871 NAME@6131..61404168 IF_KW@5873..5875 "if"
3872 IDENT@6131..6140 "attrs_str"4169 WHITESPACE@5875..5876 " "
3873 WHITESPACE@6140..6141 " "4170 EXPR@5876..5903
3874 ASSIGN@6141..6142 "="4171 EXPR_VAR@5876..5879
3875 WHITESPACE@6142..6155 "\n "4172 NAME@5876..5879
3876 EXPR_APPLY@6155..62304173 IDENT@5876..5879 "std"
3877 EXPR_INDEX@6155..61634174 SUFFIX_INDEX@5879..5888
3878 EXPR_VAR@6155..61584175 DOT@5879..5880 "."
3879 NAME@6155..61584176 NAME@5880..5888
3880 IDENT@6155..6158 "std"4177 IDENT@5880..5888 "isObject"
3881 DOT@6158..6159 "."4178 SUFFIX_APPLY@5888..5903
3882 NAME@6159..61634179 ARGS_DESC@5888..5903
3883 IDENT@6159..6163 "join"4180 L_PAREN@5888..5889 "("
3884 ARGS_DESC@6163..62304181 ARG@5889..5902
3885 L_PAREN@6163..6164 "("4182 EXPR@5889..5902
3886 ARG@6164..61664183 EXPR_VAR@5889..5902
3887 EXPR_STRING@6164..61664184 NAME@5889..5902
3888 STRING_SINGLE@6164..6166 "''"4185 IDENT@5889..5902 "target_object"
3889 COMMA@6166..6167 ","4186 R_PAREN@5902..5903 ")"
3890 WHITESPACE@6167..6168 " "4187 WHITESPACE@5903..5904 " "
3891 ARG@6168..62294188 THEN_KW@5904..5908 "then"
3892 EXPR_ARRAY_COMP@6168..62294189 WHITESPACE@5908..5909 " "
3893 L_BRACK@6168..6169 "["4190 TRUE_EXPR@5909..5940
3894 EXPR_BINARY@6169..61954191 EXPR@5909..5940
3895 LHS_EXPR@6169..61794192 EXPR_VAR@5909..5912
3896 EXPR_STRING@6169..61794193 NAME@5909..5912
3897 STRING_SINGLE@6169..6179 "' %s=\"%s\"'"4194 IDENT@5909..5912 "std"
3898 WHITESPACE@6179..6180 " "4195 SUFFIX_INDEX@5912..5925
3899 MODULO@6180..6181 "%"4196 DOT@5912..5913 "."
3900 WHITESPACE@6181..6182 " "4197 NAME@5913..5925
3901 EXPR_ARRAY@6182..61954198 IDENT@5913..5925 "objectFields"
3902 L_BRACK@6182..6183 "["4199 SUFFIX_APPLY@5925..5940
3903 EXPR_VAR@6183..61844200 ARGS_DESC@5925..5940
3904 NAME@6183..61844201 L_PAREN@5925..5926 "("
3905 IDENT@6183..6184 "k"4202 ARG@5926..5939
3906 COMMA@6184..6185 ","4203 EXPR@5926..5939
3907 WHITESPACE@6185..6186 " "4204 EXPR_VAR@5926..5939
3908 EXPR_INDEX_EXPR@6186..61944205 NAME@5926..5939
3909 LHS_EXPR@6186..61914206 IDENT@5926..5939 "target_object"
3910 EXPR_VAR@6186..61914207 R_PAREN@5939..5940 ")"
3911 NAME@6186..61914208 WHITESPACE@5940..5941 " "
3912 IDENT@6186..6191 "attrs"4209 ELSE_KW@5941..5945 "else"
3913 L_BRACK@6191..6192 "["4210 WHITESPACE@5945..5946 " "
3914 EXPR_VAR@6192..61934211 FALSE_EXPR@5946..5948
3915 NAME@6192..61934212 EXPR@5946..5948
3916 IDENT@6192..6193 "k"4213 EXPR_ARRAY@5946..5948
3917 R_BRACK@6193..6194 "]"4214 L_BRACK@5946..5947 "["
3918 R_BRACK@6194..6195 "]"4215 R_BRACK@5947..5948 "]"
3919 WHITESPACE@6195..6196 " "4216 SEMI@5948..5949 ";"
3920 FOR_SPEC@6196..62284217 WHITESPACE@5949..5957 "\n\n "
3921 FOR_KW@6196..6199 "for"4218 STMT_LOCAL@5957..6034
3922 WHITESPACE@6199..6200 " "4219 LOCAL_KW@5957..5962 "local"
3923 NAME@6200..62014220 WHITESPACE@5962..5963 " "
3924 IDENT@6200..6201 "k"4221 BIND_DESTRUCT@5963..6033
3925 WHITESPACE@6201..6202 " "4222 DESTRUCT_FULL@5963..5974
3926 IN_KW@6202..6204 "in"4223 NAME@5963..5974
3927 WHITESPACE@6204..6205 " "4224 IDENT@5963..5974 "null_fields"
3928 EXPR_APPLY@6205..62284225 WHITESPACE@5974..5975 " "
3929 EXPR_INDEX@6205..62214226 ASSIGN@5975..5976 "="
3930 EXPR_VAR@6205..62084227 WHITESPACE@5976..5977 " "
3931 NAME@6205..62084228 EXPR@5977..6033
3932 IDENT@6205..6208 "std"4229 EXPR_ARRAY_COMP@5977..6033
3933 DOT@6208..6209 "."4230 L_BRACK@5977..5978 "["
3934 NAME@6209..62214231 EXPR@5978..5979
3935 IDENT@6209..6221 "objectFields"4232 EXPR_VAR@5978..5979
3936 ARGS_DESC@6221..62284233 NAME@5978..5979
3937 L_PAREN@6221..6222 "("4234 IDENT@5978..5979 "k"
3938 ARG@6222..62274235 WHITESPACE@5979..5980 " "
3939 EXPR_VAR@6222..62274236 FOR_SPEC@5980..6012
3940 NAME@6222..62274237 FOR_KW@5980..5983 "for"
3941 IDENT@6222..6227 "attrs"4238 WHITESPACE@5983..5984 " "
3942 R_PAREN@6227..6228 ")"4239 DESTRUCT_FULL@5984..5985
3943 R_BRACK@6228..6229 "]"4240 NAME@5984..5985
3944 R_PAREN@6229..6230 ")"4241 IDENT@5984..5985 "k"
3945 SEMI@6230..6231 ";"4242 WHITESPACE@5985..5986 " "
3946 WHITESPACE@6231..6242 "\n "4243 IN_KW@5986..5988 "in"
3947 FALSE_EXPR@6242..63264244 WHITESPACE@5988..5989 " "
3948 EXPR_APPLY@6242..63264245 EXPR@5989..6012
3949 EXPR_INDEX@6242..62544246 EXPR_VAR@5989..5992
3950 EXPR_VAR@6242..62454247 NAME@5989..5992
3951 NAME@6242..62454248 IDENT@5989..5992 "std"
3952 IDENT@6242..6245 "std"4249 SUFFIX_INDEX@5992..6005
3953 DOT@6245..6246 "."4250 DOT@5992..5993 "."
3954 NAME@6246..62544251 NAME@5993..6005
3955 IDENT@6246..6254 "deepJoin"4252 IDENT@5993..6005 "objectFields"
3956 ARGS_DESC@6254..63264253 SUFFIX_APPLY@6005..6012
3957 L_PAREN@6254..6255 "("4254 ARGS_DESC@6005..6012
3958 ARG@6255..63254255 L_PAREN@6005..6006 "("
3959 EXPR_ARRAY@6255..63254256 ARG@6006..6011
3960 L_BRACK@6255..6256 "["4257 EXPR@6006..6011
3961 EXPR_STRING@6256..62594258 EXPR_VAR@6006..6011
3962 STRING_SINGLE@6256..6259 "'<'"4259 NAME@6006..6011
3963 COMMA@6259..6260 ","4260 IDENT@6006..6011 "patch"
3964 WHITESPACE@6260..6261 " "4261 R_PAREN@6011..6012 ")"
3965 EXPR_VAR@6261..62644262 WHITESPACE@6012..6013 " "
3966 NAME@6261..62644263 IF_SPEC@6013..6032
3967 IDENT@6261..6264 "tag"4264 IF_KW@6013..6015 "if"
3968 COMMA@6264..6265 ","4265 WHITESPACE@6015..6016 " "
3969 WHITESPACE@6265..6266 " "4266 EXPR@6016..6032
3970 EXPR_VAR@6266..62754267 EXPR_BINARY@6016..6032
3971 NAME@6266..62754268 EXPR@6016..6021
3972 IDENT@6266..6275 "attrs_str"4269 EXPR_VAR@6016..6021
3973 COMMA@6275..6276 ","4270 NAME@6016..6021
3974 WHITESPACE@6276..6277 " "4271 IDENT@6016..6021 "patch"
3975 EXPR_STRING@6277..62804272 SUFFIX_INDEX_EXPR@6021..6024
3976 STRING_SINGLE@6277..6280 "'>'"4273 L_BRACK@6021..6022 "["
3977 COMMA@6280..6281 ","4274 EXPR@6022..6023
3978 WHITESPACE@6281..6282 " "4275 EXPR_VAR@6022..6023
3979 EXPR_ARRAY_COMP@6282..63084276 NAME@6022..6023
3980 L_BRACK@6282..6283 "["4277 IDENT@6022..6023 "k"
3981 EXPR_APPLY@6283..62894278 R_BRACK@6023..6024 "]"
3982 EXPR_VAR@6283..62864279 WHITESPACE@6024..6025 " "
3983 NAME@6283..62864280 EQ@6025..6027 "=="
3984 IDENT@6283..6286 "aux"4281 WHITESPACE@6027..6028 " "
3985 ARGS_DESC@6286..62894282 EXPR@6028..6032
3986 L_PAREN@6286..6287 "("4283 EXPR_LITERAL@6028..6032
3987 ARG@6287..62884284 NULL_KW@6028..6032 "null"
3988 EXPR_VAR@6287..62884285 R_BRACK@6032..6033 "]"
3989 NAME@6287..62884286 SEMI@6033..6034 ";"
3990 IDENT@6287..6288 "x"4287 WHITESPACE@6034..6041 "\n "
3991 R_PAREN@6288..6289 ")"4288 STMT_LOCAL@6041..6114
3992 WHITESPACE@6289..6290 " "4289 LOCAL_KW@6041..6046 "local"
3993 FOR_SPEC@6290..63074290 WHITESPACE@6046..6047 " "
3994 FOR_KW@6290..6293 "for"4291 BIND_DESTRUCT@6047..6113
3995 WHITESPACE@6293..6294 " "4292 DESTRUCT_FULL@6047..6058
3996 NAME@6294..62954293 NAME@6047..6058
3997 IDENT@6294..6295 "x"4294 IDENT@6047..6058 "both_fields"
3998 WHITESPACE@6295..6296 " "4295 WHITESPACE@6058..6059 " "
3999 IN_KW@6296..6298 "in"4296 ASSIGN@6059..6060 "="
4000 WHITESPACE@6298..6299 " "4297 WHITESPACE@6060..6061 " "
4001 EXPR_VAR@6299..63074298 EXPR@6061..6113
4002 NAME@6299..63074299 EXPR_VAR@6061..6064
4003 IDENT@6299..6307 "children"4300 NAME@6061..6064
4004 R_BRACK@6307..6308 "]"4301 IDENT@6061..6064 "std"
4005 COMMA@6308..6309 ","4302 SUFFIX_INDEX@6064..6073
4006 WHITESPACE@6309..6310 " "4303 DOT@6064..6065 "."
4007 EXPR_STRING@6310..63144304 NAME@6065..6073
4008 STRING_SINGLE@6310..6314 "'</'"4305 IDENT@6065..6073 "setUnion"
4009 COMMA@6314..6315 ","4306 SUFFIX_APPLY@6073..6113
4010 WHITESPACE@6315..6316 " "4307 ARGS_DESC@6073..6113
4011 EXPR_VAR@6316..63194308 L_PAREN@6073..6074 "("
4012 NAME@6316..63194309 ARG@6074..6087
4013 IDENT@6316..6319 "tag"4310 EXPR@6074..6087
4014 COMMA@6319..6320 ","4311 EXPR_VAR@6074..6087
4015 WHITESPACE@6320..6321 " "4312 NAME@6074..6087
4016 EXPR_STRING@6321..63244313 IDENT@6074..6087 "target_fields"
4017 STRING_SINGLE@6321..6324 "'>'"4314 COMMA@6087..6088 ","
4018 R_BRACK@6324..6325 "]"4315 WHITESPACE@6088..6089 " "
4019 R_PAREN@6325..6326 ")"4316 ARG@6089..6112
4020 SEMI@6326..6327 ";"4317 EXPR@6089..6112
4021 WHITESPACE@6327..6335 "\n\n "4318 EXPR_VAR@6089..6092
4022 FALSE_EXPR@6335..63454319 NAME@6089..6092
4023 EXPR_APPLY@6335..63454320 IDENT@6089..6092 "std"
4024 EXPR_VAR@6335..63384321 SUFFIX_INDEX@6092..6105
4025 NAME@6335..63384322 DOT@6092..6093 "."
4026 IDENT@6335..6338 "aux"4323 NAME@6093..6105
4027 ARGS_DESC@6338..63454324 IDENT@6093..6105 "objectFields"
4028 L_PAREN@6338..6339 "("4325 SUFFIX_APPLY@6105..6112
4029 ARG@6339..63444326 ARGS_DESC@6105..6112
4030 EXPR_VAR@6339..63444327 L_PAREN@6105..6106 "("
4031 NAME@6339..63444328 ARG@6106..6111
4032 IDENT@6339..6344 "value"4329 EXPR@6106..6111
4033 R_PAREN@6344..6345 ")"4330 EXPR_VAR@6106..6111
4034 COMMA@6345..6346 ","4331 NAME@6106..6111
4035 WHITESPACE@6346..6350 "\n\n "4332 IDENT@6106..6111 "patch"
4036 MEMBER_FIELD_METHOD@6350..68994333 R_PAREN@6111..6112 ")"
4037 FIELD_NAME_FIXED@6350..63584334 R_PAREN@6112..6113 ")"
4038 NAME@6350..63584335 SEMI@6113..6114 ";"
4039 IDENT@6350..6358 "setUnion"4336 WHITESPACE@6114..6122 "\n\n "
4040 PARAMS_DESC@6358..63734337 EXPR_OBJECT@6122..6462
4041 L_PAREN@6358..6359 "("4338 OBJ_BODY_COMP@6122..6462
4042 PARAM@6359..63604339 L_BRACE@6122..6123 "{"
4043 DESTRUCT_FULL@6359..63604340 WHITESPACE@6123..6132 "\n "
4044 NAME@6359..63604341 MEMBER_FIELD_NORMAL@6132..6399
4045 IDENT@6359..6360 "a"4342 FIELD_NAME_DYNAMIC@6132..6135
4046 COMMA@6360..6361 ","4343 L_BRACK@6132..6133 "["
4047 WHITESPACE@6361..6362 " "4344 EXPR@6133..6134
4048 PARAM@6362..63634345 EXPR_VAR@6133..6134
4049 DESTRUCT_FULL@6362..63634346 NAME@6133..6134
4050 NAME@6362..63634347 IDENT@6133..6134 "k"
4051 IDENT@6362..6363 "b"4348 R_BRACK@6134..6135 "]"
4052 COMMA@6363..6364 ","4349 COLON@6135..6136 ":"
4053 WHITESPACE@6364..6365 " "4350 WHITESPACE@6136..6147 "\n "
4054 PARAM@6365..63724351 EXPR@6147..6399
4055 DESTRUCT_FULL@6365..63694352 EXPR_IF_THEN_ELSE@6147..6399
4056 NAME@6365..63694353 IF_KW@6147..6149 "if"
4057 IDENT@6365..6369 "keyF"4354 WHITESPACE@6149..6150 " "
4058 ASSIGN@6369..6370 "="4355 EXPR@6150..6174
4059 EXPR_VAR@6370..63724356 EXPR_UNARY@6150..6174
4060 NAME@6370..63724357 NOT@6150..6151 "!"
4061 IDENT@6370..6372 "id"4358 EXPR_VAR@6151..6154
4062 R_PAREN@6372..6373 ")"4359 NAME@6151..6154
4063 COLONCOLON@6373..6375 "::"4360 IDENT@6151..6154 "std"
4064 WHITESPACE@6375..6380 "\n "4361 SUFFIX_INDEX@6154..6164
4065 SINGLE_LINE_SLASH_COMMENT@6380..6422 "// NOTE: order matter ..."4362 DOT@6154..6155 "."
4066 WHITESPACE@6422..6426 " "4363 NAME@6155..6164
4067 STMT_LOCAL@6426..68754364 IDENT@6155..6164 "objectHas"
4068 LOCAL_KW@6426..6431 "local"4365 SUFFIX_APPLY@6164..6174
4069 WHITESPACE@6431..6432 " "4366 ARGS_DESC@6164..6174
4070 BIND_FUNCTION@6432..68744367 L_PAREN@6164..6165 "("
4071 NAME@6432..64354368 ARG@6165..6170
4072 IDENT@6432..6435 "aux"4369 EXPR@6165..6170
4073 PARAMS_DESC@6435..64524370 EXPR_VAR@6165..6170
4074 L_PAREN@6435..6436 "("4371 NAME@6165..6170
4075 PARAM@6436..64374372 IDENT@6165..6170 "patch"
4076 DESTRUCT_FULL@6436..64374373 COMMA@6170..6171 ","
4077 NAME@6436..64374374 WHITESPACE@6171..6172 " "
4078 IDENT@6436..6437 "a"4375 ARG@6172..6173
4079 COMMA@6437..6438 ","4376 EXPR@6172..6173
4080 WHITESPACE@6438..6439 " "4377 EXPR_VAR@6172..6173
4081 PARAM@6439..64404378 NAME@6172..6173
4082 DESTRUCT_FULL@6439..64404379 IDENT@6172..6173 "k"
4083 NAME@6439..64404380 R_PAREN@6173..6174 ")"
4084 IDENT@6439..6440 "b"4381 WHITESPACE@6174..6175 " "
4085 COMMA@6440..6441 ","4382 THEN_KW@6175..6179 "then"
4086 WHITESPACE@6441..6442 " "4383 WHITESPACE@6179..6192 "\n "
4087 PARAM@6442..64434384 TRUE_EXPR@6192..6208
4088 DESTRUCT_FULL@6442..64434385 EXPR@6192..6208
4089 NAME@6442..64434386 EXPR_VAR@6192..6205
4090 IDENT@6442..6443 "i"4387 NAME@6192..6205
4091 COMMA@6443..6444 ","4388 IDENT@6192..6205 "target_object"
4092 WHITESPACE@6444..6445 " "4389 SUFFIX_INDEX_EXPR@6205..6208
4093 PARAM@6445..64464390 L_BRACK@6205..6206 "["
4094 DESTRUCT_FULL@6445..64464391 EXPR@6206..6207
4095 NAME@6445..64464392 EXPR_VAR@6206..6207
4096 IDENT@6445..6446 "j"4393 NAME@6206..6207
4097 COMMA@6446..6447 ","4394 IDENT@6206..6207 "k"
4098 WHITESPACE@6447..6448 " "4395 R_BRACK@6207..6208 "]"
4099 PARAM@6448..64514396 WHITESPACE@6208..6219 "\n "
4100 DESTRUCT_FULL@6448..64514397 ELSE_KW@6219..6223 "else"
4101 NAME@6448..64514398 WHITESPACE@6223..6224 " "
4102 IDENT@6448..6451 "acc"4399 FALSE_EXPR@6224..6399
4103 R_PAREN@6451..6452 ")"4400 EXPR@6224..6399
4104 WHITESPACE@6452..6453 " "4401 EXPR_IF_THEN_ELSE@6224..6399
4105 ASSIGN@6453..6454 "="4402 IF_KW@6224..6226 "if"
4106 WHITESPACE@6454..6461 "\n "4403 WHITESPACE@6226..6227 " "
4107 EXPR_IF_THEN_ELSE@6461..68744404 EXPR@6227..6259
4108 IF_KW@6461..6463 "if"4405 EXPR_UNARY@6227..6259
4109 WHITESPACE@6463..6464 " "4406 NOT@6227..6228 "!"
4110 EXPR_BINARY@6464..64824407 EXPR_VAR@6228..6231
4111 LHS_EXPR@6464..64654408 NAME@6228..6231
4112 EXPR_VAR@6464..64654409 IDENT@6228..6231 "std"
4113 NAME@6464..64654410 SUFFIX_INDEX@6231..6241
4114 IDENT@6464..6465 "i"4411 DOT@6231..6232 "."
4115 WHITESPACE@6465..6466 " "4412 NAME@6232..6241
4116 GE@6466..6468 ">="4413 IDENT@6232..6241 "objectHas"
4117 WHITESPACE@6468..6469 " "4414 SUFFIX_APPLY@6241..6259
4118 EXPR_APPLY@6469..64824415 ARGS_DESC@6241..6259
4119 EXPR_INDEX@6469..64794416 L_PAREN@6241..6242 "("
4120 EXPR_VAR@6469..64724417 ARG@6242..6255
4121 NAME@6469..64724418 EXPR@6242..6255
4122 IDENT@6469..6472 "std"4419 EXPR_VAR@6242..6255
4123 DOT@6472..6473 "."4420 NAME@6242..6255
4124 NAME@6473..64794421 IDENT@6242..6255 "target_object"
4125 IDENT@6473..6479 "length"4422 COMMA@6255..6256 ","
4126 ARGS_DESC@6479..64824423 WHITESPACE@6256..6257 " "
4127 L_PAREN@6479..6480 "("4424 ARG@6257..6258
4128 ARG@6480..64814425 EXPR@6257..6258
4129 EXPR_VAR@6480..64814426 EXPR_VAR@6257..6258
4130 NAME@6480..64814427 NAME@6257..6258
4131 IDENT@6480..6481 "a"4428 IDENT@6257..6258 "k"
4132 R_PAREN@6481..6482 ")"4429 R_PAREN@6258..6259 ")"
4133 WHITESPACE@6482..6483 " "4430 WHITESPACE@6259..6260 " "
4134 THEN_KW@6483..6487 "then"4431 THEN_KW@6260..6264 "then"
4135 WHITESPACE@6487..6496 "\n "4432 WHITESPACE@6264..6277 "\n "
4136 TRUE_EXPR@6496..65074433 TRUE_EXPR@6277..6318
4137 EXPR_BINARY@6496..65074434 EXPR@6277..6318
4138 LHS_EXPR@6496..64994435 EXPR_VAR@6277..6280
4139 EXPR_VAR@6496..64994436 NAME@6277..6280
4140 NAME@6496..64994437 IDENT@6277..6280 "std"
4141 IDENT@6496..6499 "acc"4438 SUFFIX_INDEX@6280..6291
4142 WHITESPACE@6499..6500 " "4439 DOT@6280..6281 "."
4143 PLUS@6500..6501 "+"4440 NAME@6281..6291
4144 WHITESPACE@6501..6502 " "4441 IDENT@6281..6291 "mergePatch"
4145 EXPR_SLICE@6502..65074442 SUFFIX_APPLY@6291..6318
4146 EXPR_VAR@6502..65034443 ARGS_DESC@6291..6318
4147 NAME@6502..65034444 L_PAREN@6291..6292 "("
4148 IDENT@6502..6503 "b"4445 ARG@6292..6296
4149 SLICE_DESC@6503..65074446 EXPR@6292..6296
4150 L_BRACK@6503..6504 "["4447 EXPR_LITERAL@6292..6296
4151 EXPR_VAR@6504..65054448 NULL_KW@6292..6296 "null"
4152 NAME@6504..65054449 COMMA@6296..6297 ","
4153 IDENT@6504..6505 "j"4450 WHITESPACE@6297..6298 " "
4154 COLON@6505..6506 ":"4451 ARG@6298..6306
4155 R_BRACK@6506..6507 "]"4452 EXPR@6298..6306
4156 WHITESPACE@6507..6514 "\n "4453 EXPR_VAR@6298..6303
4157 ELSE_KW@6514..6518 "else"4454 NAME@6298..6303
4158 WHITESPACE@6518..6519 " "4455 IDENT@6298..6303 "patch"
4159 FALSE_EXPR@6519..68744456 SUFFIX_INDEX_EXPR@6303..6306
4160 EXPR_IF_THEN_ELSE@6519..68744457 L_BRACK@6303..6304 "["
4161 IF_KW@6519..6521 "if"4458 EXPR@6304..6305
4162 WHITESPACE@6521..6522 " "4459 EXPR_VAR@6304..6305
4163 EXPR_BINARY@6522..65404460 NAME@6304..6305
4164 LHS_EXPR@6522..65234461 IDENT@6304..6305 "k"
4165 EXPR_VAR@6522..65234462 R_BRACK@6305..6306 "]"
4166 NAME@6522..65234463 R_PAREN@6306..6307 ")"
4167 IDENT@6522..6523 "j"4464 WHITESPACE@6307..6308 " "
4168 WHITESPACE@6523..6524 " "4465 TAILSTRICT_KW@6308..6318 "tailstrict"
4169 GE@6524..6526 ">="4466 WHITESPACE@6318..6329 "\n "
4170 WHITESPACE@6526..6527 " "4467 ELSE_KW@6329..6333 "else"
4171 EXPR_APPLY@6527..65404468 WHITESPACE@6333..6346 "\n "
4172 EXPR_INDEX@6527..65374469 FALSE_EXPR@6346..6399
4173 EXPR_VAR@6527..65304470 EXPR@6346..6399
4174 NAME@6527..65304471 EXPR_VAR@6346..6349
4175 IDENT@6527..6530 "std"4472 NAME@6346..6349
4176 DOT@6530..6531 "."4473 IDENT@6346..6349 "std"
4177 NAME@6531..65374474 SUFFIX_INDEX@6349..6360
4178 IDENT@6531..6537 "length"4475 DOT@6349..6350 "."
4179 ARGS_DESC@6537..65404476 NAME@6350..6360
4180 L_PAREN@6537..6538 "("4477 IDENT@6350..6360 "mergePatch"
4181 ARG@6538..65394478 SUFFIX_APPLY@6360..6399
4182 EXPR_VAR@6538..65394479 ARGS_DESC@6360..6399
4183 NAME@6538..65394480 L_PAREN@6360..6361 "("
4184 IDENT@6538..6539 "b"4481 ARG@6361..6377
4185 R_PAREN@6539..6540 ")"4482 EXPR@6361..6377
4186 WHITESPACE@6540..6541 " "4483 EXPR_VAR@6361..6374
4187 THEN_KW@6541..6545 "then"4484 NAME@6361..6374
4188 WHITESPACE@6545..6554 "\n "4485 IDENT@6361..6374 "target_object"
4189 TRUE_EXPR@6554..65654486 SUFFIX_INDEX_EXPR@6374..6377
4190 EXPR_BINARY@6554..65654487 L_BRACK@6374..6375 "["
4191 LHS_EXPR@6554..65574488 EXPR@6375..6376
4192 EXPR_VAR@6554..65574489 EXPR_VAR@6375..6376
4193 NAME@6554..65574490 NAME@6375..6376
4194 IDENT@6554..6557 "acc"4491 IDENT@6375..6376 "k"
4195 WHITESPACE@6557..6558 " "4492 R_BRACK@6376..6377 "]"
4196 PLUS@6558..6559 "+"4493 COMMA@6377..6378 ","
4197 WHITESPACE@6559..6560 " "4494 WHITESPACE@6378..6379 " "
4198 EXPR_SLICE@6560..65654495 ARG@6379..6387
4199 EXPR_VAR@6560..65614496 EXPR@6379..6387
4200 NAME@6560..65614497 EXPR_VAR@6379..6384
4201 IDENT@6560..6561 "a"4498 NAME@6379..6384
4202 SLICE_DESC@6561..65654499 IDENT@6379..6384 "patch"
4203 L_BRACK@6561..6562 "["4500 SUFFIX_INDEX_EXPR@6384..6387
4204 EXPR_VAR@6562..65634501 L_BRACK@6384..6385 "["
4205 NAME@6562..65634502 EXPR@6385..6386
4206 IDENT@6562..6563 "i"4503 EXPR_VAR@6385..6386
4207 COLON@6563..6564 ":"4504 NAME@6385..6386
4208 R_BRACK@6564..6565 "]"4505 IDENT@6385..6386 "k"
4209 WHITESPACE@6565..6572 "\n "4506 R_BRACK@6386..6387 "]"
4210 ELSE_KW@6572..6576 "else"4507 R_PAREN@6387..6388 ")"
4211 WHITESPACE@6576..6585 "\n "4508 WHITESPACE@6388..6389 " "
4212 STMT_LOCAL@6585..66074509 TAILSTRICT_KW@6389..6399 "tailstrict"
4213 LOCAL_KW@6585..6590 "local"4510 WHITESPACE@6399..6408 "\n "
4214 WHITESPACE@6590..6591 " "4511 FOR_SPEC@6408..6454
4215 BIND_DESTRUCT@6591..66064512 FOR_KW@6408..6411 "for"
4216 DESTRUCT_FULL@6591..65934513 WHITESPACE@6411..6412 " "
4217 NAME@6591..65934514 DESTRUCT_FULL@6412..6413
4218 IDENT@6591..6593 "ak"4515 NAME@6412..6413
4219 WHITESPACE@6593..6594 " "4516 IDENT@6412..6413 "k"
4220 ASSIGN@6594..6595 "="4517 WHITESPACE@6413..6414 " "
4221 WHITESPACE@6595..6596 " "4518 IN_KW@6414..6416 "in"
4222 EXPR_APPLY@6596..66064519 WHITESPACE@6416..6417 " "
4223 EXPR_VAR@6596..66004520 EXPR@6417..6454
4224 NAME@6596..66004521 EXPR_VAR@6417..6420
4225 IDENT@6596..6600 "keyF"4522 NAME@6417..6420
4226 ARGS_DESC@6600..66064523 IDENT@6417..6420 "std"
4227 L_PAREN@6600..6601 "("4524 SUFFIX_INDEX@6420..6428
4228 ARG@6601..66054525 DOT@6420..6421 "."
4229 EXPR_INDEX_EXPR@6601..66054526 NAME@6421..6428
4230 LHS_EXPR@6601..66024527 IDENT@6421..6428 "setDiff"
4231 EXPR_VAR@6601..66024528 SUFFIX_APPLY@6428..6454
4232 NAME@6601..66024529 ARGS_DESC@6428..6454
4233 IDENT@6601..6602 "a"4530 L_PAREN@6428..6429 "("
4234 L_BRACK@6602..6603 "["4531 ARG@6429..6440
4235 EXPR_VAR@6603..66044532 EXPR@6429..6440
4236 NAME@6603..66044533 EXPR_VAR@6429..6440
4237 IDENT@6603..6604 "i"4534 NAME@6429..6440
4238 R_BRACK@6604..6605 "]"4535 IDENT@6429..6440 "both_fields"
4239 R_PAREN@6605..6606 ")"4536 COMMA@6440..6441 ","
4240 SEMI@6606..6607 ";"4537 WHITESPACE@6441..6442 " "
4241 WHITESPACE@6607..6616 "\n "4538 ARG@6442..6453
4242 STMT_LOCAL@6616..66384539 EXPR@6442..6453
4243 LOCAL_KW@6616..6621 "local"4540 EXPR_VAR@6442..6453
4244 WHITESPACE@6621..6622 " "4541 NAME@6442..6453
4245 BIND_DESTRUCT@6622..66374542 IDENT@6442..6453 "null_fields"
4246 DESTRUCT_FULL@6622..66244543 R_PAREN@6453..6454 ")"
4247 NAME@6622..66244544 WHITESPACE@6454..6461 "\n "
4248 IDENT@6622..6624 "bk"4545 R_BRACE@6461..6462 "}"
4249 WHITESPACE@6624..6625 " "4546 WHITESPACE@6462..6467 "\n "
4250 ASSIGN@6625..6626 "="4547 ELSE_KW@6467..6471 "else"
4251 WHITESPACE@6626..6627 " "4548 WHITESPACE@6471..6478 "\n "
4252 EXPR_APPLY@6627..66374549 FALSE_EXPR@6478..6483
4253 EXPR_VAR@6627..66314550 EXPR@6478..6483
4254 NAME@6627..66314551 EXPR_VAR@6478..6483
4255 IDENT@6627..6631 "keyF"4552 NAME@6478..6483
4256 ARGS_DESC@6631..66374553 IDENT@6478..6483 "patch"
4257 L_PAREN@6631..6632 "("4554 COMMA@6483..6484 ","
4258 ARG@6632..66364555 WHITESPACE@6484..6488 "\n\n "
4259 EXPR_INDEX_EXPR@6632..66364556 MEMBER_FIELD_METHOD@6488..6594
4260 LHS_EXPR@6632..66334557 FIELD_NAME_FIXED@6488..6491
4261 EXPR_VAR@6632..66334558 NAME@6488..6491
4262 NAME@6632..66334559 IDENT@6488..6491 "get"
4263 IDENT@6632..6633 "b"4560 PARAMS_DESC@6491..6528
4264 L_BRACK@6633..6634 "["4561 L_PAREN@6491..6492 "("
4265 EXPR_VAR@6634..66354562 PARAM@6492..6493
4266 NAME@6634..66354563 DESTRUCT_FULL@6492..6493
4267 IDENT@6634..6635 "j"4564 NAME@6492..6493
4268 R_BRACK@6635..6636 "]"4565 IDENT@6492..6493 "o"
4269 R_PAREN@6636..6637 ")"4566 COMMA@6493..6494 ","
4270 SEMI@6637..6638 ";"4567 WHITESPACE@6494..6495 " "
4271 WHITESPACE@6638..6647 "\n "4568 PARAM@6495..6496
4272 FALSE_EXPR@6647..68744569 DESTRUCT_FULL@6495..6496
4273 EXPR_IF_THEN_ELSE@6647..68744570 NAME@6495..6496
4274 IF_KW@6647..6649 "if"4571 IDENT@6495..6496 "f"
4275 WHITESPACE@6649..6650 " "4572 COMMA@6496..6497 ","
4276 EXPR_BINARY@6650..66584573 WHITESPACE@6497..6498 " "
4277 LHS_EXPR@6650..66524574 PARAM@6498..6510
4278 EXPR_VAR@6650..66524575 DESTRUCT_FULL@6498..6505
4279 NAME@6650..66524576 NAME@6498..6505
4280 IDENT@6650..6652 "ak"4577 IDENT@6498..6505 "default"
4281 WHITESPACE@6652..6653 " "4578 ASSIGN@6505..6506 "="
4282 EQ@6653..6655 "=="4579 EXPR@6506..6510
4283 WHITESPACE@6655..6656 " "4580 EXPR_LITERAL@6506..6510
4284 EXPR_VAR@6656..66584581 NULL_KW@6506..6510 "null"
4285 NAME@6656..66584582 COMMA@6510..6511 ","
4286 IDENT@6656..6658 "bk"4583 WHITESPACE@6511..6512 " "
4287 WHITESPACE@6658..6659 " "4584 PARAM@6512..6527
4288 THEN_KW@6659..6663 "then"4585 DESTRUCT_FULL@6512..6522
4289 WHITESPACE@6663..6674 "\n "4586 NAME@6512..6522
4290 TRUE_EXPR@6674..67224587 IDENT@6512..6522 "inc_hidden"
4291 EXPR_APPLY@6674..67224588 ASSIGN@6522..6523 "="
4292 EXPR_VAR@6674..66774589 EXPR@6523..6527
4293 NAME@6674..66774590 EXPR_LITERAL@6523..6527
4294 IDENT@6674..6677 "aux"4591 TRUE_KW@6523..6527 "true"
4295 ARGS_DESC@6677..67224592 R_PAREN@6527..6528 ")"
4296 L_PAREN@6677..6678 "("4593 COLONCOLON@6528..6530 "::"
4297 ARG@6678..66794594 WHITESPACE@6530..6535 "\n "
4298 EXPR_VAR@6678..66794595 EXPR@6535..6594
4299 NAME@6678..66794596 EXPR_IF_THEN_ELSE@6535..6594
4300 IDENT@6678..6679 "a"4597 IF_KW@6535..6537 "if"
4301 COMMA@6679..6680 ","4598 WHITESPACE@6537..6538 " "
4302 WHITESPACE@6680..6681 " "4599 EXPR@6538..6571
4303 ARG@6681..66824600 EXPR_VAR@6538..6541
4304 EXPR_VAR@6681..66824601 NAME@6538..6541
4305 NAME@6681..66824602 IDENT@6538..6541 "std"
4306 IDENT@6681..6682 "b"4603 SUFFIX_INDEX@6541..6553
4307 COMMA@6682..6683 ","4604 DOT@6541..6542 "."
4308 WHITESPACE@6683..6684 " "4605 NAME@6542..6553
4309 ARG@6684..66894606 IDENT@6542..6553 "objectHasEx"
4310 EXPR_BINARY@6684..66894607 SUFFIX_APPLY@6553..6571
4311 LHS_EXPR@6684..66854608 ARGS_DESC@6553..6571
4312 EXPR_VAR@6684..66854609 L_PAREN@6553..6554 "("
4313 NAME@6684..66854610 ARG@6554..6555
4314 IDENT@6684..6685 "i"4611 EXPR@6554..6555
4315 WHITESPACE@6685..6686 " "4612 EXPR_VAR@6554..6555
4316 PLUS@6686..6687 "+"4613 NAME@6554..6555
4317 WHITESPACE@6687..6688 " "4614 IDENT@6554..6555 "o"
4318 EXPR_NUMBER@6688..66894615 COMMA@6555..6556 ","
4319 FLOAT@6688..6689 "1"4616 WHITESPACE@6556..6557 " "
4320 COMMA@6689..6690 ","4617 ARG@6557..6558
4321 WHITESPACE@6690..6691 " "4618 EXPR@6557..6558
4322 ARG@6691..66964619 EXPR_VAR@6557..6558
4323 EXPR_BINARY@6691..66964620 NAME@6557..6558
4324 LHS_EXPR@6691..66924621 IDENT@6557..6558 "f"
4325 EXPR_VAR@6691..66924622 COMMA@6558..6559 ","
4326 NAME@6691..66924623 WHITESPACE@6559..6560 " "
4327 IDENT@6691..6692 "j"4624 ARG@6560..6570
4328 WHITESPACE@6692..6693 " "4625 EXPR@6560..6570
4329 PLUS@6693..6694 "+"4626 EXPR_VAR@6560..6570
4330 WHITESPACE@6694..6695 " "4627 NAME@6560..6570
4331 EXPR_NUMBER@6695..66964628 IDENT@6560..6570 "inc_hidden"
4332 FLOAT@6695..6696 "1"4629 R_PAREN@6570..6571 ")"
4333 COMMA@6696..6697 ","4630 WHITESPACE@6571..6572 " "
4334 WHITESPACE@6697..6698 " "4631 THEN_KW@6572..6576 "then"
4335 ARG@6698..67104632 WHITESPACE@6576..6577 " "
4336 EXPR_BINARY@6698..67104633 TRUE_EXPR@6577..6581
4337 LHS_EXPR@6698..67014634 EXPR@6577..6581
4338 EXPR_VAR@6698..67014635 EXPR_VAR@6577..6578
4339 NAME@6698..67014636 NAME@6577..6578
4340 IDENT@6698..6701 "acc"4637 IDENT@6577..6578 "o"
4638 SUFFIX_INDEX_EXPR@6578..6581
4639 L_BRACK@6578..6579 "["
4640 EXPR@6579..6580
4641 EXPR_VAR@6579..6580
4642 NAME@6579..6580
4643 IDENT@6579..6580 "f"
4644 R_BRACK@6580..6581 "]"
4645 WHITESPACE@6581..6582 " "
4646 ELSE_KW@6582..6586 "else"
4647 WHITESPACE@6586..6587 " "
4648 FALSE_EXPR@6587..6594
4649 EXPR@6587..6594
4650 EXPR_VAR@6587..6594
4651 NAME@6587..6594
4652 IDENT@6587..6594 "default"
4653 COMMA@6594..6595 ","
4654 WHITESPACE@6595..6599 "\n\n "
4655 MEMBER_FIELD_METHOD@6599..6733
4656 FIELD_NAME_FIXED@6599..6610
4657 NAME@6599..6610
4658 IDENT@6599..6610 "resolvePath"
4659 PARAMS_DESC@6610..6616
4660 L_PAREN@6610..6611 "("
4661 PARAM@6611..6612
4662 DESTRUCT_FULL@6611..6612
4663 NAME@6611..6612
4664 IDENT@6611..6612 "f"
4665 COMMA@6612..6613 ","
4666 WHITESPACE@6613..6614 " "
4667 PARAM@6614..6615
4668 DESTRUCT_FULL@6614..6615
4669 NAME@6614..6615
4670 IDENT@6614..6615 "r"
4671 R_PAREN@6615..6616 ")"
4672 COLONCOLON@6616..6618 "::"
4673 WHITESPACE@6618..6623 "\n "
4674 EXPR@6623..6733
4675 STMT_LOCAL@6623..6653
4676 LOCAL_KW@6623..6628 "local"
4677 WHITESPACE@6628..6629 " "
4678 BIND_DESTRUCT@6629..6652
4679 DESTRUCT_FULL@6629..6632
4680 NAME@6629..6632
4681 IDENT@6629..6632 "arr"
4682 WHITESPACE@6632..6633 " "
4683 ASSIGN@6633..6634 "="
4684 WHITESPACE@6634..6635 " "
4685 EXPR@6635..6652
4686 EXPR_VAR@6635..6638
4687 NAME@6635..6638
4688 IDENT@6635..6638 "std"
4689 SUFFIX_INDEX@6638..6644
4690 DOT@6638..6639 "."
4691 NAME@6639..6644
4692 IDENT@6639..6644 "split"
4693 SUFFIX_APPLY@6644..6652
4694 ARGS_DESC@6644..6652
4695 L_PAREN@6644..6645 "("
4696 ARG@6645..6646
4697 EXPR@6645..6646
4698 EXPR_VAR@6645..6646
4699 NAME@6645..6646
4700 IDENT@6645..6646 "f"
4701 COMMA@6646..6647 ","
4702 WHITESPACE@6647..6648 " "
4703 ARG@6648..6651
4704 EXPR@6648..6651
4705 EXPR_STRING@6648..6651
4706 STRING_SINGLE@6648..6651 "'/'"
4707 R_PAREN@6651..6652 ")"
4708 SEMI@6652..6653 ";"
4709 WHITESPACE@6653..6658 "\n "
4710 EXPR_VAR@6658..6661
4711 NAME@6658..6661
4712 IDENT@6658..6661 "std"
4713 SUFFIX_INDEX@6661..6666
4714 DOT@6661..6662 "."
4715 NAME@6662..6666
4716 IDENT@6662..6666 "join"
4717 SUFFIX_APPLY@6666..6733
4718 ARGS_DESC@6666..6733
4719 L_PAREN@6666..6667 "("
4720 ARG@6667..6670
4721 EXPR@6667..6670
4722 EXPR_STRING@6667..6670
4723 STRING_SINGLE@6667..6670 "'/'"
4724 COMMA@6670..6671 ","
4725 WHITESPACE@6671..6672 " "
4726 ARG@6672..6732
4727 EXPR@6672..6732
4728 EXPR_BINARY@6672..6732
4729 EXPR@6672..6675
4730 EXPR_VAR@6672..6675
4731 NAME@6672..6675
4732 IDENT@6672..6675 "std"
4733 SUFFIX_INDEX@6675..6685
4734 DOT@6675..6676 "."
4735 NAME@6676..6685
4736 IDENT@6676..6685 "makeArray"
4737 SUFFIX_APPLY@6685..6726
4738 ARGS_DESC@6685..6726
4739 L_PAREN@6685..6686 "("
4740 ARG@6686..6705
4741 EXPR@6686..6705
4742 EXPR_BINARY@6686..6705
4743 EXPR@6686..6689
4744 EXPR_VAR@6686..6689
4745 NAME@6686..6689
4746 IDENT@6686..6689 "std"
4747 SUFFIX_INDEX@6689..6696
4748 DOT@6689..6690 "."
4749 NAME@6690..6696
4750 IDENT@6690..6696 "length"
4751 SUFFIX_APPLY@6696..6701
4752 ARGS_DESC@6696..6701
4753 L_PAREN@6696..6697 "("
4754 ARG@6697..6700
4755 EXPR@6697..6700
4756 EXPR_VAR@6697..6700
4757 NAME@6697..6700
4758 IDENT@6697..6700 "arr"
4759 R_PAREN@6700..6701 ")"
4341 WHITESPACE@6701..6702 " "4760 WHITESPACE@6701..6702 " "
4342 PLUS@6702..6703 "+"4761 MINUS@6702..6703 "-"
4343 WHITESPACE@6703..6704 " "4762 WHITESPACE@6703..6704 " "
4344 EXPR_ARRAY@6704..67104763 EXPR@6704..6705
4345 L_BRACK@6704..6705 "["4764 EXPR_NUMBER@6704..6705
4346 EXPR_INDEX_EXPR@6705..67094765 FLOAT@6704..6705 "1"
4347 LHS_EXPR@6705..67064766 COMMA@6705..6706 ","
4348 EXPR_VAR@6705..67064767 WHITESPACE@6706..6707 " "
4349 NAME@6705..67064768 ARG@6707..6725
4350 IDENT@6705..6706 "a"4769 EXPR@6707..6725
4351 L_BRACK@6706..6707 "["4770 EXPR_FUNCTION@6707..6725
4352 EXPR_VAR@6707..67084771 FUNCTION_KW@6707..6715 "function"
4353 NAME@6707..67084772 PARAMS_DESC@6715..6718
4354 IDENT@6707..6708 "i"4773 L_PAREN@6715..6716 "("
4355 R_BRACK@6708..6709 "]"4774 PARAM@6716..6717
4356 R_BRACK@6709..6710 "]"4775 DESTRUCT_FULL@6716..6717
4357 R_PAREN@6710..6711 ")"4776 NAME@6716..6717
4358 WHITESPACE@6711..6712 " "4777 IDENT@6716..6717 "i"
4359 TAILSTRICT_KW@6712..6722 "tailstrict"4778 R_PAREN@6717..6718 ")"
4360 WHITESPACE@6722..6731 "\n "4779 WHITESPACE@6718..6719 " "
4361 ELSE_KW@6731..6735 "else"4780 EXPR@6719..6725
4362 WHITESPACE@6735..6736 " "4781 EXPR_VAR@6719..6722
4363 FALSE_EXPR@6736..68744782 NAME@6719..6722
4364 EXPR_IF_THEN_ELSE@6736..68744783 IDENT@6719..6722 "arr"
4365 IF_KW@6736..6738 "if"4784 SUFFIX_INDEX_EXPR@6722..6725
4366 WHITESPACE@6738..6739 " "4785 L_BRACK@6722..6723 "["
4367 EXPR_BINARY@6739..67464786 EXPR@6723..6724
4368 LHS_EXPR@6739..67414787 EXPR_VAR@6723..6724
4369 EXPR_VAR@6739..67414788 NAME@6723..6724
4370 NAME@6739..67414789 IDENT@6723..6724 "i"
4371 IDENT@6739..6741 "ak"4790 R_BRACK@6724..6725 "]"
4372 WHITESPACE@6741..6742 " "4791 R_PAREN@6725..6726 ")"
4373 LT@6742..6743 "<"4792 WHITESPACE@6726..6727 " "
4374 WHITESPACE@6743..6744 " "4793 PLUS@6727..6728 "+"
4375 EXPR_VAR@6744..67464794 WHITESPACE@6728..6729 " "
4376 NAME@6744..67464795 EXPR@6729..6732
4377 IDENT@6744..6746 "bk"4796 EXPR_ARRAY@6729..6732
4378 WHITESPACE@6746..6747 " "4797 L_BRACK@6729..6730 "["
4379 THEN_KW@6747..6751 "then"4798 EXPR@6730..6731
4380 WHITESPACE@6751..6762 "\n "4799 EXPR_VAR@6730..6731
4381 TRUE_EXPR@6762..68064800 NAME@6730..6731
4382 EXPR_APPLY@6762..68064801 IDENT@6730..6731 "r"
4383 EXPR_VAR@6762..67654802 R_BRACK@6731..6732 "]"
4384 NAME@6762..67654803 R_PAREN@6732..6733 ")"
4385 IDENT@6762..6765 "aux"4804 COMMA@6733..6734 ","
4386 ARGS_DESC@6765..68064805 WHITESPACE@6734..6738 "\n\n "
4387 L_PAREN@6765..6766 "("4806 MEMBER_FIELD_METHOD@6738..7191
4388 ARG@6766..67674807 FIELD_NAME_FIXED@6738..6743
4389 EXPR_VAR@6766..67674808 NAME@6738..6743
4390 NAME@6766..67674809 IDENT@6738..6743 "prune"
4391 IDENT@6766..6767 "a"4810 PARAMS_DESC@6743..6746
4392 COMMA@6767..6768 ","4811 L_PAREN@6743..6744 "("
4393 WHITESPACE@6768..6769 " "4812 PARAM@6744..6745
4394 ARG@6769..67704813 DESTRUCT_FULL@6744..6745
4395 EXPR_VAR@6769..67704814 NAME@6744..6745
4396 NAME@6769..67704815 IDENT@6744..6745 "a"
4397 IDENT@6769..6770 "b"4816 R_PAREN@6745..6746 ")"
4398 COMMA@6770..6771 ","4817 COLONCOLON@6746..6748 "::"
4399 WHITESPACE@6771..6772 " "4818 WHITESPACE@6748..6753 "\n "
4400 ARG@6772..67774819 EXPR@6753..7191
4401 EXPR_BINARY@6772..67774820 STMT_LOCAL@6753..6957
4402 LHS_EXPR@6772..67734821 LOCAL_KW@6753..6758 "local"
4403 EXPR_VAR@6772..67734822 WHITESPACE@6758..6759 " "
4404 NAME@6772..67734823 BIND_FUNCTION@6759..6956
4405 IDENT@6772..6773 "i"4824 NAME@6759..6768
4406 WHITESPACE@6773..6774 " "4825 IDENT@6759..6768 "isContent"
4407 PLUS@6774..6775 "+"4826 PARAMS_DESC@6768..6771
4408 WHITESPACE@6775..6776 " "4827 L_PAREN@6768..6769 "("
4409 EXPR_NUMBER@6776..67774828 PARAM@6769..6770
4410 FLOAT@6776..6777 "1"4829 DESTRUCT_FULL@6769..6770
4411 COMMA@6777..6778 ","4830 NAME@6769..6770
4412 WHITESPACE@6778..6779 " "4831 IDENT@6769..6770 "b"
4413 ARG@6779..67804832 R_PAREN@6770..6771 ")"
4414 EXPR_VAR@6779..67804833 WHITESPACE@6771..6772 " "
4415 NAME@6779..67804834 ASSIGN@6772..6773 "="
4416 IDENT@6779..6780 "j"4835 WHITESPACE@6773..6780 "\n "
4417 COMMA@6780..6781 ","4836 EXPR@6780..6956
4418 WHITESPACE@6781..6782 " "4837 EXPR_IF_THEN_ELSE@6780..6956
4419 ARG@6782..67944838 IF_KW@6780..6782 "if"
4420 EXPR_BINARY@6782..67944839 WHITESPACE@6782..6783 " "
4421 LHS_EXPR@6782..67854840 EXPR@6783..6792
4422 EXPR_VAR@6782..67854841 EXPR_BINARY@6783..6792
4423 NAME@6782..67854842 EXPR@6783..6784
4424 IDENT@6782..6785 "acc"4843 EXPR_VAR@6783..6784
4425 WHITESPACE@6785..6786 " "4844 NAME@6783..6784
4426 PLUS@6786..6787 "+"4845 IDENT@6783..6784 "b"
4427 WHITESPACE@6787..6788 " "4846 WHITESPACE@6784..6785 " "
4428 EXPR_ARRAY@6788..67944847 EQ@6785..6787 "=="
4429 L_BRACK@6788..6789 "["4848 WHITESPACE@6787..6788 " "
4430 EXPR_INDEX_EXPR@6789..67934849 EXPR@6788..6792
4431 LHS_EXPR@6789..67904850 EXPR_LITERAL@6788..6792
4432 EXPR_VAR@6789..67904851 NULL_KW@6788..6792 "null"
4433 NAME@6789..67904852 WHITESPACE@6792..6793 " "
4434 IDENT@6789..6790 "a"4853 THEN_KW@6793..6797 "then"
4435 L_BRACK@6790..6791 "["4854 WHITESPACE@6797..6806 "\n "
4436 EXPR_VAR@6791..67924855 TRUE_EXPR@6806..6811
4437 NAME@6791..67924856 EXPR@6806..6811
4438 IDENT@6791..6792 "i"4857 EXPR_LITERAL@6806..6811
4439 R_BRACK@6792..6793 "]"4858 FALSE_KW@6806..6811 "false"
4440 R_BRACK@6793..6794 "]"4859 WHITESPACE@6811..6818 "\n "
4441 R_PAREN@6794..6795 ")"4860 ELSE_KW@6818..6822 "else"
4442 WHITESPACE@6795..6796 " "4861 WHITESPACE@6822..6823 " "
4443 TAILSTRICT_KW@6796..6806 "tailstrict"4862 FALSE_EXPR@6823..6956
4444 WHITESPACE@6806..6815 "\n "4863 EXPR@6823..6956
4445 ELSE_KW@6815..6819 "else"4864 EXPR_IF_THEN_ELSE@6823..6956
4446 WHITESPACE@6819..6830 "\n "4865 IF_KW@6823..6825 "if"
4447 FALSE_EXPR@6830..68744866 WHITESPACE@6825..6826 " "
4448 EXPR_APPLY@6830..68744867 EXPR@6826..6840
4449 EXPR_VAR@6830..68334868 EXPR_VAR@6826..6829
4450 NAME@6830..68334869 NAME@6826..6829
4451 IDENT@6830..6833 "aux"4870 IDENT@6826..6829 "std"
4452 ARGS_DESC@6833..68744871 SUFFIX_INDEX@6829..6837
4453 L_PAREN@6833..6834 "("4872 DOT@6829..6830 "."
4454 ARG@6834..68354873 NAME@6830..6837
4455 EXPR_VAR@6834..68354874 IDENT@6830..6837 "isArray"
4456 NAME@6834..68354875 SUFFIX_APPLY@6837..6840
4457 IDENT@6834..6835 "a"4876 ARGS_DESC@6837..6840
4458 COMMA@6835..6836 ","4877 L_PAREN@6837..6838 "("
4459 WHITESPACE@6836..6837 " "4878 ARG@6838..6839
4460 ARG@6837..68384879 EXPR@6838..6839
4461 EXPR_VAR@6837..68384880 EXPR_VAR@6838..6839
4462 NAME@6837..68384881 NAME@6838..6839
4463 IDENT@6837..6838 "b"4882 IDENT@6838..6839 "b"
4464 COMMA@6838..6839 ","4883 R_PAREN@6839..6840 ")"
4465 WHITESPACE@6839..6840 " "4884 WHITESPACE@6840..6841 " "
4466 ARG@6840..68414885 THEN_KW@6841..6845 "then"
4467 EXPR_VAR@6840..68414886 WHITESPACE@6845..6854 "\n "
4468 NAME@6840..68414887 TRUE_EXPR@6854..6871
4469 IDENT@6840..6841 "i"4888 EXPR@6854..6871
4470 COMMA@6841..6842 ","4889 EXPR_BINARY@6854..6871
4471 WHITESPACE@6842..6843 " "4890 EXPR@6854..6857
4472 ARG@6843..68484891 EXPR_VAR@6854..6857
4473 EXPR_BINARY@6843..68484892 NAME@6854..6857
4474 LHS_EXPR@6843..68444893 IDENT@6854..6857 "std"
4475 EXPR_VAR@6843..68444894 SUFFIX_INDEX@6857..6864
4476 NAME@6843..68444895 DOT@6857..6858 "."
4477 IDENT@6843..6844 "j"4896 NAME@6858..6864
4478 WHITESPACE@6844..6845 " "4897 IDENT@6858..6864 "length"
4479 PLUS@6845..6846 "+"4898 SUFFIX_APPLY@6864..6867
4480 WHITESPACE@6846..6847 " "4899 ARGS_DESC@6864..6867
4481 EXPR_NUMBER@6847..68484900 L_PAREN@6864..6865 "("
4482 FLOAT@6847..6848 "1"4901 ARG@6865..6866
4483 COMMA@6848..6849 ","4902 EXPR@6865..6866
4484 WHITESPACE@6849..6850 " "4903 EXPR_VAR@6865..6866
4485 ARG@6850..68624904 NAME@6865..6866
4486 EXPR_BINARY@6850..68624905 IDENT@6865..6866 "b"
4487 LHS_EXPR@6850..68534906 R_PAREN@6866..6867 ")"
4488 EXPR_VAR@6850..68534907 WHITESPACE@6867..6868 " "
4489 NAME@6850..68534908 GT@6868..6869 ">"
4490 IDENT@6850..6853 "acc"4909 WHITESPACE@6869..6870 " "
4491 WHITESPACE@6853..6854 " "4910 EXPR@6870..6871
4492 PLUS@6854..6855 "+"4911 EXPR_NUMBER@6870..6871
4493 WHITESPACE@6855..6856 " "4912 FLOAT@6870..6871 "0"
4494 EXPR_ARRAY@6856..68624913 WHITESPACE@6871..6878 "\n "
4495 L_BRACK@6856..6857 "["4914 ELSE_KW@6878..6882 "else"
4496 EXPR_INDEX_EXPR@6857..68614915 WHITESPACE@6882..6883 " "
4497 LHS_EXPR@6857..68584916 FALSE_EXPR@6883..6956
4498 EXPR_VAR@6857..68584917 EXPR@6883..6956
4499 NAME@6857..68584918 EXPR_IF_THEN_ELSE@6883..6956
4500 IDENT@6857..6858 "b"4919 IF_KW@6883..6885 "if"
4501 L_BRACK@6858..6859 "["4920 WHITESPACE@6885..6886 " "
4502 EXPR_VAR@6859..68604921 EXPR@6886..6901
4503 NAME@6859..68604922 EXPR_VAR@6886..6889
4504 IDENT@6859..6860 "j"4923 NAME@6886..6889
4505 R_BRACK@6860..6861 "]"4924 IDENT@6886..6889 "std"
4506 R_BRACK@6861..6862 "]"4925 SUFFIX_INDEX@6889..6898
4507 R_PAREN@6862..6863 ")"4926 DOT@6889..6890 "."
4508 WHITESPACE@6863..6864 " "4927 NAME@6890..6898
4509 TAILSTRICT_KW@6864..6874 "tailstrict"4928 IDENT@6890..6898 "isObject"
4510 SEMI@6874..6875 ";"4929 SUFFIX_APPLY@6898..6901
4511 WHITESPACE@6875..6880 "\n "4930 ARGS_DESC@6898..6901
4512 EXPR_APPLY@6880..68994931 L_PAREN@6898..6899 "("
4513 EXPR_VAR@6880..68834932 ARG@6899..6900
4514 NAME@6880..68834933 EXPR@6899..6900
4515 IDENT@6880..6883 "aux"4934 EXPR_VAR@6899..6900
4516 ARGS_DESC@6883..68994935 NAME@6899..6900
4517 L_PAREN@6883..6884 "("4936 IDENT@6899..6900 "b"
4518 ARG@6884..68854937 R_PAREN@6900..6901 ")"
4519 EXPR_VAR@6884..68854938 WHITESPACE@6901..6902 " "
4520 NAME@6884..68854939 THEN_KW@6902..6906 "then"
4521 IDENT@6884..6885 "a"4940 WHITESPACE@6906..6915 "\n "
4522 COMMA@6885..6886 ","4941 TRUE_EXPR@6915..6932
4523 WHITESPACE@6886..6887 " "4942 EXPR@6915..6932
4524 ARG@6887..68884943 EXPR_BINARY@6915..6932
4525 EXPR_VAR@6887..68884944 EXPR@6915..6918
4526 NAME@6887..68884945 EXPR_VAR@6915..6918
4527 IDENT@6887..6888 "b"4946 NAME@6915..6918
4528 COMMA@6888..6889 ","4947 IDENT@6915..6918 "std"
4529 WHITESPACE@6889..6890 " "4948 SUFFIX_INDEX@6918..6925
4530 ARG@6890..68914949 DOT@6918..6919 "."
4531 EXPR_NUMBER@6890..68914950 NAME@6919..6925
4532 FLOAT@6890..6891 "0"4951 IDENT@6919..6925 "length"
4533 COMMA@6891..6892 ","4952 SUFFIX_APPLY@6925..6928
4534 WHITESPACE@6892..6893 " "4953 ARGS_DESC@6925..6928
4535 ARG@6893..68944954 L_PAREN@6925..6926 "("
4536 EXPR_NUMBER@6893..68944955 ARG@6926..6927
4537 FLOAT@6893..6894 "0"4956 EXPR@6926..6927
4538 COMMA@6894..6895 ","4957 EXPR_VAR@6926..6927
4539 WHITESPACE@6895..6896 " "4958 NAME@6926..6927
4540 ARG@6896..68984959 IDENT@6926..6927 "b"
4541 EXPR_ARRAY@6896..68984960 R_PAREN@6927..6928 ")"
4542 L_BRACK@6896..6897 "["4961 WHITESPACE@6928..6929 " "
4543 R_BRACK@6897..6898 "]"4962 GT@6929..6930 ">"
4544 R_PAREN@6898..6899 ")"4963 WHITESPACE@6930..6931 " "
4545 COMMA@6899..6900 ","4964 EXPR@6931..6932
4546 WHITESPACE@6900..6904 "\n\n "4965 EXPR_NUMBER@6931..6932
4547 MEMBER_FIELD_METHOD@6904..73614966 FLOAT@6931..6932 "0"
4548 FIELD_NAME_FIXED@6904..69114967 WHITESPACE@6932..6939 "\n "
4549 NAME@6904..69114968 ELSE_KW@6939..6943 "else"
4550 IDENT@6904..6911 "setDiff"4969 WHITESPACE@6943..6952 "\n "
4551 PARAMS_DESC@6911..69264970 FALSE_EXPR@6952..6956
4552 L_PAREN@6911..6912 "("4971 EXPR@6952..6956
4553 PARAM@6912..69134972 EXPR_LITERAL@6952..6956
4554 DESTRUCT_FULL@6912..69134973 TRUE_KW@6952..6956 "true"
4555 NAME@6912..69134974 SEMI@6956..6957 ";"
4556 IDENT@6912..6913 "a"4975 WHITESPACE@6957..6962 "\n "
4557 COMMA@6913..6914 ","4976 EXPR_IF_THEN_ELSE@6962..7191
4558 WHITESPACE@6914..6915 " "4977 IF_KW@6962..6964 "if"
4559 PARAM@6915..69164978 WHITESPACE@6964..6965 " "
4560 DESTRUCT_FULL@6915..69164979 EXPR@6965..6979
4561 NAME@6915..69164980 EXPR_VAR@6965..6968
4562 IDENT@6915..6916 "b"4981 NAME@6965..6968
4563 COMMA@6916..6917 ","4982 IDENT@6965..6968 "std"
4564 WHITESPACE@6917..6918 " "4983 SUFFIX_INDEX@6968..6976
4565 PARAM@6918..69254984 DOT@6968..6969 "."
4566 DESTRUCT_FULL@6918..69224985 NAME@6969..6976
4567 NAME@6918..69224986 IDENT@6969..6976 "isArray"
4568 IDENT@6918..6922 "keyF"4987 SUFFIX_APPLY@6976..6979
4569 ASSIGN@6922..6923 "="4988 ARGS_DESC@6976..6979
4570 EXPR_VAR@6923..69254989 L_PAREN@6976..6977 "("
4571 NAME@6923..69254990 ARG@6977..6978
4572 IDENT@6923..6925 "id"4991 EXPR@6977..6978
4573 R_PAREN@6925..6926 ")"4992 EXPR_VAR@6977..6978
4574 COLONCOLON@6926..6928 "::"4993 NAME@6977..6978
4575 WHITESPACE@6928..6933 "\n "4994 IDENT@6977..6978 "a"
4576 STMT_LOCAL@6933..73264995 R_PAREN@6978..6979 ")"
4577 LOCAL_KW@6933..6938 "local"4996 WHITESPACE@6979..6980 " "
4578 WHITESPACE@6938..6939 " "4997 THEN_KW@6980..6984 "then"
4579 BIND_FUNCTION@6939..73254998 WHITESPACE@6984..6991 "\n "
4580 NAME@6939..69424999 TRUE_EXPR@6991..7041
4581 IDENT@6939..6942 "aux"5000 EXPR@6991..7041
4582 PARAMS_DESC@6942..69595001 EXPR_ARRAY_COMP@6991..7041
4583 L_PAREN@6942..6943 "("5002 L_BRACK@6991..6992 "["
4584 PARAM@6943..69445003 EXPR@6992..7004
4585 DESTRUCT_FULL@6943..69445004 EXPR_VAR@6992..6995
4586 NAME@6943..69445005 NAME@6992..6995
4587 IDENT@6943..6944 "a"5006 IDENT@6992..6995 "std"
4588 COMMA@6944..6945 ","5007 SUFFIX_INDEX@6995..7001
4589 WHITESPACE@6945..6946 " "5008 DOT@6995..6996 "."
4590 PARAM@6946..69475009 NAME@6996..7001
4591 DESTRUCT_FULL@6946..69475010 IDENT@6996..7001 "prune"
4592 NAME@6946..69475011 SUFFIX_APPLY@7001..7004
4593 IDENT@6946..6947 "b"5012 ARGS_DESC@7001..7004
4594 COMMA@6947..6948 ","5013 L_PAREN@7001..7002 "("
4595 WHITESPACE@6948..6949 " "5014 ARG@7002..7003
4596 PARAM@6949..69505015 EXPR@7002..7003
4597 DESTRUCT_FULL@6949..69505016 EXPR_VAR@7002..7003
4598 NAME@6949..69505017 NAME@7002..7003
4599 IDENT@6949..6950 "i"5018 IDENT@7002..7003 "x"
4600 COMMA@6950..6951 ","5019 R_PAREN@7003..7004 ")"
4601 WHITESPACE@6951..6952 " "5020 WHITESPACE@7004..7005 " "
4602 PARAM@6952..69535021 FOR_SPEC@7005..7015
4603 DESTRUCT_FULL@6952..69535022 FOR_KW@7005..7008 "for"
4604 NAME@6952..69535023 WHITESPACE@7008..7009 " "
4605 IDENT@6952..6953 "j"5024 DESTRUCT_FULL@7009..7010
4606 COMMA@6953..6954 ","5025 NAME@7009..7010
4607 WHITESPACE@6954..6955 " "5026 IDENT@7009..7010 "x"
4608 PARAM@6955..69585027 WHITESPACE@7010..7011 " "
4609 DESTRUCT_FULL@6955..69585028 IN_KW@7011..7013 "in"
4610 NAME@6955..69585029 WHITESPACE@7013..7014 " "
4611 IDENT@6955..6958 "acc"5030 EXPR@7014..7015
4612 R_PAREN@6958..6959 ")"5031 EXPR_VAR@7014..7015
4613 WHITESPACE@6959..6960 " "5032 NAME@7014..7015
4614 ASSIGN@6960..6961 "="5033 IDENT@7014..7015 "a"
4615 WHITESPACE@6961..6968 "\n "5034 WHITESPACE@7015..7016 " "
4616 EXPR_IF_THEN_ELSE@6968..73255035 IF_SPEC@7016..7040
4617 IF_KW@6968..6970 "if"5036 IF_KW@7016..7018 "if"
4618 WHITESPACE@6970..6971 " "5037 WHITESPACE@7018..7019 " "
4619 EXPR_BINARY@6971..69895038 EXPR@7019..7040
4620 LHS_EXPR@6971..69725039 EXPR_VAR@7019..7028
4621 EXPR_VAR@6971..69725040 NAME@7019..7028
4622 NAME@6971..69725041 IDENT@7019..7028 "isContent"
4623 IDENT@6971..6972 "i"5042 SUFFIX_APPLY@7028..7040
4624 WHITESPACE@6972..6973 " "5043 ARGS_DESC@7028..7040
4625 GE@6973..6975 ">="5044 L_PAREN@7028..7029 "("
4626 WHITESPACE@6975..6976 " "5045 ARG@7029..7039
4627 EXPR_APPLY@6976..69895046 EXPR@7029..7039
4628 EXPR_INDEX@6976..69865047 EXPR_LITERAL@7029..7030
4629 EXPR_VAR@6976..69795048 DOLLAR@7029..7030 "$"
4630 NAME@6976..69795049 SUFFIX_INDEX@7030..7036
4631 IDENT@6976..6979 "std"5050 DOT@7030..7031 "."
4632 DOT@6979..6980 "."5051 NAME@7031..7036
4633 NAME@6980..69865052 IDENT@7031..7036 "prune"
4634 IDENT@6980..6986 "length"5053 SUFFIX_APPLY@7036..7039
4635 ARGS_DESC@6986..69895054 ARGS_DESC@7036..7039
4636 L_PAREN@6986..6987 "("5055 L_PAREN@7036..7037 "("
4637 ARG@6987..69885056 ARG@7037..7038
4638 EXPR_VAR@6987..69885057 EXPR@7037..7038
4639 NAME@6987..69885058 EXPR_VAR@7037..7038
4640 IDENT@6987..6988 "a"5059 NAME@7037..7038
4641 R_PAREN@6988..6989 ")"5060 IDENT@7037..7038 "x"
4642 WHITESPACE@6989..6990 " "5061 R_PAREN@7038..7039 ")"
4643 THEN_KW@6990..6994 "then"5062 R_PAREN@7039..7040 ")"
4644 WHITESPACE@6994..7003 "\n "5063 R_BRACK@7040..7041 "]"
4645 TRUE_EXPR@7003..70065064 WHITESPACE@7041..7046 "\n "
4646 EXPR_VAR@7003..70065065 ELSE_KW@7046..7050 "else"
4647 NAME@7003..70065066 WHITESPACE@7050..7051 " "
4648 IDENT@7003..7006 "acc"5067 FALSE_EXPR@7051..7191
4649 WHITESPACE@7006..7013 "\n "5068 EXPR@7051..7191
4650 ELSE_KW@7013..7017 "else"5069 EXPR_IF_THEN_ELSE@7051..7191
4651 WHITESPACE@7017..7018 " "5070 IF_KW@7051..7053 "if"
4652 FALSE_EXPR@7018..73255071 WHITESPACE@7053..7054 " "
4653 EXPR_IF_THEN_ELSE@7018..73255072 EXPR@7054..7069
4654 IF_KW@7018..7020 "if"5073 EXPR_VAR@7054..7057
4655 WHITESPACE@7020..7021 " "5074 NAME@7054..7057
4656 EXPR_BINARY@7021..70395075 IDENT@7054..7057 "std"
4657 LHS_EXPR@7021..70225076 SUFFIX_INDEX@7057..7066
4658 EXPR_VAR@7021..70225077 DOT@7057..7058 "."
4659 NAME@7021..70225078 NAME@7058..7066
4660 IDENT@7021..7022 "j"5079 IDENT@7058..7066 "isObject"
4661 WHITESPACE@7022..7023 " "5080 SUFFIX_APPLY@7066..7069
4662 GE@7023..7025 ">="5081 ARGS_DESC@7066..7069
4663 WHITESPACE@7025..7026 " "5082 L_PAREN@7066..7067 "("
4664 EXPR_APPLY@7026..70395083 ARG@7067..7068
4665 EXPR_INDEX@7026..70365084 EXPR@7067..7068
4666 EXPR_VAR@7026..70295085 EXPR_VAR@7067..7068
4667 NAME@7026..70295086 NAME@7067..7068
4668 IDENT@7026..7029 "std"5087 IDENT@7067..7068 "a"
4669 DOT@7029..7030 "."5088 R_PAREN@7068..7069 ")"
4670 NAME@7030..70365089 WHITESPACE@7069..7070 " "
4671 IDENT@7030..7036 "length"5090 THEN_KW@7070..7074 "then"
4672 ARGS_DESC@7036..70395091 WHITESPACE@7074..7075 " "
4673 L_PAREN@7036..7037 "("5092 TRUE_EXPR@7075..7178
4674 ARG@7037..70385093 EXPR@7075..7178
4675 EXPR_VAR@7037..70385094 EXPR_OBJECT@7075..7178
4676 NAME@7037..70385095 OBJ_BODY_COMP@7075..7178
4677 IDENT@7037..7038 "b"5096 L_BRACE@7075..7076 "{"
4678 R_PAREN@7038..7039 ")"5097 WHITESPACE@7076..7083 "\n "
4679 WHITESPACE@7039..7040 " "5098 MEMBER_FIELD_NORMAL@7083..7101
4680 THEN_KW@7040..7044 "then"5099 FIELD_NAME_DYNAMIC@7083..7086
4681 WHITESPACE@7044..7053 "\n "5100 L_BRACK@7083..7084 "["
4682 TRUE_EXPR@7053..70645101 EXPR@7084..7085
4683 EXPR_BINARY@7053..70645102 EXPR_VAR@7084..7085
4684 LHS_EXPR@7053..70565103 NAME@7084..7085
4685 EXPR_VAR@7053..70565104 IDENT@7084..7085 "x"
4686 NAME@7053..70565105 R_BRACK@7085..7086 "]"
4687 IDENT@7053..7056 "acc"5106 COLON@7086..7087 ":"
4688 WHITESPACE@7056..7057 " "5107 WHITESPACE@7087..7088 " "
4689 PLUS@7057..7058 "+"5108 EXPR@7088..7101
4690 WHITESPACE@7058..7059 " "5109 EXPR_LITERAL@7088..7089
4691 EXPR_SLICE@7059..70645110 DOLLAR@7088..7089 "$"
4692 EXPR_VAR@7059..70605111 SUFFIX_INDEX@7089..7095
4693 NAME@7059..70605112 DOT@7089..7090 "."
4694 IDENT@7059..7060 "a"5113 NAME@7090..7095
4695 SLICE_DESC@7060..70645114 IDENT@7090..7095 "prune"
4696 L_BRACK@7060..7061 "["5115 SUFFIX_APPLY@7095..7101
4697 EXPR_VAR@7061..70625116 ARGS_DESC@7095..7101
4698 NAME@7061..70625117 L_PAREN@7095..7096 "("
4699 IDENT@7061..7062 "i"5118 ARG@7096..7100
4700 COLON@7062..7063 ":"5119 EXPR@7096..7100
4701 R_BRACK@7063..7064 "]"5120 EXPR_VAR@7096..7097
4702 WHITESPACE@7064..7071 "\n "5121 NAME@7096..7097
4703 ELSE_KW@7071..7075 "else"5122 IDENT@7096..7097 "a"
4704 WHITESPACE@7075..7084 "\n "5123 SUFFIX_INDEX_EXPR@7097..7100
4705 FALSE_EXPR@7084..73255124 L_BRACK@7097..7098 "["
4706 EXPR_IF_THEN_ELSE@7084..73255125 EXPR@7098..7099
4707 IF_KW@7084..7086 "if"5126 EXPR_VAR@7098..7099
4708 WHITESPACE@7086..7087 " "5127 NAME@7098..7099
4709 EXPR_BINARY@7087..71115128 IDENT@7098..7099 "x"
4710 LHS_EXPR@7087..70975129 R_BRACK@7099..7100 "]"
4711 EXPR_APPLY@7087..70975130 R_PAREN@7100..7101 ")"
4712 EXPR_VAR@7087..70915131 WHITESPACE@7101..7108 "\n "
4713 NAME@7087..70915132 FOR_SPEC@7108..7136
4714 IDENT@7087..7091 "keyF"5133 FOR_KW@7108..7111 "for"
4715 ARGS_DESC@7091..70975134 WHITESPACE@7111..7112 " "
4716 L_PAREN@7091..7092 "("5135 DESTRUCT_FULL@7112..7113
4717 ARG@7092..70965136 NAME@7112..7113
4718 EXPR_INDEX_EXPR@7092..70965137 IDENT@7112..7113 "x"
4719 LHS_EXPR@7092..70935138 WHITESPACE@7113..7114 " "
4720 EXPR_VAR@7092..70935139 IN_KW@7114..7116 "in"
4721 NAME@7092..70935140 WHITESPACE@7116..7117 " "
4722 IDENT@7092..7093 "a"5141 EXPR@7117..7136
4723 L_BRACK@7093..7094 "["5142 EXPR_VAR@7117..7120
4724 EXPR_VAR@7094..70955143 NAME@7117..7120
4725 NAME@7094..70955144 IDENT@7117..7120 "std"
4726 IDENT@7094..7095 "i"5145 SUFFIX_INDEX@7120..7133
4727 R_BRACK@7095..7096 "]"5146 DOT@7120..7121 "."
4728 R_PAREN@7096..7097 ")"5147 NAME@7121..7133
4729 WHITESPACE@7097..7098 " "5148 IDENT@7121..7133 "objectFields"
4730 EQ@7098..7100 "=="5149 SUFFIX_APPLY@7133..7136
4731 WHITESPACE@7100..7101 " "5150 ARGS_DESC@7133..7136
4732 EXPR_APPLY@7101..71115151 L_PAREN@7133..7134 "("
4733 EXPR_VAR@7101..71055152 ARG@7134..7135
4734 NAME@7101..71055153 EXPR@7134..7135
4735 IDENT@7101..7105 "keyF"5154 EXPR_VAR@7134..7135
4736 ARGS_DESC@7105..71115155 NAME@7134..7135
4737 L_PAREN@7105..7106 "("5156 IDENT@7134..7135 "a"
4738 ARG@7106..71105157 R_PAREN@7135..7136 ")"
4739 EXPR_INDEX_EXPR@7106..71105158 WHITESPACE@7136..7143 "\n "
4740 LHS_EXPR@7106..71075159 IF_SPEC@7143..7172
4741 EXPR_VAR@7106..71075160 IF_KW@7143..7145 "if"
4742 NAME@7106..71075161 WHITESPACE@7145..7146 " "
4743 IDENT@7106..7107 "b"5162 EXPR@7146..7172
4744 L_BRACK@7107..7108 "["5163 EXPR_VAR@7146..7155
4745 EXPR_VAR@7108..71095164 NAME@7146..7155
4746 NAME@7108..71095165 IDENT@7146..7155 "isContent"
4747 IDENT@7108..7109 "j"5166 SUFFIX_APPLY@7155..7172
4748 R_BRACK@7109..7110 "]"5167 ARGS_DESC@7155..7172
4749 R_PAREN@7110..7111 ")"5168 L_PAREN@7155..7156 "("
4750 WHITESPACE@7111..7112 " "5169 ARG@7156..7171
4751 THEN_KW@7112..7116 "then"5170 EXPR@7156..7171
4752 WHITESPACE@7116..7127 "\n "5171 EXPR_VAR@7156..7159
4753 TRUE_EXPR@7127..71665172 NAME@7156..7159
4754 EXPR_APPLY@7127..71665173 IDENT@7156..7159 "std"
4755 EXPR_VAR@7127..71305174 SUFFIX_INDEX@7159..7165
4756 NAME@7127..71305175 DOT@7159..7160 "."
4757 IDENT@7127..7130 "aux"5176 NAME@7160..7165
4758 ARGS_DESC@7130..71665177 IDENT@7160..7165 "prune"
4759 L_PAREN@7130..7131 "("5178 SUFFIX_APPLY@7165..7171
4760 ARG@7131..71325179 ARGS_DESC@7165..7171
4761 EXPR_VAR@7131..71325180 L_PAREN@7165..7166 "("
4762 NAME@7131..71325181 ARG@7166..7170
4763 IDENT@7131..7132 "a"5182 EXPR@7166..7170
4764 COMMA@7132..7133 ","5183 EXPR_VAR@7166..7167
4765 WHITESPACE@7133..7134 " "5184 NAME@7166..7167
4766 ARG@7134..71355185 IDENT@7166..7167 "a"
4767 EXPR_VAR@7134..71355186 SUFFIX_INDEX_EXPR@7167..7170
4768 NAME@7134..71355187 L_BRACK@7167..7168 "["
4769 IDENT@7134..7135 "b"5188 EXPR@7168..7169
4770 COMMA@7135..7136 ","5189 EXPR_VAR@7168..7169
4771 WHITESPACE@7136..7137 " "5190 NAME@7168..7169
4772 ARG@7137..71425191 IDENT@7168..7169 "x"
4773 EXPR_BINARY@7137..71425192 R_BRACK@7169..7170 "]"
4774 LHS_EXPR@7137..71385193 R_PAREN@7170..7171 ")"
4775 EXPR_VAR@7137..71385194 R_PAREN@7171..7172 ")"
4776 NAME@7137..71385195 WHITESPACE@7172..7177 "\n "
4777 IDENT@7137..7138 "i"5196 R_BRACE@7177..7178 "}"
4778 WHITESPACE@7138..7139 " "5197 WHITESPACE@7178..7179 " "
4779 PLUS@7139..7140 "+"5198 ELSE_KW@7179..7183 "else"
4780 WHITESPACE@7140..7141 " "5199 WHITESPACE@7183..7190 "\n "
4781 EXPR_NUMBER@7141..71425200 FALSE_EXPR@7190..7191
4782 FLOAT@7141..7142 "1"5201 EXPR@7190..7191
4783 COMMA@7142..7143 ","5202 EXPR_VAR@7190..7191
4784 WHITESPACE@7143..7144 " "5203 NAME@7190..7191
4785 ARG@7144..71495204 IDENT@7190..7191 "a"
4786 EXPR_BINARY@7144..71495205 COMMA@7191..7192 ","
4787 LHS_EXPR@7144..71455206 WHITESPACE@7192..7196 "\n\n "
4788 EXPR_VAR@7144..71455207 MEMBER_FIELD_METHOD@7196..7411
4789 NAME@7144..71455208 FIELD_NAME_FIXED@7196..7200
4790 IDENT@7144..7145 "j"5209 NAME@7196..7200
4791 WHITESPACE@7145..7146 " "5210 IDENT@7196..7200 "find"
4792 PLUS@7146..7147 "+"5211 PARAMS_DESC@7200..7212
4793 WHITESPACE@7147..7148 " "5212 L_PAREN@7200..7201 "("
4794 EXPR_NUMBER@7148..71495213 PARAM@7201..7206
4795 FLOAT@7148..7149 "1"5214 DESTRUCT_FULL@7201..7206
4796 COMMA@7149..7150 ","5215 NAME@7201..7206
4797 WHITESPACE@7150..7151 " "5216 IDENT@7201..7206 "value"
4798 ARG@7151..71545217 COMMA@7206..7207 ","
4799 EXPR_VAR@7151..71545218 WHITESPACE@7207..7208 " "
4800 NAME@7151..71545219 PARAM@7208..7211
4801 IDENT@7151..7154 "acc"5220 DESTRUCT_FULL@7208..7211
4802 R_PAREN@7154..7155 ")"5221 NAME@7208..7211
4803 WHITESPACE@7155..7156 " "5222 IDENT@7208..7211 "arr"
4804 TAILSTRICT_KW@7156..7166 "tailstrict"5223 R_PAREN@7211..7212 ")"
4805 WHITESPACE@7166..7175 "\n "5224 COLONCOLON@7212..7214 "::"
4806 ELSE_KW@7175..7179 "else"5225 WHITESPACE@7214..7219 "\n "
4807 WHITESPACE@7179..7180 " "5226 EXPR@7219..7411
4808 FALSE_EXPR@7180..73255227 EXPR_IF_THEN_ELSE@7219..7411
4809 EXPR_IF_THEN_ELSE@7180..73255228 IF_KW@7219..7221 "if"
4810 IF_KW@7180..7182 "if"5229 WHITESPACE@7221..7222 " "
4811 WHITESPACE@7182..7183 " "5230 EXPR@7222..7239
4812 EXPR_BINARY@7183..72065231 EXPR_UNARY@7222..7239
4813 LHS_EXPR@7183..71935232 NOT@7222..7223 "!"
4814 EXPR_APPLY@7183..71935233 EXPR_VAR@7223..7226
4815 EXPR_VAR@7183..71875234 NAME@7223..7226
4816 NAME@7183..71875235 IDENT@7223..7226 "std"
4817 IDENT@7183..7187 "keyF"5236 SUFFIX_INDEX@7226..7234
4818 ARGS_DESC@7187..71935237 DOT@7226..7227 "."
4819 L_PAREN@7187..7188 "("5238 NAME@7227..7234
4820 ARG@7188..71925239 IDENT@7227..7234 "isArray"
4821 EXPR_INDEX_EXPR@7188..71925240 SUFFIX_APPLY@7234..7239
4822 LHS_EXPR@7188..71895241 ARGS_DESC@7234..7239
4823 EXPR_VAR@7188..71895242 L_PAREN@7234..7235 "("
4824 NAME@7188..71895243 ARG@7235..7238
4825 IDENT@7188..7189 "a"5244 EXPR@7235..7238
4826 L_BRACK@7189..7190 "["5245 EXPR_VAR@7235..7238
4827 EXPR_VAR@7190..71915246 NAME@7235..7238
4828 NAME@7190..71915247 IDENT@7235..7238 "arr"
4829 IDENT@7190..7191 "i"5248 R_PAREN@7238..7239 ")"
4830 R_BRACK@7191..7192 "]"5249 WHITESPACE@7239..7240 " "
4831 R_PAREN@7192..7193 ")"5250 THEN_KW@7240..7244 "then"
4832 WHITESPACE@7193..7194 " "5251 WHITESPACE@7244..7251 "\n "
4833 LT@7194..7195 "<"5252 TRUE_EXPR@7251..7321
4834 WHITESPACE@7195..7196 " "5253 EXPR@7251..7321
4835 EXPR_APPLY@7196..72065254 EXPR_ERROR@7251..7321
4836 EXPR_VAR@7196..72005255 ERROR_KW@7251..7256 "error"
4837 NAME@7196..72005256 WHITESPACE@7256..7257 " "
4838 IDENT@7196..7200 "keyF"5257 EXPR@7257..7321
4839 ARGS_DESC@7200..72065258 EXPR_BINARY@7257..7321
4840 L_PAREN@7200..7201 "("5259 EXPR@7257..7305
4841 ARG@7201..72055260 EXPR_STRING@7257..7305
4842 EXPR_INDEX_EXPR@7201..72055261 STRING_SINGLE@7257..7305 "'find second paramete ..."
4843 LHS_EXPR@7201..72025262 WHITESPACE@7305..7306 " "
4844 EXPR_VAR@7201..72025263 PLUS@7306..7307 "+"
4845 NAME@7201..72025264 WHITESPACE@7307..7308 " "
4846 IDENT@7201..7202 "b"5265 EXPR@7308..7321
4847 L_BRACK@7202..7203 "["5266 EXPR_VAR@7308..7311
4848 EXPR_VAR@7203..72045267 NAME@7308..7311
4849 NAME@7203..72045268 IDENT@7308..7311 "std"
4850 IDENT@7203..7204 "j"5269 SUFFIX_INDEX@7311..7316
4851 R_BRACK@7204..7205 "]"5270 DOT@7311..7312 "."
4852 R_PAREN@7205..7206 ")"5271 NAME@7312..7316
4853 WHITESPACE@7206..7207 " "5272 IDENT@7312..7316 "type"
4854 THEN_KW@7207..7211 "then"5273 SUFFIX_APPLY@7316..7321
4855 WHITESPACE@7211..7222 "\n "5274 ARGS_DESC@7316..7321
4856 TRUE_EXPR@7222..72665275 L_PAREN@7316..7317 "("
4857 EXPR_APPLY@7222..72665276 ARG@7317..7320
4858 EXPR_VAR@7222..72255277 EXPR@7317..7320
4859 NAME@7222..72255278 EXPR_VAR@7317..7320
4860 IDENT@7222..7225 "aux"5279 NAME@7317..7320
4861 ARGS_DESC@7225..72665280 IDENT@7317..7320 "arr"
4862 L_PAREN@7225..7226 "("5281 R_PAREN@7320..7321 ")"
4863 ARG@7226..72275282 WHITESPACE@7321..7326 "\n "
4864 EXPR_VAR@7226..72275283 ELSE_KW@7326..7330 "else"
4865 NAME@7226..72275284 WHITESPACE@7330..7337 "\n "
4866 IDENT@7226..7227 "a"5285 FALSE_EXPR@7337..7411
4867 COMMA@7227..7228 ","5286 EXPR@7337..7411
4868 WHITESPACE@7228..7229 " "5287 EXPR_VAR@7337..7340
4869 ARG@7229..72305288 NAME@7337..7340
4870 EXPR_VAR@7229..72305289 IDENT@7337..7340 "std"
4871 NAME@7229..72305290 SUFFIX_INDEX@7340..7347
4872 IDENT@7229..7230 "b"5291 DOT@7340..7341 "."
4873 COMMA@7230..7231 ","5292 NAME@7341..7347
4874 WHITESPACE@7231..7232 " "5293 IDENT@7341..7347 "filter"
4875 ARG@7232..72375294 SUFFIX_APPLY@7347..7411
4876 EXPR_BINARY@7232..72375295 ARGS_DESC@7347..7411
4877 LHS_EXPR@7232..72335296 L_PAREN@7347..7348 "("
4878 EXPR_VAR@7232..72335297 ARG@7348..7375
4879 NAME@7232..72335298 EXPR@7348..7375
4880 IDENT@7232..7233 "i"5299 EXPR_FUNCTION@7348..7375
4881 WHITESPACE@7233..7234 " "5300 FUNCTION_KW@7348..7356 "function"
4882 PLUS@7234..7235 "+"5301 PARAMS_DESC@7356..7359
4883 WHITESPACE@7235..7236 " "5302 L_PAREN@7356..7357 "("
4884 EXPR_NUMBER@7236..72375303 PARAM@7357..7358
4885 FLOAT@7236..7237 "1"5304 DESTRUCT_FULL@7357..7358
4886 COMMA@7237..7238 ","5305 NAME@7357..7358
4887 WHITESPACE@7238..7239 " "5306 IDENT@7357..7358 "i"
4888 ARG@7239..72405307 R_PAREN@7358..7359 ")"
4889 EXPR_VAR@7239..72405308 WHITESPACE@7359..7360 " "
4890 NAME@7239..72405309 EXPR@7360..7375
4891 IDENT@7239..7240 "j"5310 EXPR_BINARY@7360..7375
4892 COMMA@7240..7241 ","5311 EXPR@7360..7363
4893 WHITESPACE@7241..7242 " "5312 EXPR_VAR@7360..7363
4894 ARG@7242..72545313 NAME@7360..7363
4895 EXPR_BINARY@7242..72545314 IDENT@7360..7363 "arr"
4896 LHS_EXPR@7242..72455315 SUFFIX_INDEX_EXPR@7363..7366
4897 EXPR_VAR@7242..72455316 L_BRACK@7363..7364 "["
4898 NAME@7242..72455317 EXPR@7364..7365
4899 IDENT@7242..7245 "acc"5318 EXPR_VAR@7364..7365
4900 WHITESPACE@7245..7246 " "5319 NAME@7364..7365
4901 PLUS@7246..7247 "+"5320 IDENT@7364..7365 "i"
4902 WHITESPACE@7247..7248 " "5321 R_BRACK@7365..7366 "]"
4903 EXPR_ARRAY@7248..72545322 WHITESPACE@7366..7367 " "
4904 L_BRACK@7248..7249 "["5323 EQ@7367..7369 "=="
4905 EXPR_INDEX_EXPR@7249..72535324 WHITESPACE@7369..7370 " "
4906 LHS_EXPR@7249..72505325 EXPR@7370..7375
4907 EXPR_VAR@7249..72505326 EXPR_VAR@7370..7375
4908 NAME@7249..72505327 NAME@7370..7375
4909 IDENT@7249..7250 "a"5328 IDENT@7370..7375 "value"
4910 L_BRACK@7250..7251 "["5329 COMMA@7375..7376 ","
4911 EXPR_VAR@7251..72525330 WHITESPACE@7376..7377 " "
4912 NAME@7251..72525331 ARG@7377..7410
4913 IDENT@7251..7252 "i"5332 EXPR@7377..7410
4914 R_BRACK@7252..7253 "]"5333 EXPR_VAR@7377..7380
4915 R_BRACK@7253..7254 "]"5334 NAME@7377..7380
4916 R_PAREN@7254..7255 ")"5335 IDENT@7377..7380 "std"
4917 WHITESPACE@7255..7256 " "5336 SUFFIX_INDEX@7380..7386
4918 TAILSTRICT_KW@7256..7266 "tailstrict"5337 DOT@7380..7381 "."
4919 WHITESPACE@7266..7275 "\n "5338 NAME@7381..7386
4920 ELSE_KW@7275..7279 "else"5339 IDENT@7381..7386 "range"
4921 WHITESPACE@7279..7290 "\n "5340 SUFFIX_APPLY@7386..7410
4922 FALSE_EXPR@7290..73255341 ARGS_DESC@7386..7410
4923 EXPR_APPLY@7290..73255342 L_PAREN@7386..7387 "("
4924 EXPR_VAR@7290..72935343 ARG@7387..7388
4925 NAME@7290..72935344 EXPR@7387..7388
4926 IDENT@7290..7293 "aux"5345 EXPR_NUMBER@7387..7388
4927 ARGS_DESC@7293..73255346 FLOAT@7387..7388 "0"
4928 L_PAREN@7293..7294 "("5347 COMMA@7388..7389 ","
4929 ARG@7294..72955348 WHITESPACE@7389..7390 " "
4930 EXPR_VAR@7294..72955349 ARG@7390..7409
4931 NAME@7294..72955350 EXPR@7390..7409
4932 IDENT@7294..7295 "a"5351 EXPR_BINARY@7390..7409
4933 COMMA@7295..7296 ","5352 EXPR@7390..7393
4934 WHITESPACE@7296..7297 " "5353 EXPR_VAR@7390..7393
4935 ARG@7297..72985354 NAME@7390..7393
4936 EXPR_VAR@7297..72985355 IDENT@7390..7393 "std"
4937 NAME@7297..72985356 SUFFIX_INDEX@7393..7400
4938 IDENT@7297..7298 "b"5357 DOT@7393..7394 "."
4939 COMMA@7298..7299 ","5358 NAME@7394..7400
4940 WHITESPACE@7299..7300 " "5359 IDENT@7394..7400 "length"
4941 ARG@7300..73015360 SUFFIX_APPLY@7400..7405
4942 EXPR_VAR@7300..73015361 ARGS_DESC@7400..7405
4943 NAME@7300..73015362 L_PAREN@7400..7401 "("
4944 IDENT@7300..7301 "i"5363 ARG@7401..7404
4945 COMMA@7301..7302 ","5364 EXPR@7401..7404
4946 WHITESPACE@7302..7303 " "5365 EXPR_VAR@7401..7404
4947 ARG@7303..73085366 NAME@7401..7404
4948 EXPR_BINARY@7303..73085367 IDENT@7401..7404 "arr"
4949 LHS_EXPR@7303..73045368 R_PAREN@7404..7405 ")"
4950 EXPR_VAR@7303..73045369 WHITESPACE@7405..7406 " "
4951 NAME@7303..73045370 MINUS@7406..7407 "-"
4952 IDENT@7303..7304 "j"5371 WHITESPACE@7407..7408 " "
4953 WHITESPACE@7304..7305 " "5372 EXPR@7408..7409
4954 PLUS@7305..7306 "+"5373 EXPR_NUMBER@7408..7409
4955 WHITESPACE@7306..7307 " "5374 FLOAT@7408..7409 "1"
4956 EXPR_NUMBER@7307..73085375 R_PAREN@7409..7410 ")"
4957 FLOAT@7307..7308 "1"5376 R_PAREN@7410..7411 ")"
4958 COMMA@7308..7309 ","5377 COMMA@7411..7412 ","
4959 WHITESPACE@7309..7310 " "5378 WHITESPACE@7412..7416 "\n\n "
4960 ARG@7310..73135379 SINGLE_LINE_SLASH_COMMENT@7416..7426 "// Compat\n"
4961 EXPR_VAR@7310..73135380 WHITESPACE@7426..7428 " "
4962 NAME@7310..73135381 MEMBER_FIELD_METHOD@7428..7538
4963 IDENT@7310..7313 "acc"5382 FIELD_NAME_FIXED@7428..7443
4964 R_PAREN@7313..7314 ")"5383 NAME@7428..7443
4965 WHITESPACE@7314..7315 " "5384 IDENT@7428..7443 "__compare_array"
4966 TAILSTRICT_KW@7315..7325 "tailstrict"5385 PARAMS_DESC@7443..7455
4967 SEMI@7325..7326 ";"5386 L_PAREN@7443..7444 "("
4968 WHITESPACE@7326..7331 "\n "5387 PARAM@7444..7448
4969 EXPR_APPLY@7331..73615388 DESTRUCT_FULL@7444..7448
4970 EXPR_VAR@7331..73345389 NAME@7444..7448
4971 NAME@7331..73345390 IDENT@7444..7448 "arr1"
4972 IDENT@7331..7334 "aux"5391 COMMA@7448..7449 ","
4973 ARGS_DESC@7334..73615392 WHITESPACE@7449..7450 " "
4974 L_PAREN@7334..7335 "("5393 PARAM@7450..7454
4975 ARG@7335..73365394 DESTRUCT_FULL@7450..7454
4976 EXPR_VAR@7335..73365395 NAME@7450..7454
4977 NAME@7335..73365396 IDENT@7450..7454 "arr2"
4978 IDENT@7335..7336 "a"5397 R_PAREN@7454..7455 ")"
4979 COMMA@7336..7337 ","5398 COLONCOLON@7455..7457 "::"
4980 WHITESPACE@7337..7338 " "5399 WHITESPACE@7457..7462 "\n "
4981 ARG@7338..73395400 EXPR@7462..7538
4982 EXPR_VAR@7338..73395401 STMT_ASSERT@7462..7508
4983 NAME@7338..73395402 ASSERTION@7462..7507
4984 IDENT@7338..7339 "b"5403 ASSERT_KW@7462..7468 "assert"
4985 COMMA@7339..7340 ","5404 WHITESPACE@7468..7469 " "
4986 WHITESPACE@7340..7341 " "5405 EXPR@7469..7507
4987 ARG@7341..73425406 EXPR_BINARY@7469..7507
4988 EXPR_NUMBER@7341..73425407 EXPR@7469..7472
4989 FLOAT@7341..7342 "0"5408 EXPR_VAR@7469..7472
4990 COMMA@7342..7343 ","5409 NAME@7469..7472
4991 WHITESPACE@7343..7344 " "5410 IDENT@7469..7472 "std"
4992 ARG@7344..73455411 SUFFIX_INDEX@7472..7480
4993 EXPR_NUMBER@7344..73455412 DOT@7472..7473 "."
4994 FLOAT@7344..7345 "0"5413 NAME@7473..7480
4995 COMMA@7345..7346 ","5414 IDENT@7473..7480 "isArray"
4996 WHITESPACE@7346..7347 " "5415 SUFFIX_APPLY@7480..7486
4997 ARG@7347..73495416 ARGS_DESC@7480..7486
4998 EXPR_ARRAY@7347..73495417 L_PAREN@7480..7481 "("
4999 L_BRACK@7347..7348 "["5418 ARG@7481..7485
5000 R_BRACK@7348..7349 "]"5419 EXPR@7481..7485
5001 R_PAREN@7349..7350 ")"5420 EXPR_VAR@7481..7485
5002 WHITESPACE@7350..7351 " "5421 NAME@7481..7485
5003 TAILSTRICT_KW@7351..7361 "tailstrict"5422 IDENT@7481..7485 "arr1"
5004 COMMA@7361..7362 ","5423 R_PAREN@7485..7486 ")"
5005 WHITESPACE@7362..7366 "\n\n "5424 WHITESPACE@7486..7487 " "
5006 MEMBER_FIELD_METHOD@7366..81545425 AND@7487..7489 "&&"
5007 FIELD_NAME_FIXED@7366..73765426 WHITESPACE@7489..7490 " "
5008 NAME@7366..73765427 EXPR@7490..7507
5009 IDENT@7366..7376 "mergePatch"5428 EXPR_VAR@7490..7493
5010 PARAMS_DESC@7376..73915429 NAME@7490..7493
5011 L_PAREN@7376..7377 "("5430 IDENT@7490..7493 "std"
5012 PARAM@7377..73835431 SUFFIX_INDEX@7493..7501
5013 DESTRUCT_FULL@7377..73835432 DOT@7493..7494 "."
5014 NAME@7377..73835433 NAME@7494..7501
5015 IDENT@7377..7383 "target"5434 IDENT@7494..7501 "isArray"
5016 COMMA@7383..7384 ","5435 SUFFIX_APPLY@7501..7507
5017 WHITESPACE@7384..7385 " "5436 ARGS_DESC@7501..7507
5018 PARAM@7385..73905437 L_PAREN@7501..7502 "("
5019 DESTRUCT_FULL@7385..73905438 ARG@7502..7506
5020 NAME@7385..73905439 EXPR@7502..7506
5021 IDENT@7385..7390 "patch"5440 EXPR_VAR@7502..7506
5022 R_PAREN@7390..7391 ")"5441 NAME@7502..7506
5023 COLONCOLON@7391..7393 "::"5442 IDENT@7502..7506 "arr2"
5024 WHITESPACE@7393..7398 "\n "5443 R_PAREN@7506..7507 ")"
5025 EXPR_IF_THEN_ELSE@7398..81545444 SEMI@7507..7508 ";"
5026 IF_KW@7398..7400 "if"5445 WHITESPACE@7508..7513 "\n "
5027 WHITESPACE@7400..7401 " "5446 EXPR_VAR@7513..7516
5028 EXPR_APPLY@7401..74205447 NAME@7513..7516
5029 EXPR_INDEX@7401..74135448 IDENT@7513..7516 "std"
5030 EXPR_VAR@7401..74045449 SUFFIX_INDEX@7516..7526
5031 NAME@7401..74045450 DOT@7516..7517 "."
5032 IDENT@7401..7404 "std"5451 NAME@7517..7526
5033 DOT@7404..7405 "."5452 IDENT@7517..7526 "__compare"
5034 NAME@7405..74135453 SUFFIX_APPLY@7526..7538
5035 IDENT@7405..7413 "isObject"5454 ARGS_DESC@7526..7538
5036 ARGS_DESC@7413..74205455 L_PAREN@7526..7527 "("
5037 L_PAREN@7413..7414 "("5456 ARG@7527..7531
5038 ARG@7414..74195457 EXPR@7527..7531
5039 EXPR_VAR@7414..74195458 EXPR_VAR@7527..7531
5040 NAME@7414..74195459 NAME@7527..7531
5041 IDENT@7414..7419 "patch"5460 IDENT@7527..7531 "arr1"
5042 R_PAREN@7419..7420 ")"5461 COMMA@7531..7532 ","
5043 WHITESPACE@7420..7421 " "5462 WHITESPACE@7532..7533 " "
5044 THEN_KW@7421..7425 "then"5463 ARG@7533..7537
5045 WHITESPACE@7425..7432 "\n "5464 EXPR@7533..7537
5046 STMT_LOCAL@7432..75065465 EXPR_VAR@7533..7537
5047 LOCAL_KW@7432..7437 "local"5466 NAME@7533..7537
5048 WHITESPACE@7437..7438 " "5467 IDENT@7533..7537 "arr2"
5049 BIND_DESTRUCT@7438..75055468 R_PAREN@7537..7538 ")"
5050 DESTRUCT_FULL@7438..74515469 COMMA@7538..7539 ","
5051 NAME@7438..74515470 WHITESPACE@7539..7542 "\n "
5052 IDENT@7438..7451 "target_object"5471 MEMBER_FIELD_METHOD@7542..7606
5053 WHITESPACE@7451..7452 " "5472 FIELD_NAME_FIXED@7542..7554
5054 ASSIGN@7452..7453 "="5473 NAME@7542..7554
5055 WHITESPACE@7453..7462 "\n "5474 IDENT@7542..7554 "__array_less"
5056 EXPR_IF_THEN_ELSE@7462..75055475 PARAMS_DESC@7554..7566
5057 IF_KW@7462..7464 "if"5476 L_PAREN@7554..7555 "("
5058 WHITESPACE@7464..7465 " "5477 PARAM@7555..7559
5059 EXPR_APPLY@7465..74855478 DESTRUCT_FULL@7555..7559
5060 EXPR_INDEX@7465..74775479 NAME@7555..7559
5061 EXPR_VAR@7465..74685480 IDENT@7555..7559 "arr1"
5062 NAME@7465..74685481 COMMA@7559..7560 ","
5063 IDENT@7465..7468 "std"5482 WHITESPACE@7560..7561 " "
5064 DOT@7468..7469 "."5483 PARAM@7561..7565
5065 NAME@7469..74775484 DESTRUCT_FULL@7561..7565
5066 IDENT@7469..7477 "isObject"5485 NAME@7561..7565
5067 ARGS_DESC@7477..74855486 IDENT@7561..7565 "arr2"
5068 L_PAREN@7477..7478 "("5487 R_PAREN@7565..7566 ")"
5069 ARG@7478..74845488 COLONCOLON@7566..7568 "::"
5070 EXPR_VAR@7478..74845489 WHITESPACE@7568..7569 " "
5071 NAME@7478..74845490 EXPR@7569..7606
5072 IDENT@7478..7484 "target"5491 EXPR_BINARY@7569..7606
5073 R_PAREN@7484..7485 ")"5492 EXPR@7569..7572
5074 WHITESPACE@7485..7486 " "5493 EXPR_VAR@7569..7572
5075 THEN_KW@7486..7490 "then"5494 NAME@7569..7572
5076 WHITESPACE@7490..7491 " "5495 IDENT@7569..7572 "std"
5077 TRUE_EXPR@7491..74975496 SUFFIX_INDEX@7572..7588
5078 EXPR_VAR@7491..74975497 DOT@7572..7573 "."
5079 NAME@7491..74975498 NAME@7573..7588
5080 IDENT@7491..7497 "target"5499 IDENT@7573..7588 "__compare_array"
5081 WHITESPACE@7497..7498 " "5500 SUFFIX_APPLY@7588..7600
5082 ELSE_KW@7498..7502 "else"5501 ARGS_DESC@7588..7600
5083 WHITESPACE@7502..7503 " "5502 L_PAREN@7588..7589 "("
5084 FALSE_EXPR@7503..75055503 ARG@7589..7593
5085 EXPR_OBJECT@7503..75055504 EXPR@7589..7593
5086 OBJ_BODY_MEMBER_LIST@7503..75055505 EXPR_VAR@7589..7593
5087 L_BRACE@7503..7504 "{"5506 NAME@7589..7593
5088 R_BRACE@7504..7505 "}"5507 IDENT@7589..7593 "arr1"
5089 SEMI@7505..7506 ";"5508 COMMA@7593..7594 ","
5090 WHITESPACE@7506..7514 "\n\n "5509 WHITESPACE@7594..7595 " "
5091 STMT_LOCAL@7514..76205510 ARG@7595..7599
5092 LOCAL_KW@7514..7519 "local"5511 EXPR@7595..7599
5093 WHITESPACE@7519..7520 " "5512 EXPR_VAR@7595..7599
5094 BIND_DESTRUCT@7520..76195513 NAME@7595..7599
5095 DESTRUCT_FULL@7520..75335514 IDENT@7595..7599 "arr2"
5096 NAME@7520..75335515 R_PAREN@7599..7600 ")"
5097 IDENT@7520..7533 "target_fields"5516 WHITESPACE@7600..7601 " "
5098 WHITESPACE@7533..7534 " "5517 EQ@7601..7603 "=="
5099 ASSIGN@7534..7535 "="5518 WHITESPACE@7603..7604 " "
5100 WHITESPACE@7535..7544 "\n "5519 EXPR@7604..7606
5101 EXPR_IF_THEN_ELSE@7544..76195520 EXPR_UNARY@7604..7606
5102 IF_KW@7544..7546 "if"5521 MINUS@7604..7605 "-"
5103 WHITESPACE@7546..7547 " "5522 EXPR_NUMBER@7605..7606
5104 EXPR_APPLY@7547..75745523 FLOAT@7605..7606 "1"
5105 EXPR_INDEX@7547..75595524 COMMA@7606..7607 ","
5106 EXPR_VAR@7547..75505525 WHITESPACE@7607..7610 "\n "
5107 NAME@7547..75505526 MEMBER_FIELD_METHOD@7610..7676
5108 IDENT@7547..7550 "std"5527 FIELD_NAME_FIXED@7610..7625
5109 DOT@7550..7551 "."5528 NAME@7610..7625
5110 NAME@7551..75595529 IDENT@7610..7625 "__array_greater"
5111 IDENT@7551..7559 "isObject"5530 PARAMS_DESC@7625..7637
5112 ARGS_DESC@7559..75745531 L_PAREN@7625..7626 "("
5113 L_PAREN@7559..7560 "("5532 PARAM@7626..7630
5114 ARG@7560..75735533 DESTRUCT_FULL@7626..7630
5115 EXPR_VAR@7560..75735534 NAME@7626..7630
5116 NAME@7560..75735535 IDENT@7626..7630 "arr1"
5117 IDENT@7560..7573 "target_object"5536 COMMA@7630..7631 ","
5118 R_PAREN@7573..7574 ")"5537 WHITESPACE@7631..7632 " "
5119 WHITESPACE@7574..7575 " "5538 PARAM@7632..7636
5120 THEN_KW@7575..7579 "then"5539 DESTRUCT_FULL@7632..7636
5121 WHITESPACE@7579..7580 " "5540 NAME@7632..7636
5122 TRUE_EXPR@7580..76115541 IDENT@7632..7636 "arr2"
5123 EXPR_APPLY@7580..76115542 R_PAREN@7636..7637 ")"
5124 EXPR_INDEX@7580..75965543 COLONCOLON@7637..7639 "::"
5125 EXPR_VAR@7580..75835544 WHITESPACE@7639..7640 " "
5126 NAME@7580..75835545 EXPR@7640..7676
5127 IDENT@7580..7583 "std"5546 EXPR_BINARY@7640..7676
5128 DOT@7583..7584 "."5547 EXPR@7640..7643
5129 NAME@7584..75965548 EXPR_VAR@7640..7643
5130 IDENT@7584..7596 "objectFields"5549 NAME@7640..7643
5131 ARGS_DESC@7596..76115550 IDENT@7640..7643 "std"
5132 L_PAREN@7596..7597 "("5551 SUFFIX_INDEX@7643..7659
5133 ARG@7597..76105552 DOT@7643..7644 "."
5134 EXPR_VAR@7597..76105553 NAME@7644..7659
5135 NAME@7597..76105554 IDENT@7644..7659 "__compare_array"
5136 IDENT@7597..7610 "target_object"5555 SUFFIX_APPLY@7659..7671
5137 R_PAREN@7610..7611 ")"5556 ARGS_DESC@7659..7671
5138 WHITESPACE@7611..7612 " "5557 L_PAREN@7659..7660 "("
5139 ELSE_KW@7612..7616 "else"5558 ARG@7660..7664
5140 WHITESPACE@7616..7617 " "5559 EXPR@7660..7664
5141 FALSE_EXPR@7617..76195560 EXPR_VAR@7660..7664
5142 EXPR_ARRAY@7617..76195561 NAME@7660..7664
5143 L_BRACK@7617..7618 "["5562 IDENT@7660..7664 "arr1"
5144 R_BRACK@7618..7619 "]"5563 COMMA@7664..7665 ","
5145 SEMI@7619..7620 ";"5564 WHITESPACE@7665..7666 " "
5146 WHITESPACE@7620..7628 "\n\n "5565 ARG@7666..7670
5147 STMT_LOCAL@7628..77055566 EXPR@7666..7670
5148 LOCAL_KW@7628..7633 "local"5567 EXPR_VAR@7666..7670
5149 WHITESPACE@7633..7634 " "5568 NAME@7666..7670
5150 BIND_DESTRUCT@7634..77045569 IDENT@7666..7670 "arr2"
5151 DESTRUCT_FULL@7634..76455570 R_PAREN@7670..7671 ")"
5152 NAME@7634..76455571 WHITESPACE@7671..7672 " "
5153 IDENT@7634..7645 "null_fields"5572 EQ@7672..7674 "=="
5154 WHITESPACE@7645..7646 " "5573 WHITESPACE@7674..7675 " "
5155 ASSIGN@7646..7647 "="5574 EXPR@7675..7676
5156 WHITESPACE@7647..7648 " "5575 EXPR_NUMBER@7675..7676
5157 EXPR_ARRAY_COMP@7648..77045576 FLOAT@7675..7676 "1"
5158 L_BRACK@7648..7649 "["5577 COMMA@7676..7677 ","
5159 EXPR_VAR@7649..76505578 WHITESPACE@7677..7680 "\n "
5160 NAME@7649..76505579 MEMBER_FIELD_METHOD@7680..7752
5161 IDENT@7649..7650 "k"5580 FIELD_NAME_FIXED@7680..7701
5162 WHITESPACE@7650..7651 " "5581 NAME@7680..7701
5163 FOR_SPEC@7651..76835582 IDENT@7680..7701 "__array_less_or_equal"
5164 FOR_KW@7651..7654 "for"5583 PARAMS_DESC@7701..7713
5165 WHITESPACE@7654..7655 " "5584 L_PAREN@7701..7702 "("
5166 NAME@7655..76565585 PARAM@7702..7706
5167 IDENT@7655..7656 "k"5586 DESTRUCT_FULL@7702..7706
5168 WHITESPACE@7656..7657 " "5587 NAME@7702..7706
5169 IN_KW@7657..7659 "in"5588 IDENT@7702..7706 "arr1"
5170 WHITESPACE@7659..7660 " "5589 COMMA@7706..7707 ","
5171 EXPR_APPLY@7660..76835590 WHITESPACE@7707..7708 " "
5172 EXPR_INDEX@7660..76765591 PARAM@7708..7712
5173 EXPR_VAR@7660..76635592 DESTRUCT_FULL@7708..7712
5174 NAME@7660..76635593 NAME@7708..7712
5175 IDENT@7660..7663 "std"5594 IDENT@7708..7712 "arr2"
5176 DOT@7663..7664 "."5595 R_PAREN@7712..7713 ")"
5177 NAME@7664..76765596 COLONCOLON@7713..7715 "::"
5178 IDENT@7664..7676 "objectFields"5597 WHITESPACE@7715..7716 " "
5179 ARGS_DESC@7676..76835598 EXPR@7716..7752
5180 L_PAREN@7676..7677 "("5599 EXPR_BINARY@7716..7752
5181 ARG@7677..76825600 EXPR@7716..7719
5182 EXPR_VAR@7677..76825601 EXPR_VAR@7716..7719
5183 NAME@7677..76825602 NAME@7716..7719
5184 IDENT@7677..7682 "patch"5603 IDENT@7716..7719 "std"
5185 R_PAREN@7682..7683 ")"5604 SUFFIX_INDEX@7719..7735
5186 WHITESPACE@7683..7684 " "5605 DOT@7719..7720 "."
5187 IF_SPEC@7684..77035606 NAME@7720..7735
5188 IF_KW@7684..7686 "if"5607 IDENT@7720..7735 "__compare_array"
5189 WHITESPACE@7686..7687 " "5608 SUFFIX_APPLY@7735..7747
5190 EXPR_BINARY@7687..77035609 ARGS_DESC@7735..7747
5191 LHS_EXPR@7687..76955610 L_PAREN@7735..7736 "("
5192 EXPR_INDEX_EXPR@7687..76955611 ARG@7736..7740
5193 LHS_EXPR@7687..76925612 EXPR@7736..7740
5194 EXPR_VAR@7687..76925613 EXPR_VAR@7736..7740
5195 NAME@7687..76925614 NAME@7736..7740
5196 IDENT@7687..7692 "patch"5615 IDENT@7736..7740 "arr1"
5197 L_BRACK@7692..7693 "["5616 COMMA@7740..7741 ","
5198 EXPR_VAR@7693..76945617 WHITESPACE@7741..7742 " "
5199 NAME@7693..76945618 ARG@7742..7746
5200 IDENT@7693..7694 "k"5619 EXPR@7742..7746
5201 R_BRACK@7694..7695 "]"5620 EXPR_VAR@7742..7746
5202 WHITESPACE@7695..7696 " "5621 NAME@7742..7746
5203 EQ@7696..7698 "=="5622 IDENT@7742..7746 "arr2"
5204 WHITESPACE@7698..7699 " "5623 R_PAREN@7746..7747 ")"
5205 EXPR_LITERAL@7699..77035624 WHITESPACE@7747..7748 " "
5206 NULL_KW@7699..7703 "null"5625 LE@7748..7750 "<="
5207 R_BRACK@7703..7704 "]"5626 WHITESPACE@7750..7751 " "
5208 SEMI@7704..7705 ";"5627 EXPR@7751..7752
5209 WHITESPACE@7705..7712 "\n "5628 EXPR_NUMBER@7751..7752
5210 STMT_LOCAL@7712..77855629 FLOAT@7751..7752 "0"
5211 LOCAL_KW@7712..7717 "local"5630 COMMA@7752..7753 ","
5212 WHITESPACE@7717..7718 " "5631 WHITESPACE@7753..7756 "\n "
5213 BIND_DESTRUCT@7718..77845632 MEMBER_FIELD_METHOD@7756..7831
5214 DESTRUCT_FULL@7718..77295633 FIELD_NAME_FIXED@7756..7780
5215 NAME@7718..77295634 NAME@7756..7780
5216 IDENT@7718..7729 "both_fields"5635 IDENT@7756..7780 "__array_greater_or_equal"
5217 WHITESPACE@7729..7730 " "5636 PARAMS_DESC@7780..7792
5218 ASSIGN@7730..7731 "="5637 L_PAREN@7780..7781 "("
5219 WHITESPACE@7731..7732 " "5638 PARAM@7781..7785
5220 EXPR_APPLY@7732..77845639 DESTRUCT_FULL@7781..7785
5221 EXPR_INDEX@7732..77445640 NAME@7781..7785
5222 EXPR_VAR@7732..77355641 IDENT@7781..7785 "arr1"
5223 NAME@7732..77355642 COMMA@7785..7786 ","
5224 IDENT@7732..7735 "std"5643 WHITESPACE@7786..7787 " "
5225 DOT@7735..7736 "."5644 PARAM@7787..7791
5226 NAME@7736..77445645 DESTRUCT_FULL@7787..7791
5227 IDENT@7736..7744 "setUnion"5646 NAME@7787..7791
5228 ARGS_DESC@7744..77845647 IDENT@7787..7791 "arr2"
5229 L_PAREN@7744..7745 "("5648 R_PAREN@7791..7792 ")"
5230 ARG@7745..77585649 COLONCOLON@7792..7794 "::"
5231 EXPR_VAR@7745..77585650 WHITESPACE@7794..7795 " "
5232 NAME@7745..77585651 EXPR@7795..7831
5233 IDENT@7745..7758 "target_fields"5652 EXPR_BINARY@7795..7831
5234 COMMA@7758..7759 ","5653 EXPR@7795..7798
5235 WHITESPACE@7759..7760 " "5654 EXPR_VAR@7795..7798
5236 ARG@7760..77835655 NAME@7795..7798
5237 EXPR_APPLY@7760..77835656 IDENT@7795..7798 "std"
5238 EXPR_INDEX@7760..77765657 SUFFIX_INDEX@7798..7814
5239 EXPR_VAR@7760..77635658 DOT@7798..7799 "."
5240 NAME@7760..77635659 NAME@7799..7814
5241 IDENT@7760..7763 "std"5660 IDENT@7799..7814 "__compare_array"
5242 DOT@7763..7764 "."5661 SUFFIX_APPLY@7814..7826
5243 NAME@7764..77765662 ARGS_DESC@7814..7826
5244 IDENT@7764..7776 "objectFields"5663 L_PAREN@7814..7815 "("
5245 ARGS_DESC@7776..77835664 ARG@7815..7819
5246 L_PAREN@7776..7777 "("5665 EXPR@7815..7819
5247 ARG@7777..77825666 EXPR_VAR@7815..7819
5248 EXPR_VAR@7777..77825667 NAME@7815..7819
5249 NAME@7777..77825668 IDENT@7815..7819 "arr1"
5250 IDENT@7777..7782 "patch"5669 COMMA@7819..7820 ","
5251 R_PAREN@7782..7783 ")"5670 WHITESPACE@7820..7821 " "
5252 R_PAREN@7783..7784 ")"5671 ARG@7821..7825
5253 SEMI@7784..7785 ";"5672 EXPR@7821..7825
5254 WHITESPACE@7785..7793 "\n\n "5673 EXPR_VAR@7821..7825
5255 TRUE_EXPR@7793..81335674 NAME@7821..7825
5256 EXPR_OBJECT@7793..81335675 IDENT@7821..7825 "arr2"
5257 OBJ_BODY_COMP@7793..81335676 R_PAREN@7825..7826 ")"
5258 L_BRACE@7793..7794 "{"5677 WHITESPACE@7826..7827 " "
5259 WHITESPACE@7794..7803 "\n "5678 GE@7827..7829 ">="
5260 MEMBER_FIELD_NORMAL@7803..80705679 WHITESPACE@7829..7830 " "
5261 FIELD_NAME_DYNAMIC@7803..78065680 EXPR@7830..7831
5262 L_BRACK@7803..7804 "["5681 EXPR_NUMBER@7830..7831
5263 EXPR_VAR@7804..78055682 FLOAT@7830..7831 "0"
5264 NAME@7804..78055683 COMMA@7831..7832 ","
5265 IDENT@7804..7805 "k"5684 WHITESPACE@7832..7833 "\n"
5266 R_BRACK@7805..7806 "]"5685 R_BRACE@7833..7834 "}"
5267 COLON@7806..7807 ":"5686 WHITESPACE@7834..7835 "\n"
5268 WHITESPACE@7807..7818 "\n "
5269 EXPR_IF_THEN_ELSE@7818..8070
5270 IF_KW@7818..7820 "if"
5271 WHITESPACE@7820..7821 " "
5272 EXPR_UNARY@7821..7845
5273 NOT@7821..7822 "!"
5274 EXPR_APPLY@7822..7845
5275 EXPR_INDEX@7822..7835
5276 EXPR_VAR@7822..7825
5277 NAME@7822..7825
5278 IDENT@7822..7825 "std"
5279 DOT@7825..7826 "."
5280 NAME@7826..7835
5281 IDENT@7826..7835 "objectHas"
5282 ARGS_DESC@7835..7845
5283 L_PAREN@7835..7836 "("
5284 ARG@7836..7841
5285 EXPR_VAR@7836..7841
5286 NAME@7836..7841
5287 IDENT@7836..7841 "patch"
5288 COMMA@7841..7842 ","
5289 WHITESPACE@7842..7843 " "
5290 ARG@7843..7844
5291 EXPR_VAR@7843..7844
5292 NAME@7843..7844
5293 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..7879
5299 EXPR_INDEX_EXPR@7863..7879
5300 LHS_EXPR@7863..7876
5301 EXPR_VAR@7863..7876
5302 NAME@7863..7876
5303 IDENT@7863..7876 "target_object"
5304 L_BRACK@7876..7877 "["
5305 EXPR_VAR@7877..7878
5306 NAME@7877..7878
5307 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..8070
5313 EXPR_IF_THEN_ELSE@7895..8070
5314 IF_KW@7895..7897 "if"
5315 WHITESPACE@7897..7898 " "
5316 EXPR_UNARY@7898..7930
5317 NOT@7898..7899 "!"
5318 EXPR_APPLY@7899..7930
5319 EXPR_INDEX@7899..7912
5320 EXPR_VAR@7899..7902
5321 NAME@7899..7902
5322 IDENT@7899..7902 "std"
5323 DOT@7902..7903 "."
5324 NAME@7903..7912
5325 IDENT@7903..7912 "objectHas"
5326 ARGS_DESC@7912..7930
5327 L_PAREN@7912..7913 "("
5328 ARG@7913..7926
5329 EXPR_VAR@7913..7926
5330 NAME@7913..7926
5331 IDENT@7913..7926 "target_object"
5332 COMMA@7926..7927 ","
5333 WHITESPACE@7927..7928 " "
5334 ARG@7928..7929
5335 EXPR_VAR@7928..7929
5336 NAME@7928..7929
5337 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..7989
5343 EXPR_APPLY@7948..7989
5344 EXPR_INDEX@7948..7962
5345 EXPR_VAR@7948..7951
5346 NAME@7948..7951
5347 IDENT@7948..7951 "std"
5348 DOT@7951..7952 "."
5349 NAME@7952..7962
5350 IDENT@7952..7962 "mergePatch"
5351 ARGS_DESC@7962..7989
5352 L_PAREN@7962..7963 "("
5353 ARG@7963..7967
5354 EXPR_LITERAL@7963..7967
5355 NULL_KW@7963..7967 "null"
5356 COMMA@7967..7968 ","
5357 WHITESPACE@7968..7969 " "
5358 ARG@7969..7977
5359 EXPR_INDEX_EXPR@7969..7977
5360 LHS_EXPR@7969..7974
5361 EXPR_VAR@7969..7974
5362 NAME@7969..7974
5363 IDENT@7969..7974 "patch"
5364 L_BRACK@7974..7975 "["
5365 EXPR_VAR@7975..7976
5366 NAME@7975..7976
5367 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..8070
5376 EXPR_APPLY@8017..8070
5377 EXPR_INDEX@8017..8031
5378 EXPR_VAR@8017..8020
5379 NAME@8017..8020
5380 IDENT@8017..8020 "std"
5381 DOT@8020..8021 "."
5382 NAME@8021..8031
5383 IDENT@8021..8031 "mergePatch"
5384 ARGS_DESC@8031..8070
5385 L_PAREN@8031..8032 "("
5386 ARG@8032..8048
5387 EXPR_INDEX_EXPR@8032..8048
5388 LHS_EXPR@8032..8045
5389 EXPR_VAR@8032..8045
5390 NAME@8032..8045
5391 IDENT@8032..8045 "target_object"
5392 L_BRACK@8045..8046 "["
5393 EXPR_VAR@8046..8047
5394 NAME@8046..8047
5395 IDENT@8046..8047 "k"
5396 R_BRACK@8047..8048 "]"
5397 COMMA@8048..8049 ","
5398 WHITESPACE@8049..8050 " "
5399 ARG@8050..8058
5400 EXPR_INDEX_EXPR@8050..8058
5401 LHS_EXPR@8050..8055
5402 EXPR_VAR@8050..8055
5403 NAME@8050..8055
5404 IDENT@8050..8055 "patch"
5405 L_BRACK@8055..8056 "["
5406 EXPR_VAR@8056..8057
5407 NAME@8056..8057
5408 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..8125
5415 FOR_KW@8079..8082 "for"
5416 WHITESPACE@8082..8083 " "
5417 NAME@8083..8084
5418 IDENT@8083..8084 "k"
5419 WHITESPACE@8084..8085 " "
5420 IN_KW@8085..8087 "in"
5421 WHITESPACE@8087..8088 " "
5422 EXPR_APPLY@8088..8125
5423 EXPR_INDEX@8088..8099
5424 EXPR_VAR@8088..8091
5425 NAME@8088..8091
5426 IDENT@8088..8091 "std"
5427 DOT@8091..8092 "."
5428 NAME@8092..8099
5429 IDENT@8092..8099 "setDiff"
5430 ARGS_DESC@8099..8125
5431 L_PAREN@8099..8100 "("
5432 ARG@8100..8111
5433 EXPR_VAR@8100..8111
5434 NAME@8100..8111
5435 IDENT@8100..8111 "both_fields"
5436 COMMA@8111..8112 ","
5437 WHITESPACE@8112..8113 " "
5438 ARG@8113..8124
5439 EXPR_VAR@8113..8124
5440 NAME@8113..8124
5441 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..8154
5449 EXPR_VAR@8149..8154
5450 NAME@8149..8154
5451 IDENT@8149..8154 "patch"
5452 COMMA@8154..8155 ","
5453 WHITESPACE@8155..8159 "\n\n "
5454 MEMBER_FIELD_METHOD@8159..8265
5455 FIELD_NAME_FIXED@8159..8162
5456 NAME@8159..8162
5457 IDENT@8159..8162 "get"
5458 PARAMS_DESC@8162..8199
5459 L_PAREN@8162..8163 "("
5460 PARAM@8163..8164
5461 DESTRUCT_FULL@8163..8164
5462 NAME@8163..8164
5463 IDENT@8163..8164 "o"
5464 COMMA@8164..8165 ","
5465 WHITESPACE@8165..8166 " "
5466 PARAM@8166..8167
5467 DESTRUCT_FULL@8166..8167
5468 NAME@8166..8167
5469 IDENT@8166..8167 "f"
5470 COMMA@8167..8168 ","
5471 WHITESPACE@8168..8169 " "
5472 PARAM@8169..8181
5473 DESTRUCT_FULL@8169..8176
5474 NAME@8169..8176
5475 IDENT@8169..8176 "default"
5476 ASSIGN@8176..8177 "="
5477 EXPR_LITERAL@8177..8181
5478 NULL_KW@8177..8181 "null"
5479 COMMA@8181..8182 ","
5480 WHITESPACE@8182..8183 " "
5481 PARAM@8183..8198
5482 DESTRUCT_FULL@8183..8193
5483 NAME@8183..8193
5484 IDENT@8183..8193 "inc_hidden"
5485 ASSIGN@8193..8194 "="
5486 EXPR_LITERAL@8194..8198
5487 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..8265
5492 IF_KW@8206..8208 "if"
5493 WHITESPACE@8208..8209 " "
5494 EXPR_APPLY@8209..8242
5495 EXPR_INDEX@8209..8224
5496 EXPR_VAR@8209..8212
5497 NAME@8209..8212
5498 IDENT@8209..8212 "std"
5499 DOT@8212..8213 "."
5500 NAME@8213..8224
5501 IDENT@8213..8224 "objectHasEx"
5502 ARGS_DESC@8224..8242
5503 L_PAREN@8224..8225 "("
5504 ARG@8225..8226
5505 EXPR_VAR@8225..8226
5506 NAME@8225..8226
5507 IDENT@8225..8226 "o"
5508 COMMA@8226..8227 ","
5509 WHITESPACE@8227..8228 " "
5510 ARG@8228..8229
5511 EXPR_VAR@8228..8229
5512 NAME@8228..8229
5513 IDENT@8228..8229 "f"
5514 COMMA@8229..8230 ","
5515 WHITESPACE@8230..8231 " "
5516 ARG@8231..8241
5517 EXPR_VAR@8231..8241
5518 NAME@8231..8241
5519 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..8252
5525 EXPR_INDEX_EXPR@8248..8252
5526 LHS_EXPR@8248..8249
5527 EXPR_VAR@8248..8249
5528 NAME@8248..8249
5529 IDENT@8248..8249 "o"
5530 L_BRACK@8249..8250 "["
5531 EXPR_VAR@8250..8251
5532 NAME@8250..8251
5533 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..8265
5539 EXPR_VAR@8258..8265
5540 NAME@8258..8265
5541 IDENT@8258..8265 "default"
5542 COMMA@8265..8266 ","
5543 WHITESPACE@8266..8270 "\n\n "
5544 MEMBER_FIELD_METHOD@8270..8320
5545 FIELD_NAME_FIXED@8270..8282
5546 NAME@8270..8282
5547 IDENT@8270..8282 "objectFields"
5548 PARAMS_DESC@8282..8285
5549 L_PAREN@8282..8283 "("
5550 PARAM@8283..8284
5551 DESTRUCT_FULL@8283..8284
5552 NAME@8283..8284
5553 IDENT@8283..8284 "o"
5554 R_PAREN@8284..8285 ")"
5555 COLONCOLON@8285..8287 "::"
5556 WHITESPACE@8287..8292 "\n "
5557 EXPR_APPLY@8292..8320
5558 EXPR_INDEX@8292..8310
5559 EXPR_VAR@8292..8295
5560 NAME@8292..8295
5561 IDENT@8292..8295 "std"
5562 DOT@8295..8296 "."
5563 NAME@8296..8310
5564 IDENT@8296..8310 "objectFieldsEx"
5565 ARGS_DESC@8310..8320
5566 L_PAREN@8310..8311 "("
5567 ARG@8311..8312
5568 EXPR_VAR@8311..8312
5569 NAME@8311..8312
5570 IDENT@8311..8312 "o"
5571 COMMA@8312..8313 ","
5572 WHITESPACE@8313..8314 " "
5573 ARG@8314..8319
5574 EXPR_LITERAL@8314..8319
5575 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..8377
5580 FIELD_NAME_FIXED@8325..8340
5581 NAME@8325..8340
5582 IDENT@8325..8340 "objectFieldsAll"
5583 PARAMS_DESC@8340..8343
5584 L_PAREN@8340..8341 "("
5585 PARAM@8341..8342
5586 DESTRUCT_FULL@8341..8342
5587 NAME@8341..8342
5588 IDENT@8341..8342 "o"
5589 R_PAREN@8342..8343 ")"
5590 COLONCOLON@8343..8345 "::"
5591 WHITESPACE@8345..8350 "\n "
5592 EXPR_APPLY@8350..8377
5593 EXPR_INDEX@8350..8368
5594 EXPR_VAR@8350..8353
5595 NAME@8350..8353
5596 IDENT@8350..8353 "std"
5597 DOT@8353..8354 "."
5598 NAME@8354..8368
5599 IDENT@8354..8368 "objectFieldsEx"
5600 ARGS_DESC@8368..8377
5601 L_PAREN@8368..8369 "("
5602 ARG@8369..8370
5603 EXPR_VAR@8369..8370
5604 NAME@8369..8370
5605 IDENT@8369..8370 "o"
5606 COMMA@8370..8371 ","
5607 WHITESPACE@8371..8372 " "
5608 ARG@8372..8376
5609 EXPR_LITERAL@8372..8376
5610 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..8432
5615 FIELD_NAME_FIXED@8382..8391
5616 NAME@8382..8391
5617 IDENT@8382..8391 "objectHas"
5618 PARAMS_DESC@8391..8397
5619 L_PAREN@8391..8392 "("
5620 PARAM@8392..8393
5621 DESTRUCT_FULL@8392..8393
5622 NAME@8392..8393
5623 IDENT@8392..8393 "o"
5624 COMMA@8393..8394 ","
5625 WHITESPACE@8394..8395 " "
5626 PARAM@8395..8396
5627 DESTRUCT_FULL@8395..8396
5628 NAME@8395..8396
5629 IDENT@8395..8396 "f"
5630 R_PAREN@8396..8397 ")"
5631 COLONCOLON@8397..8399 "::"
5632 WHITESPACE@8399..8404 "\n "
5633 EXPR_APPLY@8404..8432
5634 EXPR_INDEX@8404..8419
5635 EXPR_VAR@8404..8407
5636 NAME@8404..8407
5637 IDENT@8404..8407 "std"
5638 DOT@8407..8408 "."
5639 NAME@8408..8419
5640 IDENT@8408..8419 "objectHasEx"
5641 ARGS_DESC@8419..8432
5642 L_PAREN@8419..8420 "("
5643 ARG@8420..8421
5644 EXPR_VAR@8420..8421
5645 NAME@8420..8421
5646 IDENT@8420..8421 "o"
5647 COMMA@8421..8422 ","
5648 WHITESPACE@8422..8423 " "
5649 ARG@8423..8424
5650 EXPR_VAR@8423..8424
5651 NAME@8423..8424
5652 IDENT@8423..8424 "f"
5653 COMMA@8424..8425 ","
5654 WHITESPACE@8425..8426 " "
5655 ARG@8426..8431
5656 EXPR_LITERAL@8426..8431
5657 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..8489
5662 FIELD_NAME_FIXED@8437..8449
5663 NAME@8437..8449
5664 IDENT@8437..8449 "objectHasAll"
5665 PARAMS_DESC@8449..8455
5666 L_PAREN@8449..8450 "("
5667 PARAM@8450..8451
5668 DESTRUCT_FULL@8450..8451
5669 NAME@8450..8451
5670 IDENT@8450..8451 "o"
5671 COMMA@8451..8452 ","
5672 WHITESPACE@8452..8453 " "
5673 PARAM@8453..8454
5674 DESTRUCT_FULL@8453..8454
5675 NAME@8453..8454
5676 IDENT@8453..8454 "f"
5677 R_PAREN@8454..8455 ")"
5678 COLONCOLON@8455..8457 "::"
5679 WHITESPACE@8457..8462 "\n "
5680 EXPR_APPLY@8462..8489
5681 EXPR_INDEX@8462..8477
5682 EXPR_VAR@8462..8465
5683 NAME@8462..8465
5684 IDENT@8462..8465 "std"
5685 DOT@8465..8466 "."
5686 NAME@8466..8477
5687 IDENT@8466..8477 "objectHasEx"
5688 ARGS_DESC@8477..8489
5689 L_PAREN@8477..8478 "("
5690 ARG@8478..8479
5691 EXPR_VAR@8478..8479
5692 NAME@8478..8479
5693 IDENT@8478..8479 "o"
5694 COMMA@8479..8480 ","
5695 WHITESPACE@8480..8481 " "
5696 ARG@8481..8482
5697 EXPR_VAR@8481..8482
5698 NAME@8481..8482
5699 IDENT@8481..8482 "f"
5700 COMMA@8482..8483 ","
5701 WHITESPACE@8483..8484 " "
5702 ARG@8484..8488
5703 EXPR_LITERAL@8484..8488
5704 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..8551
5709 FIELD_NAME_FIXED@8494..8506
5710 NAME@8494..8506
5711 IDENT@8494..8506 "objectValues"
5712 PARAMS_DESC@8506..8509
5713 L_PAREN@8506..8507 "("
5714 PARAM@8507..8508
5715 DESTRUCT_FULL@8507..8508
5716 NAME@8507..8508
5717 IDENT@8507..8508 "o"
5718 R_PAREN@8508..8509 ")"
5719 COLONCOLON@8509..8511 "::"
5720 WHITESPACE@8511..8516 "\n "
5721 EXPR_ARRAY_COMP@8516..8551
5722 L_BRACK@8516..8517 "["
5723 EXPR_INDEX_EXPR@8517..8521
5724 LHS_EXPR@8517..8518
5725 EXPR_VAR@8517..8518
5726 NAME@8517..8518
5727 IDENT@8517..8518 "o"
5728 L_BRACK@8518..8519 "["
5729 EXPR_VAR@8519..8520
5730 NAME@8519..8520
5731 IDENT@8519..8520 "k"
5732 R_BRACK@8520..8521 "]"
5733 WHITESPACE@8521..8522 " "
5734 FOR_SPEC@8522..8550
5735 FOR_KW@8522..8525 "for"
5736 WHITESPACE@8525..8526 " "
5737 NAME@8526..8527
5738 IDENT@8526..8527 "k"
5739 WHITESPACE@8527..8528 " "
5740 IN_KW@8528..8530 "in"
5741 WHITESPACE@8530..8531 " "
5742 EXPR_APPLY@8531..8550
5743 EXPR_INDEX@8531..8547
5744 EXPR_VAR@8531..8534
5745 NAME@8531..8534
5746 IDENT@8531..8534 "std"
5747 DOT@8534..8535 "."
5748 NAME@8535..8547
5749 IDENT@8535..8547 "objectFields"
5750 ARGS_DESC@8547..8550
5751 L_PAREN@8547..8548 "("
5752 ARG@8548..8549
5753 EXPR_VAR@8548..8549
5754 NAME@8548..8549
5755 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..8619
5761 FIELD_NAME_FIXED@8556..8571
5762 NAME@8556..8571
5763 IDENT@8556..8571 "objectValuesAll"
5764 PARAMS_DESC@8571..8574
5765 L_PAREN@8571..8572 "("
5766 PARAM@8572..8573
5767 DESTRUCT_FULL@8572..8573
5768 NAME@8572..8573
5769 IDENT@8572..8573 "o"
5770 R_PAREN@8573..8574 ")"
5771 COLONCOLON@8574..8576 "::"
5772 WHITESPACE@8576..8581 "\n "
5773 EXPR_ARRAY_COMP@8581..8619
5774 L_BRACK@8581..8582 "["
5775 EXPR_INDEX_EXPR@8582..8586
5776 LHS_EXPR@8582..8583
5777 EXPR_VAR@8582..8583
5778 NAME@8582..8583
5779 IDENT@8582..8583 "o"
5780 L_BRACK@8583..8584 "["
5781 EXPR_VAR@8584..8585
5782 NAME@8584..8585
5783 IDENT@8584..8585 "k"
5784 R_BRACK@8585..8586 "]"
5785 WHITESPACE@8586..8587 " "
5786 FOR_SPEC@8587..8618
5787 FOR_KW@8587..8590 "for"
5788 WHITESPACE@8590..8591 " "
5789 NAME@8591..8592
5790 IDENT@8591..8592 "k"
5791 WHITESPACE@8592..8593 " "
5792 IN_KW@8593..8595 "in"
5793 WHITESPACE@8595..8596 " "
5794 EXPR_APPLY@8596..8618
5795 EXPR_INDEX@8596..8615
5796 EXPR_VAR@8596..8599
5797 NAME@8596..8599
5798 IDENT@8596..8599 "std"
5799 DOT@8599..8600 "."
5800 NAME@8600..8615
5801 IDENT@8600..8615 "objectFieldsAll"
5802 ARGS_DESC@8615..8618
5803 L_PAREN@8615..8616 "("
5804 ARG@8616..8617
5805 EXPR_VAR@8616..8617
5806 NAME@8616..8617
5807 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..8758
5813 FIELD_NAME_FIXED@8624..8635
5814 NAME@8624..8635
5815 IDENT@8624..8635 "resolvePath"
5816 PARAMS_DESC@8635..8641
5817 L_PAREN@8635..8636 "("
5818 PARAM@8636..8637
5819 DESTRUCT_FULL@8636..8637
5820 NAME@8636..8637
5821 IDENT@8636..8637 "f"
5822 COMMA@8637..8638 ","
5823 WHITESPACE@8638..8639 " "
5824 PARAM@8639..8640
5825 DESTRUCT_FULL@8639..8640
5826 NAME@8639..8640
5827 IDENT@8639..8640 "r"
5828 R_PAREN@8640..8641 ")"
5829 COLONCOLON@8641..8643 "::"
5830 WHITESPACE@8643..8648 "\n "
5831 STMT_LOCAL@8648..8678
5832 LOCAL_KW@8648..8653 "local"
5833 WHITESPACE@8653..8654 " "
5834 BIND_DESTRUCT@8654..8677
5835 DESTRUCT_FULL@8654..8657
5836 NAME@8654..8657
5837 IDENT@8654..8657 "arr"
5838 WHITESPACE@8657..8658 " "
5839 ASSIGN@8658..8659 "="
5840 WHITESPACE@8659..8660 " "
5841 EXPR_APPLY@8660..8677
5842 EXPR_INDEX@8660..8669
5843 EXPR_VAR@8660..8663
5844 NAME@8660..8663
5845 IDENT@8660..8663 "std"
5846 DOT@8663..8664 "."
5847 NAME@8664..8669
5848 IDENT@8664..8669 "split"
5849 ARGS_DESC@8669..8677
5850 L_PAREN@8669..8670 "("
5851 ARG@8670..8671
5852 EXPR_VAR@8670..8671
5853 NAME@8670..8671
5854 IDENT@8670..8671 "f"
5855 COMMA@8671..8672 ","
5856 WHITESPACE@8672..8673 " "
5857 ARG@8673..8676
5858 EXPR_STRING@8673..8676
5859 STRING_SINGLE@8673..8676 "'/'"
5860 R_PAREN@8676..8677 ")"
5861 SEMI@8677..8678 ";"
5862 WHITESPACE@8678..8683 "\n "
5863 EXPR_APPLY@8683..8758
5864 EXPR_INDEX@8683..8691
5865 EXPR_VAR@8683..8686
5866 NAME@8683..8686
5867 IDENT@8683..8686 "std"
5868 DOT@8686..8687 "."
5869 NAME@8687..8691
5870 IDENT@8687..8691 "join"
5871 ARGS_DESC@8691..8758
5872 L_PAREN@8691..8692 "("
5873 ARG@8692..8695
5874 EXPR_STRING@8692..8695
5875 STRING_SINGLE@8692..8695 "'/'"
5876 COMMA@8695..8696 ","
5877 WHITESPACE@8696..8697 " "
5878 ARG@8697..8757
5879 EXPR_BINARY@8697..8757
5880 LHS_EXPR@8697..8751
5881 EXPR_APPLY@8697..8751
5882 EXPR_INDEX@8697..8710
5883 EXPR_VAR@8697..8700
5884 NAME@8697..8700
5885 IDENT@8697..8700 "std"
5886 DOT@8700..8701 "."
5887 NAME@8701..8710
5888 IDENT@8701..8710 "makeArray"
5889 ARGS_DESC@8710..8751
5890 L_PAREN@8710..8711 "("
5891 ARG@8711..8730
5892 EXPR_BINARY@8711..8730
5893 LHS_EXPR@8711..8726
5894 EXPR_APPLY@8711..8726
5895 EXPR_INDEX@8711..8721
5896 EXPR_VAR@8711..8714
5897 NAME@8711..8714
5898 IDENT@8711..8714 "std"
5899 DOT@8714..8715 "."
5900 NAME@8715..8721
5901 IDENT@8715..8721 "length"
5902 ARGS_DESC@8721..8726
5903 L_PAREN@8721..8722 "("
5904 ARG@8722..8725
5905 EXPR_VAR@8722..8725
5906 NAME@8722..8725
5907 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..8730
5913 FLOAT@8729..8730 "1"
5914 COMMA@8730..8731 ","
5915 WHITESPACE@8731..8732 " "
5916 ARG@8732..8750
5917 EXPR_FUNCTION@8732..8750
5918 FUNCTION_KW@8732..8740 "function"
5919 PARAMS_DESC@8740..8743
5920 L_PAREN@8740..8741 "("
5921 PARAM@8741..8742
5922 DESTRUCT_FULL@8741..8742
5923 NAME@8741..8742
5924 IDENT@8741..8742 "i"
5925 R_PAREN@8742..8743 ")"
5926 WHITESPACE@8743..8744 " "
5927 EXPR_INDEX_EXPR@8744..8750
5928 LHS_EXPR@8744..8747
5929 EXPR_VAR@8744..8747
5930 NAME@8744..8747
5931 IDENT@8744..8747 "arr"
5932 L_BRACK@8747..8748 "["
5933 EXPR_VAR@8748..8749
5934 NAME@8748..8749
5935 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..8757
5942 L_BRACK@8754..8755 "["
5943 EXPR_VAR@8755..8756
5944 NAME@8755..8756
5945 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..9216
5951 FIELD_NAME_FIXED@8763..8768
5952 NAME@8763..8768
5953 IDENT@8763..8768 "prune"
5954 PARAMS_DESC@8768..8771
5955 L_PAREN@8768..8769 "("
5956 PARAM@8769..8770
5957 DESTRUCT_FULL@8769..8770
5958 NAME@8769..8770
5959 IDENT@8769..8770 "a"
5960 R_PAREN@8770..8771 ")"
5961 COLONCOLON@8771..8773 "::"
5962 WHITESPACE@8773..8778 "\n "
5963 STMT_LOCAL@8778..8982
5964 LOCAL_KW@8778..8783 "local"
5965 WHITESPACE@8783..8784 " "
5966 BIND_FUNCTION@8784..8981
5967 NAME@8784..8793
5968 IDENT@8784..8793 "isContent"
5969 PARAMS_DESC@8793..8796
5970 L_PAREN@8793..8794 "("
5971 PARAM@8794..8795
5972 DESTRUCT_FULL@8794..8795
5973 NAME@8794..8795
5974 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..8981
5980 IF_KW@8805..8807 "if"
5981 WHITESPACE@8807..8808 " "
5982 EXPR_BINARY@8808..8817
5983 LHS_EXPR@8808..8809
5984 EXPR_VAR@8808..8809
5985 NAME@8808..8809
5986 IDENT@8808..8809 "b"
5987 WHITESPACE@8809..8810 " "
5988 EQ@8810..8812 "=="
5989 WHITESPACE@8812..8813 " "
5990 EXPR_LITERAL@8813..8817
5991 NULL_KW@8813..8817 "null"
5992 WHITESPACE@8817..8818 " "
5993 THEN_KW@8818..8822 "then"
5994 WHITESPACE@8822..8831 "\n "
5995 TRUE_EXPR@8831..8836
5996 EXPR_LITERAL@8831..8836
5997 FALSE_KW@8831..8836 "false"
5998 WHITESPACE@8836..8843 "\n "
5999 ELSE_KW@8843..8847 "else"
6000 WHITESPACE@8847..8848 " "
6001 FALSE_EXPR@8848..8981
6002 EXPR_IF_THEN_ELSE@8848..8981
6003 IF_KW@8848..8850 "if"
6004 WHITESPACE@8850..8851 " "
6005 EXPR_APPLY@8851..8865
6006 EXPR_INDEX@8851..8862
6007 EXPR_VAR@8851..8854
6008 NAME@8851..8854
6009 IDENT@8851..8854 "std"
6010 DOT@8854..8855 "."
6011 NAME@8855..8862
6012 IDENT@8855..8862 "isArray"
6013 ARGS_DESC@8862..8865
6014 L_PAREN@8862..8863 "("
6015 ARG@8863..8864
6016 EXPR_VAR@8863..8864
6017 NAME@8863..8864
6018 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..8896
6024 EXPR_BINARY@8879..8896
6025 LHS_EXPR@8879..8892
6026 EXPR_APPLY@8879..8892
6027 EXPR_INDEX@8879..8889
6028 EXPR_VAR@8879..8882
6029 NAME@8879..8882
6030 IDENT@8879..8882 "std"
6031 DOT@8882..8883 "."
6032 NAME@8883..8889
6033 IDENT@8883..8889 "length"
6034 ARGS_DESC@8889..8892
6035 L_PAREN@8889..8890 "("
6036 ARG@8890..8891
6037 EXPR_VAR@8890..8891
6038 NAME@8890..8891
6039 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..8896
6045 FLOAT@8895..8896 "0"
6046 WHITESPACE@8896..8903 "\n "
6047 ELSE_KW@8903..8907 "else"
6048 WHITESPACE@8907..8908 " "
6049 FALSE_EXPR@8908..8981
6050 EXPR_IF_THEN_ELSE@8908..8981
6051 IF_KW@8908..8910 "if"
6052 WHITESPACE@8910..8911 " "
6053 EXPR_APPLY@8911..8926
6054 EXPR_INDEX@8911..8923
6055 EXPR_VAR@8911..8914
6056 NAME@8911..8914
6057 IDENT@8911..8914 "std"
6058 DOT@8914..8915 "."
6059 NAME@8915..8923
6060 IDENT@8915..8923 "isObject"
6061 ARGS_DESC@8923..8926
6062 L_PAREN@8923..8924 "("
6063 ARG@8924..8925
6064 EXPR_VAR@8924..8925
6065 NAME@8924..8925
6066 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..8957
6072 EXPR_BINARY@8940..8957
6073 LHS_EXPR@8940..8953
6074 EXPR_APPLY@8940..8953
6075 EXPR_INDEX@8940..8950
6076 EXPR_VAR@8940..8943
6077 NAME@8940..8943
6078 IDENT@8940..8943 "std"
6079 DOT@8943..8944 "."
6080 NAME@8944..8950
6081 IDENT@8944..8950 "length"
6082 ARGS_DESC@8950..8953
6083 L_PAREN@8950..8951 "("
6084 ARG@8951..8952
6085 EXPR_VAR@8951..8952
6086 NAME@8951..8952
6087 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..8957
6093 FLOAT@8956..8957 "0"
6094 WHITESPACE@8957..8964 "\n "
6095 ELSE_KW@8964..8968 "else"
6096 WHITESPACE@8968..8977 "\n "
6097 FALSE_EXPR@8977..8981
6098 EXPR_LITERAL@8977..8981
6099 TRUE_KW@8977..8981 "true"
6100 SEMI@8981..8982 ";"
6101 WHITESPACE@8982..8987 "\n "
6102 EXPR_IF_THEN_ELSE@8987..9216
6103 IF_KW@8987..8989 "if"
6104 WHITESPACE@8989..8990 " "
6105 EXPR_APPLY@8990..9004
6106 EXPR_INDEX@8990..9001
6107 EXPR_VAR@8990..8993
6108 NAME@8990..8993
6109 IDENT@8990..8993 "std"
6110 DOT@8993..8994 "."
6111 NAME@8994..9001
6112 IDENT@8994..9001 "isArray"
6113 ARGS_DESC@9001..9004
6114 L_PAREN@9001..9002 "("
6115 ARG@9002..9003
6116 EXPR_VAR@9002..9003
6117 NAME@9002..9003
6118 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..9066
6124 EXPR_ARRAY_COMP@9016..9066
6125 L_BRACK@9016..9017 "["
6126 EXPR_APPLY@9017..9029
6127 EXPR_INDEX@9017..9026
6128 EXPR_VAR@9017..9020
6129 NAME@9017..9020
6130 IDENT@9017..9020 "std"
6131 DOT@9020..9021 "."
6132 NAME@9021..9026
6133 IDENT@9021..9026 "prune"
6134 ARGS_DESC@9026..9029
6135 L_PAREN@9026..9027 "("
6136 ARG@9027..9028
6137 EXPR_VAR@9027..9028
6138 NAME@9027..9028
6139 IDENT@9027..9028 "x"
6140 R_PAREN@9028..9029 ")"
6141 WHITESPACE@9029..9030 " "
6142 FOR_SPEC@9030..9040
6143 FOR_KW@9030..9033 "for"
6144 WHITESPACE@9033..9034 " "
6145 NAME@9034..9035
6146 IDENT@9034..9035 "x"
6147 WHITESPACE@9035..9036 " "
6148 IN_KW@9036..9038 "in"
6149 WHITESPACE@9038..9039 " "
6150 EXPR_VAR@9039..9040
6151 NAME@9039..9040
6152 IDENT@9039..9040 "a"
6153 WHITESPACE@9040..9041 " "
6154 IF_SPEC@9041..9065
6155 IF_KW@9041..9043 "if"
6156 WHITESPACE@9043..9044 " "
6157 EXPR_APPLY@9044..9065
6158 EXPR_VAR@9044..9053
6159 NAME@9044..9053
6160 IDENT@9044..9053 "isContent"
6161 ARGS_DESC@9053..9065
6162 L_PAREN@9053..9054 "("
6163 ARG@9054..9064
6164 EXPR_APPLY@9054..9064
6165 EXPR_INDEX@9054..9061
6166 EXPR_LITERAL@9054..9055
6167 DOLLAR@9054..9055 "$"
6168 DOT@9055..9056 "."
6169 NAME@9056..9061
6170 IDENT@9056..9061 "prune"
6171 ARGS_DESC@9061..9064
6172 L_PAREN@9061..9062 "("
6173 ARG@9062..9063
6174 EXPR_VAR@9062..9063
6175 NAME@9062..9063
6176 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..9216
6184 EXPR_IF_THEN_ELSE@9076..9216
6185 IF_KW@9076..9078 "if"
6186 WHITESPACE@9078..9079 " "
6187 EXPR_APPLY@9079..9094
6188 EXPR_INDEX@9079..9091
6189 EXPR_VAR@9079..9082
6190 NAME@9079..9082
6191 IDENT@9079..9082 "std"
6192 DOT@9082..9083 "."
6193 NAME@9083..9091
6194 IDENT@9083..9091 "isObject"
6195 ARGS_DESC@9091..9094
6196 L_PAREN@9091..9092 "("
6197 ARG@9092..9093
6198 EXPR_VAR@9092..9093
6199 NAME@9092..9093
6200 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..9203
6206 EXPR_OBJECT@9100..9203
6207 OBJ_BODY_COMP@9100..9203
6208 L_BRACE@9100..9101 "{"
6209 WHITESPACE@9101..9108 "\n "
6210 MEMBER_FIELD_NORMAL@9108..9126
6211 FIELD_NAME_DYNAMIC@9108..9111
6212 L_BRACK@9108..9109 "["
6213 EXPR_VAR@9109..9110
6214 NAME@9109..9110
6215 IDENT@9109..9110 "x"
6216 R_BRACK@9110..9111 "]"
6217 COLON@9111..9112 ":"
6218 WHITESPACE@9112..9113 " "
6219 EXPR_APPLY@9113..9126
6220 EXPR_INDEX@9113..9120
6221 EXPR_LITERAL@9113..9114
6222 DOLLAR@9113..9114 "$"
6223 DOT@9114..9115 "."
6224 NAME@9115..9120
6225 IDENT@9115..9120 "prune"
6226 ARGS_DESC@9120..9126
6227 L_PAREN@9120..9121 "("
6228 ARG@9121..9125
6229 EXPR_INDEX_EXPR@9121..9125
6230 LHS_EXPR@9121..9122
6231 EXPR_VAR@9121..9122
6232 NAME@9121..9122
6233 IDENT@9121..9122 "a"
6234 L_BRACK@9122..9123 "["
6235 EXPR_VAR@9123..9124
6236 NAME@9123..9124
6237 IDENT@9123..9124 "x"
6238 R_BRACK@9124..9125 "]"
6239 R_PAREN@9125..9126 ")"
6240 WHITESPACE@9126..9133 "\n "
6241 FOR_SPEC@9133..9161
6242 FOR_KW@9133..9136 "for"
6243 WHITESPACE@9136..9137 " "
6244 NAME@9137..9138
6245 IDENT@9137..9138 "x"
6246 WHITESPACE@9138..9139 " "
6247 IN_KW@9139..9141 "in"
6248 WHITESPACE@9141..9142 " "
6249 EXPR_APPLY@9142..9161
6250 EXPR_INDEX@9142..9158
6251 EXPR_VAR@9142..9145
6252 NAME@9142..9145
6253 IDENT@9142..9145 "std"
6254 DOT@9145..9146 "."
6255 NAME@9146..9158
6256 IDENT@9146..9158 "objectFields"
6257 ARGS_DESC@9158..9161
6258 L_PAREN@9158..9159 "("
6259 ARG@9159..9160
6260 EXPR_VAR@9159..9160
6261 NAME@9159..9160
6262 IDENT@9159..9160 "a"
6263 R_PAREN@9160..9161 ")"
6264 WHITESPACE@9161..9168 "\n "
6265 IF_SPEC@9168..9197
6266 IF_KW@9168..9170 "if"
6267 WHITESPACE@9170..9171 " "
6268 EXPR_APPLY@9171..9197
6269 EXPR_VAR@9171..9180
6270 NAME@9171..9180
6271 IDENT@9171..9180 "isContent"
6272 ARGS_DESC@9180..9197
6273 L_PAREN@9180..9181 "("
6274 ARG@9181..9196
6275 EXPR_APPLY@9181..9196
6276 EXPR_INDEX@9181..9190
6277 EXPR_VAR@9181..9184
6278 NAME@9181..9184
6279 IDENT@9181..9184 "std"
6280 DOT@9184..9185 "."
6281 NAME@9185..9190
6282 IDENT@9185..9190 "prune"
6283 ARGS_DESC@9190..9196
6284 L_PAREN@9190..9191 "("
6285 ARG@9191..9195
6286 EXPR_INDEX_EXPR@9191..9195
6287 LHS_EXPR@9191..9192
6288 EXPR_VAR@9191..9192
6289 NAME@9191..9192
6290 IDENT@9191..9192 "a"
6291 L_BRACK@9192..9193 "["
6292 EXPR_VAR@9193..9194
6293 NAME@9193..9194
6294 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..9216
6304 EXPR_VAR@9215..9216
6305 NAME@9215..9216
6306 IDENT@9215..9216 "a"
6307 COMMA@9216..9217 ","
6308 WHITESPACE@9217..9221 "\n\n "
6309 MEMBER_FIELD_METHOD@9221..9436
6310 FIELD_NAME_FIXED@9221..9225
6311 NAME@9221..9225
6312 IDENT@9221..9225 "find"
6313 PARAMS_DESC@9225..9237
6314 L_PAREN@9225..9226 "("
6315 PARAM@9226..9231
6316 DESTRUCT_FULL@9226..9231
6317 NAME@9226..9231
6318 IDENT@9226..9231 "value"
6319 COMMA@9231..9232 ","
6320 WHITESPACE@9232..9233 " "
6321 PARAM@9233..9236
6322 DESTRUCT_FULL@9233..9236
6323 NAME@9233..9236
6324 IDENT@9233..9236 "arr"
6325 R_PAREN@9236..9237 ")"
6326 COLONCOLON@9237..9239 "::"
6327 WHITESPACE@9239..9244 "\n "
6328 EXPR_IF_THEN_ELSE@9244..9436
6329 IF_KW@9244..9246 "if"
6330 WHITESPACE@9246..9247 " "
6331 EXPR_UNARY@9247..9264
6332 NOT@9247..9248 "!"
6333 EXPR_APPLY@9248..9264
6334 EXPR_INDEX@9248..9259
6335 EXPR_VAR@9248..9251
6336 NAME@9248..9251
6337 IDENT@9248..9251 "std"
6338 DOT@9251..9252 "."
6339 NAME@9252..9259
6340 IDENT@9252..9259 "isArray"
6341 ARGS_DESC@9259..9264
6342 L_PAREN@9259..9260 "("
6343 ARG@9260..9263
6344 EXPR_VAR@9260..9263
6345 NAME@9260..9263
6346 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..9346
6352 EXPR_ERROR@9276..9346
6353 ERROR_KW@9276..9281 "error"
6354 WHITESPACE@9281..9282 " "
6355 EXPR_BINARY@9282..9346
6356 LHS_EXPR@9282..9330
6357 EXPR_STRING@9282..9330
6358 STRING_SINGLE@9282..9330 "'find second paramete ..."
6359 WHITESPACE@9330..9331 " "
6360 PLUS@9331..9332 "+"
6361 WHITESPACE@9332..9333 " "
6362 EXPR_APPLY@9333..9346
6363 EXPR_INDEX@9333..9341
6364 EXPR_VAR@9333..9336
6365 NAME@9333..9336
6366 IDENT@9333..9336 "std"
6367 DOT@9336..9337 "."
6368 NAME@9337..9341
6369 IDENT@9337..9341 "type"
6370 ARGS_DESC@9341..9346
6371 L_PAREN@9341..9342 "("
6372 ARG@9342..9345
6373 EXPR_VAR@9342..9345
6374 NAME@9342..9345
6375 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..9436
6381 EXPR_APPLY@9362..9436
6382 EXPR_INDEX@9362..9372
6383 EXPR_VAR@9362..9365
6384 NAME@9362..9365
6385 IDENT@9362..9365 "std"
6386 DOT@9365..9366 "."
6387 NAME@9366..9372
6388 IDENT@9366..9372 "filter"
6389 ARGS_DESC@9372..9436
6390 L_PAREN@9372..9373 "("
6391 ARG@9373..9400
6392 EXPR_FUNCTION@9373..9400
6393 FUNCTION_KW@9373..9381 "function"
6394 PARAMS_DESC@9381..9384
6395 L_PAREN@9381..9382 "("
6396 PARAM@9382..9383
6397 DESTRUCT_FULL@9382..9383
6398 NAME@9382..9383
6399 IDENT@9382..9383 "i"
6400 R_PAREN@9383..9384 ")"
6401 WHITESPACE@9384..9385 " "
6402 EXPR_BINARY@9385..9400
6403 LHS_EXPR@9385..9391
6404 EXPR_INDEX_EXPR@9385..9391
6405 LHS_EXPR@9385..9388
6406 EXPR_VAR@9385..9388
6407 NAME@9385..9388
6408 IDENT@9385..9388 "arr"
6409 L_BRACK@9388..9389 "["
6410 EXPR_VAR@9389..9390
6411 NAME@9389..9390
6412 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..9400
6418 NAME@9395..9400
6419 IDENT@9395..9400 "value"
6420 COMMA@9400..9401 ","
6421 WHITESPACE@9401..9402 " "
6422 ARG@9402..9435
6423 EXPR_APPLY@9402..9435
6424 EXPR_INDEX@9402..9411
6425 EXPR_VAR@9402..9405
6426 NAME@9402..9405
6427 IDENT@9402..9405 "std"
6428 DOT@9405..9406 "."
6429 NAME@9406..9411
6430 IDENT@9406..9411 "range"
6431 ARGS_DESC@9411..9435
6432 L_PAREN@9411..9412 "("
6433 ARG@9412..9413
6434 EXPR_NUMBER@9412..9413
6435 FLOAT@9412..9413 "0"
6436 COMMA@9413..9414 ","
6437 WHITESPACE@9414..9415 " "
6438 ARG@9415..9434
6439 EXPR_BINARY@9415..9434
6440 LHS_EXPR@9415..9430
6441 EXPR_APPLY@9415..9430
6442 EXPR_INDEX@9415..9425
6443 EXPR_VAR@9415..9418
6444 NAME@9415..9418
6445 IDENT@9415..9418 "std"
6446 DOT@9418..9419 "."
6447 NAME@9419..9425
6448 IDENT@9419..9425 "length"
6449 ARGS_DESC@9425..9430
6450 L_PAREN@9425..9426 "("
6451 ARG@9426..9429
6452 EXPR_VAR@9426..9429
6453 NAME@9426..9429
6454 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..9434
6460 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..9563
6468 FIELD_NAME_FIXED@9453..9468
6469 NAME@9453..9468
6470 IDENT@9453..9468 "__compare_array"
6471 PARAMS_DESC@9468..9480
6472 L_PAREN@9468..9469 "("
6473 PARAM@9469..9473
6474 DESTRUCT_FULL@9469..9473
6475 NAME@9469..9473
6476 IDENT@9469..9473 "arr1"
6477 COMMA@9473..9474 ","
6478 WHITESPACE@9474..9475 " "
6479 PARAM@9475..9479
6480 DESTRUCT_FULL@9475..9479
6481 NAME@9475..9479
6482 IDENT@9475..9479 "arr2"
6483 R_PAREN@9479..9480 ")"
6484 COLONCOLON@9480..9482 "::"
6485 WHITESPACE@9482..9487 "\n "
6486 EXPR_ASSERT@9487..9563
6487 ASSERTION@9487..9532
6488 ASSERT_KW@9487..9493 "assert"
6489 WHITESPACE@9493..9494 " "
6490 LHS_EXPR@9494..9532
6491 EXPR_BINARY@9494..9532
6492 LHS_EXPR@9494..9511
6493 EXPR_APPLY@9494..9511
6494 EXPR_INDEX@9494..9505
6495 EXPR_VAR@9494..9497
6496 NAME@9494..9497
6497 IDENT@9494..9497 "std"
6498 DOT@9497..9498 "."
6499 NAME@9498..9505
6500 IDENT@9498..9505 "isArray"
6501 ARGS_DESC@9505..9511
6502 L_PAREN@9505..9506 "("
6503 ARG@9506..9510
6504 EXPR_VAR@9506..9510
6505 NAME@9506..9510
6506 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..9532
6512 EXPR_INDEX@9515..9526
6513 EXPR_VAR@9515..9518
6514 NAME@9515..9518
6515 IDENT@9515..9518 "std"
6516 DOT@9518..9519 "."
6517 NAME@9519..9526
6518 IDENT@9519..9526 "isArray"
6519 ARGS_DESC@9526..9532
6520 L_PAREN@9526..9527 "("
6521 ARG@9527..9531
6522 EXPR_VAR@9527..9531
6523 NAME@9527..9531
6524 IDENT@9527..9531 "arr2"
6525 R_PAREN@9531..9532 ")"
6526 SEMI@9532..9533 ";"
6527 WHITESPACE@9533..9538 "\n "
6528 EXPR_APPLY@9538..9563
6529 EXPR_INDEX@9538..9551
6530 EXPR_VAR@9538..9541
6531 NAME@9538..9541
6532 IDENT@9538..9541 "std"
6533 DOT@9541..9542 "."
6534 NAME@9542..9551
6535 IDENT@9542..9551 "__compare"
6536 ARGS_DESC@9551..9563
6537 L_PAREN@9551..9552 "("
6538 ARG@9552..9556
6539 EXPR_VAR@9552..9556
6540 NAME@9552..9556
6541 IDENT@9552..9556 "arr1"
6542 COMMA@9556..9557 ","
6543 WHITESPACE@9557..9558 " "
6544 ARG@9558..9562
6545 EXPR_VAR@9558..9562
6546 NAME@9558..9562
6547 IDENT@9558..9562 "arr2"
6548 R_PAREN@9562..9563 ")"
6549 COMMA@9563..9564 ","
6550 WHITESPACE@9564..9567 "\n "
6551 MEMBER_FIELD_METHOD@9567..9631
6552 FIELD_NAME_FIXED@9567..9579
6553 NAME@9567..9579
6554 IDENT@9567..9579 "__array_less"
6555 PARAMS_DESC@9579..9591
6556 L_PAREN@9579..9580 "("
6557 PARAM@9580..9584
6558 DESTRUCT_FULL@9580..9584
6559 NAME@9580..9584
6560 IDENT@9580..9584 "arr1"
6561 COMMA@9584..9585 ","
6562 WHITESPACE@9585..9586 " "
6563 PARAM@9586..9590
6564 DESTRUCT_FULL@9586..9590
6565 NAME@9586..9590
6566 IDENT@9586..9590 "arr2"
6567 R_PAREN@9590..9591 ")"
6568 COLONCOLON@9591..9593 "::"
6569 WHITESPACE@9593..9594 " "
6570 EXPR_BINARY@9594..9631
6571 LHS_EXPR@9594..9625
6572 EXPR_APPLY@9594..9625
6573 EXPR_INDEX@9594..9613
6574 EXPR_VAR@9594..9597
6575 NAME@9594..9597
6576 IDENT@9594..9597 "std"
6577 DOT@9597..9598 "."
6578 NAME@9598..9613
6579 IDENT@9598..9613 "__compare_array"
6580 ARGS_DESC@9613..9625
6581 L_PAREN@9613..9614 "("
6582 ARG@9614..9618
6583 EXPR_VAR@9614..9618
6584 NAME@9614..9618
6585 IDENT@9614..9618 "arr1"
6586 COMMA@9618..9619 ","
6587 WHITESPACE@9619..9620 " "
6588 ARG@9620..9624
6589 EXPR_VAR@9620..9624
6590 NAME@9620..9624
6591 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..9631
6597 MINUS@9629..9630 "-"
6598 EXPR_NUMBER@9630..9631
6599 FLOAT@9630..9631 "1"
6600 COMMA@9631..9632 ","
6601 WHITESPACE@9632..9635 "\n "
6602 MEMBER_FIELD_METHOD@9635..9701
6603 FIELD_NAME_FIXED@9635..9650
6604 NAME@9635..9650
6605 IDENT@9635..9650 "__array_greater"
6606 PARAMS_DESC@9650..9662
6607 L_PAREN@9650..9651 "("
6608 PARAM@9651..9655
6609 DESTRUCT_FULL@9651..9655
6610 NAME@9651..9655
6611 IDENT@9651..9655 "arr1"
6612 COMMA@9655..9656 ","
6613 WHITESPACE@9656..9657 " "
6614 PARAM@9657..9661
6615 DESTRUCT_FULL@9657..9661
6616 NAME@9657..9661
6617 IDENT@9657..9661 "arr2"
6618 R_PAREN@9661..9662 ")"
6619 COLONCOLON@9662..9664 "::"
6620 WHITESPACE@9664..9665 " "
6621 EXPR_BINARY@9665..9701
6622 LHS_EXPR@9665..9696
6623 EXPR_APPLY@9665..9696
6624 EXPR_INDEX@9665..9684
6625 EXPR_VAR@9665..9668
6626 NAME@9665..9668
6627 IDENT@9665..9668 "std"
6628 DOT@9668..9669 "."
6629 NAME@9669..9684
6630 IDENT@9669..9684 "__compare_array"
6631 ARGS_DESC@9684..9696
6632 L_PAREN@9684..9685 "("
6633 ARG@9685..9689
6634 EXPR_VAR@9685..9689
6635 NAME@9685..9689
6636 IDENT@9685..9689 "arr1"
6637 COMMA@9689..9690 ","
6638 WHITESPACE@9690..9691 " "
6639 ARG@9691..9695
6640 EXPR_VAR@9691..9695
6641 NAME@9691..9695
6642 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..9701
6648 FLOAT@9700..9701 "1"
6649 COMMA@9701..9702 ","
6650 WHITESPACE@9702..9705 "\n "
6651 MEMBER_FIELD_METHOD@9705..9777
6652 FIELD_NAME_FIXED@9705..9726
6653 NAME@9705..9726
6654 IDENT@9705..9726 "__array_less_or_equal"
6655 PARAMS_DESC@9726..9738
6656 L_PAREN@9726..9727 "("
6657 PARAM@9727..9731
6658 DESTRUCT_FULL@9727..9731
6659 NAME@9727..9731
6660 IDENT@9727..9731 "arr1"
6661 COMMA@9731..9732 ","
6662 WHITESPACE@9732..9733 " "
6663 PARAM@9733..9737
6664 DESTRUCT_FULL@9733..9737
6665 NAME@9733..9737
6666 IDENT@9733..9737 "arr2"
6667 R_PAREN@9737..9738 ")"
6668 COLONCOLON@9738..9740 "::"
6669 WHITESPACE@9740..9741 " "
6670 EXPR_BINARY@9741..9777
6671 LHS_EXPR@9741..9772
6672 EXPR_APPLY@9741..9772
6673 EXPR_INDEX@9741..9760
6674 EXPR_VAR@9741..9744
6675 NAME@9741..9744
6676 IDENT@9741..9744 "std"
6677 DOT@9744..9745 "."
6678 NAME@9745..9760
6679 IDENT@9745..9760 "__compare_array"
6680 ARGS_DESC@9760..9772
6681 L_PAREN@9760..9761 "("
6682 ARG@9761..9765
6683 EXPR_VAR@9761..9765
6684 NAME@9761..9765
6685 IDENT@9761..9765 "arr1"
6686 COMMA@9765..9766 ","
6687 WHITESPACE@9766..9767 " "
6688 ARG@9767..9771
6689 EXPR_VAR@9767..9771
6690 NAME@9767..9771
6691 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..9777
6697 FLOAT@9776..9777 "0"
6698 COMMA@9777..9778 ","
6699 WHITESPACE@9778..9781 "\n "
6700 MEMBER_FIELD_METHOD@9781..9856
6701 FIELD_NAME_FIXED@9781..9805
6702 NAME@9781..9805
6703 IDENT@9781..9805 "__array_greater_or_equal"
6704 PARAMS_DESC@9805..9817
6705 L_PAREN@9805..9806 "("
6706 PARAM@9806..9810
6707 DESTRUCT_FULL@9806..9810
6708 NAME@9806..9810
6709 IDENT@9806..9810 "arr1"
6710 COMMA@9810..9811 ","
6711 WHITESPACE@9811..9812 " "
6712 PARAM@9812..9816
6713 DESTRUCT_FULL@9812..9816
6714 NAME@9812..9816
6715 IDENT@9812..9816 "arr2"
6716 R_PAREN@9816..9817 ")"
6717 COLONCOLON@9817..9819 "::"
6718 WHITESPACE@9819..9820 " "
6719 EXPR_BINARY@9820..9856
6720 LHS_EXPR@9820..9851
6721 EXPR_APPLY@9820..9851
6722 EXPR_INDEX@9820..9839
6723 EXPR_VAR@9820..9823
6724 NAME@9820..9823
6725 IDENT@9820..9823 "std"
6726 DOT@9823..9824 "."
6727 NAME@9824..9839
6728 IDENT@9824..9839 "__compare_array"
6729 ARGS_DESC@9839..9851
6730 L_PAREN@9839..9840 "("
6731 ARG@9840..9844
6732 EXPR_VAR@9840..9844
6733 NAME@9840..9844
6734 IDENT@9840..9844 "arr1"
6735 COMMA@9844..9845 ","
6736 WHITESPACE@9845..9846 " "
6737 ARG@9846..9850
6738 EXPR_VAR@9846..9850
6739 NAME@9846..9850
6740 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..9856
6746 FLOAT@9855..9856 "0"
6747 COMMA@9856..9857 ","
6748 WHITESPACE@9857..9858 "\n"
6749 R_BRACE@9858..9859 "}"
6750 WHITESPACE@9859..9860 "\n"
67515687
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_indent.snapdiffbeforeafterboth
3expression: "|||\n"3expression: "|||\n"
4---4---
5SOURCE_FILE@0..45SOURCE_FILE@0..4
6 EXPR_STRING@0..46 EXPR@0..4
7 EXPR_STRING@0..4
7 ERROR_STRING_BLOCK_MISSING_INDENT@0..4 "|||\n"8 ERROR_STRING_BLOCK_MISSING_INDENT@0..4 "|||\n"
89
9
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_indent_text.snapdiffbeforeafterboth
3expression: "|||\nhello\n"3expression: "|||\nhello\n"
4---4---
5SOURCE_FILE@0..105SOURCE_FILE@0..10
6 EXPR_STRING@0..106 EXPR@0..10
7 EXPR_STRING@0..10
7 ERROR_STRING_BLOCK_MISSING_INDENT@0..10 "|||\nhello\n"8 ERROR_STRING_BLOCK_MISSING_INDENT@0..10 "|||\nhello\n"
89
9
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_newline.snapdiffbeforeafterboth
3expression: "|||hello\n"3expression: "|||hello\n"
4---4---
5SOURCE_FILE@0..95SOURCE_FILE@0..9
6 EXPR_STRING@0..96 EXPR@0..9
7 EXPR_STRING@0..9
7 ERROR_STRING_BLOCK_MISSING_NEW_LINE@0..9 "|||hello\n"8 ERROR_STRING_BLOCK_MISSING_NEW_LINE@0..9 "|||hello\n"
89
9
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__str_block_missing_termination.snapdiffbeforeafterboth
3expression: "|||\n\thello\n"3expression: "|||\n\thello\n"
4---4---
5SOURCE_FILE@0..115SOURCE_FILE@0..11
6 EXPR_STRING@0..116 EXPR@0..11
7 EXPR_STRING@0..11
7 ERROR_STRING_BLOCK_UNEXPECTED_END@0..11 "|||\n\thello\n"8 ERROR_STRING_BLOCK_UNEXPECTED_END@0..11 "|||\n\thello\n"
89
9
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__unexpected_destruct.snapdiffbeforeafterboth
3expression: "local * = 1;\na\n"3expression: "local * = 1;\na\n"
4---4---
5SOURCE_FILE@0..155SOURCE_FILE@0..15
6 STMT_LOCAL@0..126 EXPR@0..14
7 STMT_LOCAL@0..12
7 LOCAL_KW@0..5 "local"8 LOCAL_KW@0..5 "local"
8 WHITESPACE@5..6 " "9 WHITESPACE@5..6 " "
9 BIND_DESTRUCT@6..1110 BIND_DESTRUCT@6..11
10 ERROR_UNEXPECTED_TOKEN@6..711 ERROR_UNEXPECTED_TOKEN@6..7
11 MUL@6..7 "*"12 MUL@6..7 "*"
12 WHITESPACE@7..8 " "13 WHITESPACE@7..8 " "
13 ASSIGN@8..9 "="14 ASSIGN@8..9 "="
14 WHITESPACE@9..10 " "15 WHITESPACE@9..10 " "
15 EXPR_NUMBER@10..1116 EXPR@10..11
17 EXPR_NUMBER@10..11
16 FLOAT@10..11 "1"18 FLOAT@10..11 "1"
17 SEMI@11..12 ";"19 SEMI@11..12 ";"
18 WHITESPACE@12..13 "\n"20 WHITESPACE@12..13 "\n"
19 EXPR_VAR@13..1421 EXPR_VAR@13..14
20 NAME@13..1422 NAME@13..14
21 IDENT@13..14 "a"23 IDENT@13..14 "a"
22 WHITESPACE@14..15 "\n"24 WHITESPACE@14..15 "\n"
23===25===
24LocatedSyntaxError { error: Unexpected { expected: Named("destruction specifier"), found: MUL }, range: 6..7 }26LocatedSyntaxError { error: Unexpected { expected: Named("destruction specifier"), found: MUL }, range: 6..7 }
modifiedcrates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__wrong_field_end.snapdiffbeforeafterboth
3expression: "{\n\ta: 1;\n\tb: 2;\n}\n"3expression: "{\n\ta: 1;\n\tb: 2;\n}\n"
4---4---
5SOURCE_FILE@0..185SOURCE_FILE@0..18
6 EXPR_OBJECT@0..176 EXPR@0..17
7 EXPR_OBJECT@0..17
7 OBJ_BODY_MEMBER_LIST@0..178 OBJ_BODY_MEMBER_LIST@0..17
8 L_BRACE@0..1 "{"9 L_BRACE@0..1 "{"
9 WHITESPACE@1..3 "\n\t"10 WHITESPACE@1..3 "\n\t"
10 MEMBER_FIELD_NORMAL@3..711 MEMBER_FIELD_NORMAL@3..7
11 FIELD_NAME_FIXED@3..412 FIELD_NAME_FIXED@3..4
12 NAME@3..413 NAME@3..4
13 IDENT@3..4 "a"14 IDENT@3..4 "a"
14 COLON@4..5 ":"15 COLON@4..5 ":"
15 WHITESPACE@5..6 " "16 WHITESPACE@5..6 " "
16 EXPR_NUMBER@6..717 EXPR@6..7
18 EXPR_NUMBER@6..7
17 FLOAT@6..7 "1"19 FLOAT@6..7 "1"
18 ERROR_UNEXPECTED_TOKEN@7..820 ERROR_UNEXPECTED_TOKEN@7..8
19 SEMI@7..8 ";"21 SEMI@7..8 ";"
20 WHITESPACE@8..10 "\n\t"22 WHITESPACE@8..10 "\n\t"
21 MEMBER_FIELD_NORMAL@10..1423 MEMBER_FIELD_NORMAL@10..14
22 FIELD_NAME_FIXED@10..1124 FIELD_NAME_FIXED@10..11
23 NAME@10..1125 NAME@10..11
24 IDENT@10..11 "b"26 IDENT@10..11 "b"
25 COLON@11..12 ":"27 COLON@11..12 ":"
26 WHITESPACE@12..13 " "28 WHITESPACE@12..13 " "
27 EXPR_NUMBER@13..1429 EXPR@13..14
30 EXPR_NUMBER@13..14
28 FLOAT@13..14 "2"31 FLOAT@13..14 "2"
29 ERROR_UNEXPECTED_TOKEN@14..1532 ERROR_UNEXPECTED_TOKEN@14..15
30 SEMI@14..15 ";"33 SEMI@14..15 ";"
31 WHITESPACE@15..16 "\n"34 WHITESPACE@15..16 "\n"
32 R_BRACE@16..17 "}"35 R_BRACE@16..17 "}"
33 WHITESPACE@17..18 "\n"36 WHITESPACE@17..18 "\n"
34===37===
35LocatedSyntaxError { error: Unexpected { expected: Named("comma"), found: SEMI }, range: 7..8 }38LocatedSyntaxError { error: Unexpected { expected: Named("comma"), found: SEMI }, range: 7..8 }
modifiedcrates/jrsonnet-rowan-parser/src/tests.rsdiffbeforeafterboth
72 styles: ThemeStyles::none(),72 styles: ThemeStyles::none(),
73 });73 });
7474
75 write!(out, "===").unwrap();75 writeln!(out, "===").unwrap();
76 handler76 handler
77 .render_report(&mut out, &diag)77 .render_report(&mut out, &diag)
78 .expect("fmt error?..");78 .expect("fmt error?..");
modifiedxtask/src/sourcegen/ast.rsdiffbeforeafterboth
149 let mut types = HashMap::new();149 let mut types = HashMap::new();
150 for field in fields.iter().filter(|f| f.token_name().is_none()) {150 for field in fields.iter().filter(|f| f.token_name().is_none()) {
151 if let Some(old) = types.insert(field.ty(), field.method_name(kinds)) {151 if let Some(old) = types.insert(field.ty(), field.method_name(kinds)) {
152 panic!("{name}.{} has same type as {name}.{}, resolve conflict by wrapping one field: {}", old, field.method_name(kinds), field.ty());152 // panic!("{name}.{} has same type as {name}.{}, resolve conflict by wrapping one field: {}", old, field.method_name(kinds), field.ty());
153 }153 }
154 // TODO: check for assignable field types, i.e you can have154 // TODO: check for assignable field types, i.e you can have
155 // ```155 // ```
modifiedxtask/src/sourcegen/kinds.rsdiffbeforeafterboth
212 let mut kinds = KindsSrc::new();212 let mut kinds = KindsSrc::new();
213 define_kinds![kinds =213 define_kinds![kinds =
214 "||" => "OR";214 "||" => "OR";
215 "??" => "NULL_COAELSE";
215 "&&" => "AND";216 "&&" => "AND";
216 "|" => "BIT_OR";217 "|" => "BIT_OR";
217 "^" => "BIT_XOR";218 "^" => "BIT_XOR";