JsModule {
bom_token: missing (optional),
interpreter_token: missing (optional),
directives: JsDirectiveList [],
items: JsModuleItemList [
JsExpressionStatement {
expression: JsAssignmentExpression {
left: JsArrayAssignmentPattern {
l_brack_token: L_BRACK@0..1 "[" [] [],
elements: JsArrayAssignmentPatternElementList [
JsArrayAssignmentPatternElement {
pattern: JsIdentifierAssignment {
name_token: IDENT@1..3 "a" [] [Whitespace(" ")],
},
init: missing (optional),
},
missing separator,
JsArrayAssignmentPatternElement {
pattern: JsIdentifierAssignment {
name_token: IDENT@3..4 "a" [] [],
},
init: missing (optional),
},
COMMA@4..6 "," [] [Whitespace(" ")],
JsArrayAssignmentPatternElement {
pattern: JsBogusAssignment {
items: [
PLUS2@6..8 "++" [] [],
JsIdentifierAssignment {
name_token: IDENT@8..9 "b" [] [],
},
],
},
init: missing (optional),
},
COMMA@9..11 "," [] [Whitespace(" ")],
],
r_brack_token: R_BRACK@11..13 "]" [] [Whitespace(" ")],
},
operator_token: EQ@13..15 "=" [] [Whitespace(" ")],
right: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@15..19 "test" [] [],
},
},
},
semicolon_token: SEMICOLON@19..20 ";" [] [],
},
JsExpressionStatement {
expression: JsBogusExpression {
items: [
JsBogus {
items: [
L_BRACK@20..22 "[" [Newline("\n")] [],
JsBogus {
items: [
JsArrayAssignmentPatternElement {
pattern: JsIdentifierAssignment {
name_token: IDENT@22..23 "a" [] [],
},
init: missing (optional),
},
COMMA@23..25 "," [] [Whitespace(" ")],
JsArrayAssignmentPatternElement {
pattern: JsIdentifierAssignment {
name_token: IDENT@25..26 "c" [] [],
},
init: missing (optional),
},
COMMA@26..28 "," [] [Whitespace(" ")],
JsBogus {
items: [
DOT3@28..31 "..." [] [],
JsIdentifierAssignment {
name_token: IDENT@31..35 "rest" [] [],
},
],
},
COMMA@35..36 "," [] [],
],
},
R_BRACK@36..38 "]" [] [Whitespace(" ")],
],
},
EQ@38..40 "=" [] [Whitespace(" ")],
JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@40..44 "test" [] [],
},
},
],
},
semicolon_token: SEMICOLON@44..45 ";" [] [],
},
JsExpressionStatement {
expression: JsAssignmentExpression {
left: JsArrayAssignmentPattern {
l_brack_token: L_BRACK@45..47 "[" [Newline("\n")] [],
elements: JsArrayAssignmentPatternElementList [
JsArrayAssignmentPatternElement {
pattern: JsIdentifierAssignment {
name_token: IDENT@47..49 "a" [] [Whitespace(" ")],
},
init: JsInitializerClause {
eq_token: EQ@49..51 "=" [] [Whitespace(" ")],
expression: missing (required),
},
},
COMMA@51..53 "," [] [Whitespace(" ")],
],
r_brack_token: missing (required),
},
operator_token: EQ@53..55 "=" [] [Whitespace(" ")],
right: JsStringLiteralExpression {
value_token: JS_STRING_LITERAL@55..61 "\"test\"" [] [],
},
},
semicolon_token: missing (optional),
},
JsBogusStatement {
items: [
R_BRACK@61..63 "]" [] [Whitespace(" ")],
EQ@63..65 "=" [] [Whitespace(" ")],
IDENT@65..69 "test" [] [],
],
},
JsEmptyStatement {
semicolon_token: SEMICOLON@69..70 ";" [] [],
},
JsExpressionStatement {
expression: JsAssignmentExpression {
left: JsArrayAssignmentPattern {
l_brack_token: L_BRACK@70..72 "[" [Newline("\n")] [],
elements: JsArrayAssignmentPatternElementList [
JsArrayAssignmentPatternElement {
pattern: JsComputedMemberAssignment {
object: JsArrayExpression {
l_brack_token: L_BRACK@72..73 "[" [] [],
elements: JsArrayElementList [
JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@73..75 "a" [] [Whitespace(" ")],
},
},
missing separator,
JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@75..76 "b" [] [],
},
},
],
r_brack_token: R_BRACK@76..78 "]" [] [Whitespace(" ")],
},
l_brack_token: L_BRACK@78..79 "[" [] [],
member: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@79..80 "c" [] [],
},
},
r_brack_token: R_BRACK@80..81 "]" [] [],
},
init: missing (optional),
},
],
r_brack_token: R_BRACK@81..82 "]" [] [],
},
operator_token: EQ@82..84 "=" [] [Whitespace(" ")],
right: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@84..88 "test" [] [],
},
},
},
semicolon_token: SEMICOLON@88..89 ";" [] [],
},
JsExpressionStatement {
expression: JsBogusExpression {
items: [
JsBogus {
items: [
L_BRACK@89..91 "[" [Newline("\n")] [],
JsBogus {
items: [
JsArrayAssignmentPatternElement {
pattern: JsIdentifierAssignment {
name_token: IDENT@91..92 "a" [] [],
},
init: missing (optional),
},
JsBogusAssignment {
items: [
COLON@92..94 ":" [] [Whitespace(" ")],
IDENT@94..95 "b" [] [],
],
},
],
},
R_BRACK@95..97 "]" [] [Whitespace(" ")],
],
},
EQ@97..99 "=" [] [Whitespace(" ")],
JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@99..100 "c" [] [],
},
},
],
},
semicolon_token: missing (optional),
},
],
eof_token: EOF@100..101 "" [Newline("\n")] [],
}
0: JS_MODULE@0..101
0: (empty)
1: (empty)
2: JS_DIRECTIVE_LIST@0..0
3: JS_MODULE_ITEM_LIST@0..100
0: JS_EXPRESSION_STATEMENT@0..20
0: JS_ASSIGNMENT_EXPRESSION@0..19
0: JS_ARRAY_ASSIGNMENT_PATTERN@0..13
0: L_BRACK@0..1 "[" [] []
1: JS_ARRAY_ASSIGNMENT_PATTERN_ELEMENT_LIST@1..11
0: JS_ARRAY_ASSIGNMENT_PATTERN_ELEMENT@1..3
0: JS_IDENTIFIER_ASSIGNMENT@1..3
0: IDENT@1..3 "a" [] [Whitespace(" ")]
1: (empty)
1: (empty)
2: JS_ARRAY_ASSIGNMENT_PATTERN_ELEMENT@3..4
0: JS_IDENTIFIER_ASSIGNMENT@3..4
0: IDENT@3..4 "a" [] []
1: (empty)
3: COMMA@4..6 "," [] [Whitespace(" ")]
4: JS_ARRAY_ASSIGNMENT_PATTERN_ELEMENT@6..9
0: JS_BOGUS_ASSIGNMENT@6..9
0: PLUS2@6..8 "++" [] []
1: JS_IDENTIFIER_ASSIGNMENT@8..9
0: IDENT@8..9 "b" [] []
1: (empty)
5: COMMA@9..11 "," [] [Whitespace(" ")]
2: R_BRACK@11..13 "]" [] [Whitespace(" ")]
1: EQ@13..15 "=" [] [Whitespace(" ")]
2: JS_IDENTIFIER_EXPRESSION@15..19
0: JS_REFERENCE_IDENTIFIER@15..19
0: IDENT@15..19 "test" [] []
1: SEMICOLON@19..20 ";" [] []
1: JS_EXPRESSION_STATEMENT@20..45
0: JS_BOGUS_EXPRESSION@20..44
0: JS_BOGUS@20..38
0: L_BRACK@20..22 "[" [Newline("\n")] []
1: JS_BOGUS@22..36
0: JS_ARRAY_ASSIGNMENT_PATTERN_ELEMENT@22..23
0: JS_IDENTIFIER_ASSIGNMENT@22..23
0: IDENT@22..23 "a" [] []
1: (empty)
1: COMMA@23..25 "," [] [Whitespace(" ")]
2: JS_ARRAY_ASSIGNMENT_PATTERN_ELEMENT@25..26
0: JS_IDENTIFIER_ASSIGNMENT@25..26
0: IDENT@25..26 "c" [] []
1: (empty)
3: COMMA@26..28 "," [] [Whitespace(" ")]
4: JS_BOGUS@28..35
0: DOT3@28..31 "..." [] []
1: JS_IDENTIFIER_ASSIGNMENT@31..35
0: IDENT@31..35 "rest" [] []
5: COMMA@35..36 "," [] []
2: R_BRACK@36..38 "]" [] [Whitespace(" ")]
1: EQ@38..40 "=" [] [Whitespace(" ")]
2: JS_IDENTIFIER_EXPRESSION@40..44
0: JS_REFERENCE_IDENTIFIER@40..44
0: IDENT@40..44 "test" [] []
1: SEMICOLON@44..45 ";" [] []
2: JS_EXPRESSION_STATEMENT@45..61
0: JS_ASSIGNMENT_EXPRESSION@45..61
0: JS_ARRAY_ASSIGNMENT_PATTERN@45..53
0: L_BRACK@45..47 "[" [Newline("\n")] []
1: JS_ARRAY_ASSIGNMENT_PATTERN_ELEMENT_LIST@47..53
0: JS_ARRAY_ASSIGNMENT_PATTERN_ELEMENT@47..51
0: JS_IDENTIFIER_ASSIGNMENT@47..49
0: IDENT@47..49 "a" [] [Whitespace(" ")]
1: JS_INITIALIZER_CLAUSE@49..51
0: EQ@49..51 "=" [] [Whitespace(" ")]
1: (empty)
1: COMMA@51..53 "," [] [Whitespace(" ")]
2: (empty)
1: EQ@53..55 "=" [] [Whitespace(" ")]
2: JS_STRING_LITERAL_EXPRESSION@55..61
0: JS_STRING_LITERAL@55..61 "\"test\"" [] []
1: (empty)
3: JS_BOGUS_STATEMENT@61..69
0: R_BRACK@61..63 "]" [] [Whitespace(" ")]
1: EQ@63..65 "=" [] [Whitespace(" ")]
2: IDENT@65..69 "test" [] []
4: JS_EMPTY_STATEMENT@69..70
0: SEMICOLON@69..70 ";" [] []
5: JS_EXPRESSION_STATEMENT@70..89
0: JS_ASSIGNMENT_EXPRESSION@70..88
0: JS_ARRAY_ASSIGNMENT_PATTERN@70..82
0: L_BRACK@70..72 "[" [Newline("\n")] []
1: JS_ARRAY_ASSIGNMENT_PATTERN_ELEMENT_LIST@72..81
0: JS_ARRAY_ASSIGNMENT_PATTERN_ELEMENT@72..81
0: JS_COMPUTED_MEMBER_ASSIGNMENT@72..81
0: JS_ARRAY_EXPRESSION@72..78
0: L_BRACK@72..73 "[" [] []
1: JS_ARRAY_ELEMENT_LIST@73..76
0: JS_IDENTIFIER_EXPRESSION@73..75
0: JS_REFERENCE_IDENTIFIER@73..75
0: IDENT@73..75 "a" [] [Whitespace(" ")]
1: (empty)
2: JS_IDENTIFIER_EXPRESSION@75..76
0: JS_REFERENCE_IDENTIFIER@75..76
0: IDENT@75..76 "b" [] []
2: R_BRACK@76..78 "]" [] [Whitespace(" ")]
1: L_BRACK@78..79 "[" [] []
2: JS_IDENTIFIER_EXPRESSION@79..80
0: JS_REFERENCE_IDENTIFIER@79..80
0: IDENT@79..80 "c" [] []
3: R_BRACK@80..81 "]" [] []
1: (empty)
2: R_BRACK@81..82 "]" [] []
1: EQ@82..84 "=" [] [Whitespace(" ")]
2: JS_IDENTIFIER_EXPRESSION@84..88
0: JS_REFERENCE_IDENTIFIER@84..88
0: IDENT@84..88 "test" [] []
1: SEMICOLON@88..89 ";" [] []
6: JS_EXPRESSION_STATEMENT@89..100
0: JS_BOGUS_EXPRESSION@89..100
0: JS_BOGUS@89..97
0: L_BRACK@89..91 "[" [Newline("\n")] []
1: JS_BOGUS@91..95
0: JS_ARRAY_ASSIGNMENT_PATTERN_ELEMENT@91..92
0: JS_IDENTIFIER_ASSIGNMENT@91..92
0: IDENT@91..92 "a" [] []
1: (empty)
1: JS_BOGUS_ASSIGNMENT@92..95
0: COLON@92..94 ":" [] [Whitespace(" ")]
1: IDENT@94..95 "b" [] []
2: R_BRACK@95..97 "]" [] [Whitespace(" ")]
1: EQ@97..99 "=" [] [Whitespace(" ")]
2: JS_IDENTIFIER_EXPRESSION@99..100
0: JS_REFERENCE_IDENTIFIER@99..100
0: IDENT@99..100 "c" [] []
1: (empty)
4: EOF@100..101 "" [Newline("\n")] []
--
array_assignment_target_err.js:1:4 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× expected `,` but instead found `a`
> 1 │ [a a, ++b, ] = test;
│ ^
2 │ [a, c, ...rest,] = test;
3 │ [a = , = "test"] = test;
i Remove a
--
array_assignment_target_err.js:1:7 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× Invalid assignment to `++b`
> 1 │ [a a, ++b, ] = test;
│ ^^^
2 │ [a, c, ...rest,] = test;
3 │ [a = , = "test"] = test;
i This expression cannot be assigned to
--
array_assignment_target_err.js:2:15 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× rest element may not have a trailing comma
1 │ [a a, ++b, ] = test;
> 2 │ [a, c, ...rest,] = test;
│ ^
3 │ [a = , = "test"] = test;
4 │ [[a b] [c]]= test;
i Remove the trailing comma here
1 │ [a a, ++b, ] = test;
> 2 │ [a, c, ...rest,] = test;
│ ^
3 │ [a = , = "test"] = test;
4 │ [[a b] [c]]= test;
i Rest element
1 │ [a a, ++b, ] = test;
> 2 │ [a, c, ...rest,] = test;
│ ^^^^^^^
3 │ [a = , = "test"] = test;
4 │ [[a b] [c]]= test;
--
array_assignment_target_err.js:3:6 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× Expected an expression, or an assignment but instead found ','.
1 │ [a a, ++b, ] = test;
2 │ [a, c, ...rest,] = test;
> 3 │ [a = , = "test"] = test;
│ ^
4 │ [[a b] [c]]= test;
5 │ [a: b] = c
i Expected an expression, or an assignment here.
1 │ [a a, ++b, ] = test;
2 │ [a, c, ...rest,] = test;
> 3 │ [a = , = "test"] = test;
│ ^
4 │ [[a b] [c]]= test;
5 │ [a: b] = c
--
array_assignment_target_err.js:3:8 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× Expected an assignment target, a rest element, or a comma but instead found '='.
1 │ [a a, ++b, ] = test;
2 │ [a, c, ...rest,] = test;
> 3 │ [a = , = "test"] = test;
│ ^
4 │ [[a b] [c]]= test;
5 │ [a: b] = c
i Expected an assignment target, a rest element, or a comma here.
1 │ [a a, ++b, ] = test;
2 │ [a, c, ...rest,] = test;
> 3 │ [a = , = "test"] = test;
│ ^
4 │ [[a b] [c]]= test;
5 │ [a: b] = c
--
array_assignment_target_err.js:3:16 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× Expected a semicolon or an implicit semicolon after a statement, but found none
1 │ [a a, ++b, ] = test;
2 │ [a, c, ...rest,] = test;
> 3 │ [a = , = "test"] = test;
│ ^
4 │ [[a b] [c]]= test;
5 │ [a: b] = c
i An explicit or implicit semicolon is expected here...
1 │ [a a, ++b, ] = test;
2 │ [a, c, ...rest,] = test;
> 3 │ [a = , = "test"] = test;
│ ^
4 │ [[a b] [c]]= test;
5 │ [a: b] = c
i ...Which is required to end this statement
1 │ [a a, ++b, ] = test;
2 │ [a, c, ...rest,] = test;
> 3 │ [a = , = "test"] = test;
│ ^^^^^^^^^^^^^^^^
4 │ [[a b] [c]]= test;
5 │ [a: b] = c
--
array_assignment_target_err.js:4:5 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× expected `,` but instead found `b`
2 │ [a, c, ...rest,] = test;
3 │ [a = , = "test"] = test;
> 4 │ [[a b] [c]]= test;
│ ^
5 │ [a: b] = c
6 │
i Remove b
--
array_assignment_target_err.js:5:3 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× expected `,` but instead found `:`
3 │ [a = , = "test"] = test;
4 │ [[a b] [c]]= test;
> 5 │ [a: b] = c
│ ^
6 │
i Remove :
--
[a a, ++b, ] = test;
[a, c, ...rest,] = test;
[a = , = "test"] = test;
[[a b] [c]]= test;
[a: b] = c