biome_js_parser 0.5.7

Biome's JavaScript parser
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
JsModule {
    bom_token: missing (optional),
    interpreter_token: missing (optional),
    directives: JsDirectiveList [],
    items: JsModuleItemList [
        JsExpressionStatement {
            expression: JsParenthesizedExpression {
                l_paren_token: L_PAREN@0..1 "(" [] [],
                expression: JsAssignmentExpression {
                    left: JsArrayAssignmentPattern {
                        l_brack_token: L_BRACK@1..3 "[" [] [Whitespace(" ")],
                        elements: JsArrayAssignmentPatternElementList [
                            JsArrayAssignmentPatternRestElement {
                                dotdotdot_token: DOT3@3..6 "..." [] [],
                                pattern: JsIdentifierAssignment {
                                    name_token: IDENT@6..11 "abcd" [] [Whitespace(" ")],
                                },
                            },
                        ],
                        r_brack_token: R_BRACK@11..13 "]" [] [Whitespace(" ")],
                    },
                    operator_token: EQ@13..15 "=" [] [Whitespace(" ")],
                    right: JsIdentifierExpression {
                        name: JsReferenceIdentifier {
                            value_token: IDENT@15..16 "a" [] [],
                        },
                    },
                },
                r_paren_token: R_PAREN@16..17 ")" [] [],
            },
            semicolon_token: SEMICOLON@17..18 ";" [] [],
        },
        JsExpressionStatement {
            expression: JsParenthesizedExpression {
                l_paren_token: L_PAREN@18..20 "(" [Newline("\n")] [],
                expression: JsAssignmentExpression {
                    left: JsArrayAssignmentPattern {
                        l_brack_token: L_BRACK@20..22 "[" [] [Whitespace(" ")],
                        elements: JsArrayAssignmentPatternElementList [
                            JsArrayAssignmentPatternRestElement {
                                dotdotdot_token: DOT3@22..25 "..." [] [],
                                pattern: JsParenthesizedAssignment {
                                    l_paren_token: L_PAREN@25..26 "(" [] [],
                                    assignment: JsIdentifierAssignment {
                                        name_token: IDENT@26..30 "abcd" [] [],
                                    },
                                    r_paren_token: R_PAREN@30..32 ")" [] [Whitespace(" ")],
                                },
                            },
                        ],
                        r_brack_token: R_BRACK@32..34 "]" [] [Whitespace(" ")],
                    },
                    operator_token: EQ@34..36 "=" [] [Whitespace(" ")],
                    right: JsIdentifierExpression {
                        name: JsReferenceIdentifier {
                            value_token: IDENT@36..37 "a" [] [],
                        },
                    },
                },
                r_paren_token: R_PAREN@37..38 ")" [] [],
            },
            semicolon_token: SEMICOLON@38..39 ";" [] [],
        },
        JsExpressionStatement {
            expression: JsParenthesizedExpression {
                l_paren_token: L_PAREN@39..41 "(" [Newline("\n")] [],
                expression: JsAssignmentExpression {
                    left: JsArrayAssignmentPattern {
                        l_brack_token: L_BRACK@41..43 "[" [] [Whitespace(" ")],
                        elements: JsArrayAssignmentPatternElementList [
                            JsArrayAssignmentPatternRestElement {
                                dotdotdot_token: DOT3@43..46 "..." [] [],
                                pattern: JsStaticMemberAssignment {
                                    object: JsIdentifierExpression {
                                        name: JsReferenceIdentifier {
                                            value_token: IDENT@46..47 "m" [] [],
                                        },
                                    },
                                    dot_token: DOT@47..48 "." [] [],
                                    member: JsName {
                                        value_token: IDENT@48..53 "test" [] [Whitespace(" ")],
                                    },
                                },
                            },
                        ],
                        r_brack_token: R_BRACK@53..55 "]" [] [Whitespace(" ")],
                    },
                    operator_token: EQ@55..57 "=" [] [Whitespace(" ")],
                    right: JsIdentifierExpression {
                        name: JsReferenceIdentifier {
                            value_token: IDENT@57..58 "c" [] [],
                        },
                    },
                },
                r_paren_token: R_PAREN@58..59 ")" [] [],
            },
            semicolon_token: SEMICOLON@59..60 ";" [] [],
        },
        JsExpressionStatement {
            expression: JsParenthesizedExpression {
                l_paren_token: L_PAREN@60..62 "(" [Newline("\n")] [],
                expression: JsAssignmentExpression {
                    left: JsArrayAssignmentPattern {
                        l_brack_token: L_BRACK@62..64 "[" [] [Whitespace(" ")],
                        elements: JsArrayAssignmentPatternElementList [
                            JsArrayAssignmentPatternRestElement {
                                dotdotdot_token: DOT3@64..67 "..." [] [],
                                pattern: JsComputedMemberAssignment {
                                    object: JsIdentifierExpression {
                                        name: JsReferenceIdentifier {
                                            value_token: IDENT@67..68 "m" [] [],
                                        },
                                    },
                                    l_brack_token: L_BRACK@68..69 "[" [] [],
                                    member: JsCallExpression {
                                        callee: JsIdentifierExpression {
                                            name: JsReferenceIdentifier {
                                                value_token: IDENT@69..73 "call" [] [],
                                            },
                                        },
                                        optional_chain_token: missing (optional),
                                        type_arguments: missing (optional),
                                        arguments: JsCallArguments {
                                            l_paren_token: L_PAREN@73..74 "(" [] [],
                                            args: JsCallArgumentList [],
                                            r_paren_token: R_PAREN@74..75 ")" [] [],
                                        },
                                    },
                                    r_brack_token: R_BRACK@75..77 "]" [] [Whitespace(" ")],
                                },
                            },
                        ],
                        r_brack_token: R_BRACK@77..79 "]" [] [Whitespace(" ")],
                    },
                    operator_token: EQ@79..81 "=" [] [Whitespace(" ")],
                    right: JsIdentifierExpression {
                        name: JsReferenceIdentifier {
                            value_token: IDENT@81..82 "c" [] [],
                        },
                    },
                },
                r_paren_token: R_PAREN@82..83 ")" [] [],
            },
            semicolon_token: SEMICOLON@83..84 ";" [] [],
        },
        JsExpressionStatement {
            expression: JsParenthesizedExpression {
                l_paren_token: L_PAREN@84..86 "(" [Newline("\n")] [],
                expression: JsAssignmentExpression {
                    left: JsArrayAssignmentPattern {
                        l_brack_token: L_BRACK@86..88 "[" [] [Whitespace(" ")],
                        elements: JsArrayAssignmentPatternElementList [
                            JsArrayAssignmentPatternRestElement {
                                dotdotdot_token: DOT3@88..91 "..." [] [],
                                pattern: JsStaticMemberAssignment {
                                    object: JsCallExpression {
                                        callee: JsStaticMemberExpression {
                                            object: JsIdentifierExpression {
                                                name: JsReferenceIdentifier {
                                                    value_token: IDENT@91..94 "any" [] [],
                                                },
                                            },
                                            operator_token: DOT@94..95 "." [] [],
                                            member: JsName {
                                                value_token: IDENT@95..105 "expression" [] [],
                                            },
                                        },
                                        optional_chain_token: missing (optional),
                                        type_arguments: missing (optional),
                                        arguments: JsCallArguments {
                                            l_paren_token: L_PAREN@105..106 "(" [] [],
                                            args: JsCallArgumentList [],
                                            r_paren_token: R_PAREN@106..107 ")" [] [],
                                        },
                                    },
                                    dot_token: DOT@107..108 "." [] [],
                                    member: JsName {
                                        value_token: IDENT@108..110 "b" [] [Whitespace(" ")],
                                    },
                                },
                            },
                        ],
                        r_brack_token: R_BRACK@110..112 "]" [] [Whitespace(" ")],
                    },
                    operator_token: EQ@112..114 "=" [] [Whitespace(" ")],
                    right: JsIdentifierExpression {
                        name: JsReferenceIdentifier {
                            value_token: IDENT@114..115 "c" [] [],
                        },
                    },
                },
                r_paren_token: R_PAREN@115..116 ")" [] [],
            },
            semicolon_token: SEMICOLON@116..117 ";" [] [],
        },
        JsExpressionStatement {
            expression: JsParenthesizedExpression {
                l_paren_token: L_PAREN@117..119 "(" [Newline("\n")] [],
                expression: JsAssignmentExpression {
                    left: JsArrayAssignmentPattern {
                        l_brack_token: L_BRACK@119..121 "[" [] [Whitespace(" ")],
                        elements: JsArrayAssignmentPatternElementList [
                            JsArrayAssignmentPatternRestElement {
                                dotdotdot_token: DOT3@121..124 "..." [] [],
                                pattern: JsArrayAssignmentPattern {
                                    l_brack_token: L_BRACK@124..125 "[" [] [],
                                    elements: JsArrayAssignmentPatternElementList [
                                        JsArrayAssignmentPatternElement {
                                            pattern: JsIdentifierAssignment {
                                                name_token: IDENT@125..126 "x" [] [],
                                            },
                                            init: missing (optional),
                                        },
                                        COMMA@126..128 "," [] [Whitespace(" ")],
                                        JsArrayAssignmentPatternElement {
                                            pattern: JsIdentifierAssignment {
                                                name_token: IDENT@128..129 "y" [] [],
                                            },
                                            init: missing (optional),
                                        },
                                    ],
                                    r_brack_token: R_BRACK@129..131 "]" [] [Whitespace(" ")],
                                },
                            },
                        ],
                        r_brack_token: R_BRACK@131..133 "]" [] [Whitespace(" ")],
                    },
                    operator_token: EQ@133..135 "=" [] [Whitespace(" ")],
                    right: JsIdentifierExpression {
                        name: JsReferenceIdentifier {
                            value_token: IDENT@135..136 "b" [] [],
                        },
                    },
                },
                r_paren_token: R_PAREN@136..137 ")" [] [],
            },
            semicolon_token: SEMICOLON@137..138 ";" [] [],
        },
        JsExpressionStatement {
            expression: JsParenthesizedExpression {
                l_paren_token: L_PAREN@138..140 "(" [Newline("\n")] [],
                expression: JsAssignmentExpression {
                    left: JsArrayAssignmentPattern {
                        l_brack_token: L_BRACK@140..142 "[" [] [Whitespace(" ")],
                        elements: JsArrayAssignmentPatternElementList [
                            JsArrayAssignmentPatternRestElement {
                                dotdotdot_token: DOT3@142..145 "..." [] [],
                                pattern: JsArrayAssignmentPattern {
                                    l_brack_token: L_BRACK@145..147 "[" [] [Whitespace(" ")],
                                    elements: JsArrayAssignmentPatternElementList [
                                        JsArrayAssignmentPatternRestElement {
                                            dotdotdot_token: DOT3@147..150 "..." [] [],
                                            pattern: JsIdentifierAssignment {
                                                name_token: IDENT@150..152 "a" [] [Whitespace(" ")],
                                            },
                                        },
                                    ],
                                    r_brack_token: R_BRACK@152..154 "]" [] [Whitespace(" ")],
                                },
                            },
                        ],
                        r_brack_token: R_BRACK@154..156 "]" [] [Whitespace(" ")],
                    },
                    operator_token: EQ@156..158 "=" [] [Whitespace(" ")],
                    right: JsIdentifierExpression {
                        name: JsReferenceIdentifier {
                            value_token: IDENT@158..159 "c" [] [],
                        },
                    },
                },
                r_paren_token: R_PAREN@159..160 ")" [] [],
            },
            semicolon_token: SEMICOLON@160..161 ";" [] [],
        },
    ],
    eof_token: EOF@161..162 "" [Newline("\n")] [],
}

0: JS_MODULE@0..162
  0: (empty)
  1: (empty)
  2: JS_DIRECTIVE_LIST@0..0
  3: JS_MODULE_ITEM_LIST@0..161
    0: JS_EXPRESSION_STATEMENT@0..18
      0: JS_PARENTHESIZED_EXPRESSION@0..17
        0: L_PAREN@0..1 "(" [] []
        1: JS_ASSIGNMENT_EXPRESSION@1..16
          0: JS_ARRAY_ASSIGNMENT_PATTERN@1..13
            0: L_BRACK@1..3 "[" [] [Whitespace(" ")]
            1: JS_ARRAY_ASSIGNMENT_PATTERN_ELEMENT_LIST@3..11
              0: JS_ARRAY_ASSIGNMENT_PATTERN_REST_ELEMENT@3..11
                0: DOT3@3..6 "..." [] []
                1: JS_IDENTIFIER_ASSIGNMENT@6..11
                  0: IDENT@6..11 "abcd" [] [Whitespace(" ")]
            2: R_BRACK@11..13 "]" [] [Whitespace(" ")]
          1: EQ@13..15 "=" [] [Whitespace(" ")]
          2: JS_IDENTIFIER_EXPRESSION@15..16
            0: JS_REFERENCE_IDENTIFIER@15..16
              0: IDENT@15..16 "a" [] []
        2: R_PAREN@16..17 ")" [] []
      1: SEMICOLON@17..18 ";" [] []
    1: JS_EXPRESSION_STATEMENT@18..39
      0: JS_PARENTHESIZED_EXPRESSION@18..38
        0: L_PAREN@18..20 "(" [Newline("\n")] []
        1: JS_ASSIGNMENT_EXPRESSION@20..37
          0: JS_ARRAY_ASSIGNMENT_PATTERN@20..34
            0: L_BRACK@20..22 "[" [] [Whitespace(" ")]
            1: JS_ARRAY_ASSIGNMENT_PATTERN_ELEMENT_LIST@22..32
              0: JS_ARRAY_ASSIGNMENT_PATTERN_REST_ELEMENT@22..32
                0: DOT3@22..25 "..." [] []
                1: JS_PARENTHESIZED_ASSIGNMENT@25..32
                  0: L_PAREN@25..26 "(" [] []
                  1: JS_IDENTIFIER_ASSIGNMENT@26..30
                    0: IDENT@26..30 "abcd" [] []
                  2: R_PAREN@30..32 ")" [] [Whitespace(" ")]
            2: R_BRACK@32..34 "]" [] [Whitespace(" ")]
          1: EQ@34..36 "=" [] [Whitespace(" ")]
          2: JS_IDENTIFIER_EXPRESSION@36..37
            0: JS_REFERENCE_IDENTIFIER@36..37
              0: IDENT@36..37 "a" [] []
        2: R_PAREN@37..38 ")" [] []
      1: SEMICOLON@38..39 ";" [] []
    2: JS_EXPRESSION_STATEMENT@39..60
      0: JS_PARENTHESIZED_EXPRESSION@39..59
        0: L_PAREN@39..41 "(" [Newline("\n")] []
        1: JS_ASSIGNMENT_EXPRESSION@41..58
          0: JS_ARRAY_ASSIGNMENT_PATTERN@41..55
            0: L_BRACK@41..43 "[" [] [Whitespace(" ")]
            1: JS_ARRAY_ASSIGNMENT_PATTERN_ELEMENT_LIST@43..53
              0: JS_ARRAY_ASSIGNMENT_PATTERN_REST_ELEMENT@43..53
                0: DOT3@43..46 "..." [] []
                1: JS_STATIC_MEMBER_ASSIGNMENT@46..53
                  0: JS_IDENTIFIER_EXPRESSION@46..47
                    0: JS_REFERENCE_IDENTIFIER@46..47
                      0: IDENT@46..47 "m" [] []
                  1: DOT@47..48 "." [] []
                  2: JS_NAME@48..53
                    0: IDENT@48..53 "test" [] [Whitespace(" ")]
            2: R_BRACK@53..55 "]" [] [Whitespace(" ")]
          1: EQ@55..57 "=" [] [Whitespace(" ")]
          2: JS_IDENTIFIER_EXPRESSION@57..58
            0: JS_REFERENCE_IDENTIFIER@57..58
              0: IDENT@57..58 "c" [] []
        2: R_PAREN@58..59 ")" [] []
      1: SEMICOLON@59..60 ";" [] []
    3: JS_EXPRESSION_STATEMENT@60..84
      0: JS_PARENTHESIZED_EXPRESSION@60..83
        0: L_PAREN@60..62 "(" [Newline("\n")] []
        1: JS_ASSIGNMENT_EXPRESSION@62..82
          0: JS_ARRAY_ASSIGNMENT_PATTERN@62..79
            0: L_BRACK@62..64 "[" [] [Whitespace(" ")]
            1: JS_ARRAY_ASSIGNMENT_PATTERN_ELEMENT_LIST@64..77
              0: JS_ARRAY_ASSIGNMENT_PATTERN_REST_ELEMENT@64..77
                0: DOT3@64..67 "..." [] []
                1: JS_COMPUTED_MEMBER_ASSIGNMENT@67..77
                  0: JS_IDENTIFIER_EXPRESSION@67..68
                    0: JS_REFERENCE_IDENTIFIER@67..68
                      0: IDENT@67..68 "m" [] []
                  1: L_BRACK@68..69 "[" [] []
                  2: JS_CALL_EXPRESSION@69..75
                    0: JS_IDENTIFIER_EXPRESSION@69..73
                      0: JS_REFERENCE_IDENTIFIER@69..73
                        0: IDENT@69..73 "call" [] []
                    1: (empty)
                    2: (empty)
                    3: JS_CALL_ARGUMENTS@73..75
                      0: L_PAREN@73..74 "(" [] []
                      1: JS_CALL_ARGUMENT_LIST@74..74
                      2: R_PAREN@74..75 ")" [] []
                  3: R_BRACK@75..77 "]" [] [Whitespace(" ")]
            2: R_BRACK@77..79 "]" [] [Whitespace(" ")]
          1: EQ@79..81 "=" [] [Whitespace(" ")]
          2: JS_IDENTIFIER_EXPRESSION@81..82
            0: JS_REFERENCE_IDENTIFIER@81..82
              0: IDENT@81..82 "c" [] []
        2: R_PAREN@82..83 ")" [] []
      1: SEMICOLON@83..84 ";" [] []
    4: JS_EXPRESSION_STATEMENT@84..117
      0: JS_PARENTHESIZED_EXPRESSION@84..116
        0: L_PAREN@84..86 "(" [Newline("\n")] []
        1: JS_ASSIGNMENT_EXPRESSION@86..115
          0: JS_ARRAY_ASSIGNMENT_PATTERN@86..112
            0: L_BRACK@86..88 "[" [] [Whitespace(" ")]
            1: JS_ARRAY_ASSIGNMENT_PATTERN_ELEMENT_LIST@88..110
              0: JS_ARRAY_ASSIGNMENT_PATTERN_REST_ELEMENT@88..110
                0: DOT3@88..91 "..." [] []
                1: JS_STATIC_MEMBER_ASSIGNMENT@91..110
                  0: JS_CALL_EXPRESSION@91..107
                    0: JS_STATIC_MEMBER_EXPRESSION@91..105
                      0: JS_IDENTIFIER_EXPRESSION@91..94
                        0: JS_REFERENCE_IDENTIFIER@91..94
                          0: IDENT@91..94 "any" [] []
                      1: DOT@94..95 "." [] []
                      2: JS_NAME@95..105
                        0: IDENT@95..105 "expression" [] []
                    1: (empty)
                    2: (empty)
                    3: JS_CALL_ARGUMENTS@105..107
                      0: L_PAREN@105..106 "(" [] []
                      1: JS_CALL_ARGUMENT_LIST@106..106
                      2: R_PAREN@106..107 ")" [] []
                  1: DOT@107..108 "." [] []
                  2: JS_NAME@108..110
                    0: IDENT@108..110 "b" [] [Whitespace(" ")]
            2: R_BRACK@110..112 "]" [] [Whitespace(" ")]
          1: EQ@112..114 "=" [] [Whitespace(" ")]
          2: JS_IDENTIFIER_EXPRESSION@114..115
            0: JS_REFERENCE_IDENTIFIER@114..115
              0: IDENT@114..115 "c" [] []
        2: R_PAREN@115..116 ")" [] []
      1: SEMICOLON@116..117 ";" [] []
    5: JS_EXPRESSION_STATEMENT@117..138
      0: JS_PARENTHESIZED_EXPRESSION@117..137
        0: L_PAREN@117..119 "(" [Newline("\n")] []
        1: JS_ASSIGNMENT_EXPRESSION@119..136
          0: JS_ARRAY_ASSIGNMENT_PATTERN@119..133
            0: L_BRACK@119..121 "[" [] [Whitespace(" ")]
            1: JS_ARRAY_ASSIGNMENT_PATTERN_ELEMENT_LIST@121..131
              0: JS_ARRAY_ASSIGNMENT_PATTERN_REST_ELEMENT@121..131
                0: DOT3@121..124 "..." [] []
                1: JS_ARRAY_ASSIGNMENT_PATTERN@124..131
                  0: L_BRACK@124..125 "[" [] []
                  1: JS_ARRAY_ASSIGNMENT_PATTERN_ELEMENT_LIST@125..129
                    0: JS_ARRAY_ASSIGNMENT_PATTERN_ELEMENT@125..126
                      0: JS_IDENTIFIER_ASSIGNMENT@125..126
                        0: IDENT@125..126 "x" [] []
                      1: (empty)
                    1: COMMA@126..128 "," [] [Whitespace(" ")]
                    2: JS_ARRAY_ASSIGNMENT_PATTERN_ELEMENT@128..129
                      0: JS_IDENTIFIER_ASSIGNMENT@128..129
                        0: IDENT@128..129 "y" [] []
                      1: (empty)
                  2: R_BRACK@129..131 "]" [] [Whitespace(" ")]
            2: R_BRACK@131..133 "]" [] [Whitespace(" ")]
          1: EQ@133..135 "=" [] [Whitespace(" ")]
          2: JS_IDENTIFIER_EXPRESSION@135..136
            0: JS_REFERENCE_IDENTIFIER@135..136
              0: IDENT@135..136 "b" [] []
        2: R_PAREN@136..137 ")" [] []
      1: SEMICOLON@137..138 ";" [] []
    6: JS_EXPRESSION_STATEMENT@138..161
      0: JS_PARENTHESIZED_EXPRESSION@138..160
        0: L_PAREN@138..140 "(" [Newline("\n")] []
        1: JS_ASSIGNMENT_EXPRESSION@140..159
          0: JS_ARRAY_ASSIGNMENT_PATTERN@140..156
            0: L_BRACK@140..142 "[" [] [Whitespace(" ")]
            1: JS_ARRAY_ASSIGNMENT_PATTERN_ELEMENT_LIST@142..154
              0: JS_ARRAY_ASSIGNMENT_PATTERN_REST_ELEMENT@142..154
                0: DOT3@142..145 "..." [] []
                1: JS_ARRAY_ASSIGNMENT_PATTERN@145..154
                  0: L_BRACK@145..147 "[" [] [Whitespace(" ")]
                  1: JS_ARRAY_ASSIGNMENT_PATTERN_ELEMENT_LIST@147..152
                    0: JS_ARRAY_ASSIGNMENT_PATTERN_REST_ELEMENT@147..152
                      0: DOT3@147..150 "..." [] []
                      1: JS_IDENTIFIER_ASSIGNMENT@150..152
                        0: IDENT@150..152 "a" [] [Whitespace(" ")]
                  2: R_BRACK@152..154 "]" [] [Whitespace(" ")]
            2: R_BRACK@154..156 "]" [] [Whitespace(" ")]
          1: EQ@156..158 "=" [] [Whitespace(" ")]
          2: JS_IDENTIFIER_EXPRESSION@158..159
            0: JS_REFERENCE_IDENTIFIER@158..159
              0: IDENT@158..159 "c" [] []
        2: R_PAREN@159..160 ")" [] []
      1: SEMICOLON@160..161 ";" [] []
  4: EOF@161..162 "" [Newline("\n")] []