JsModule {
bom_token: missing (optional),
interpreter_token: missing (optional),
directives: JsDirectiveList [],
items: JsModuleItemList [
JsVariableStatement {
declaration: JsVariableDeclaration {
await_token: missing (optional),
kind: LET_KW@0..4 "let" [] [Whitespace(" ")],
declarators: JsVariableDeclaratorList [
JsVariableDeclarator {
id: JsObjectBindingPattern {
l_curly_token: L_CURLY@4..6 "{" [] [Whitespace(" ")],
properties: JsObjectBindingPatternPropertyList [
JsObjectBindingPatternProperty {
member: JsLiteralMemberName {
value: JS_NUMBER_LITERAL@6..8 "5" [] [Whitespace(" ")],
},
colon_token: missing (required),
pattern: missing (required),
init: missing (optional),
},
],
r_curly_token: R_CURLY@8..10 "}" [] [Whitespace(" ")],
},
variable_annotation: missing (optional),
initializer: missing (optional),
},
],
},
semicolon_token: missing (optional),
},
JsBogusStatement {
items: [
R_CURLY@10..12 "}" [] [Whitespace(" ")],
EQ@12..14 "=" [] [Whitespace(" ")],
],
},
JsBlockStatement {
l_curly_token: L_CURLY@14..16 "{" [] [Whitespace(" ")],
statements: JsStatementList [
JsLabeledStatement {
label: JsLabel {
value_token: IDENT@16..20 "eval" [] [],
},
colon_token: COLON@20..22 ":" [] [Whitespace(" ")],
body: JsExpressionStatement {
expression: JsStringLiteralExpression {
value_token: JS_STRING_LITERAL@22..28 "\"foo\"" [] [Whitespace(" ")],
},
semicolon_token: missing (optional),
},
},
],
r_curly_token: R_CURLY@28..29 "}" [] [],
},
JsEmptyStatement {
semicolon_token: SEMICOLON@29..30 ";" [] [],
},
JsVariableStatement {
declaration: JsVariableDeclaration {
await_token: missing (optional),
kind: LET_KW@30..35 "let" [Newline("\n")] [Whitespace(" ")],
declarators: JsVariableDeclaratorList [
JsVariableDeclarator {
id: JsObjectBindingPattern {
l_curly_token: L_CURLY@35..37 "{" [] [Whitespace(" ")],
properties: JsObjectBindingPatternPropertyList [
JsObjectBindingPatternShorthandProperty {
identifier: JsBogusBinding {
items: [
IDENT@37..42 "eval" [] [Whitespace(" ")],
],
},
init: missing (optional),
},
],
r_curly_token: R_CURLY@42..44 "}" [] [Whitespace(" ")],
},
variable_annotation: missing (optional),
initializer: JsInitializerClause {
eq_token: EQ@44..46 "=" [] [Whitespace(" ")],
expression: JsObjectExpression {
l_curly_token: L_CURLY@46..48 "{" [] [Whitespace(" ")],
members: JsObjectMemberList [
JsPropertyObjectMember {
name: JsLiteralMemberName {
value: IDENT@48..52 "eval" [] [],
},
colon_token: COLON@52..54 ":" [] [Whitespace(" ")],
value: JsStringLiteralExpression {
value_token: JS_STRING_LITERAL@54..60 "\"foo\"" [] [Whitespace(" ")],
},
},
],
r_curly_token: R_CURLY@60..61 "}" [] [],
},
},
},
],
},
semicolon_token: SEMICOLON@61..62 ";" [] [],
},
JsVariableStatement {
declaration: JsVariableDeclaration {
await_token: missing (optional),
kind: LET_KW@62..67 "let" [Newline("\n")] [Whitespace(" ")],
declarators: JsVariableDeclaratorList [
JsVariableDeclarator {
id: JsObjectBindingPattern {
l_curly_token: L_CURLY@67..69 "{" [] [Whitespace(" ")],
properties: JsObjectBindingPatternPropertyList [
JsObjectBindingPatternProperty {
member: JsLiteralMemberName {
value: JS_NUMBER_LITERAL@69..70 "5" [] [],
},
colon_token: missing (required),
pattern: missing (required),
init: missing (optional),
},
COMMA@70..72 "," [] [Whitespace(" ")],
JsObjectBindingPatternProperty {
member: JsLiteralMemberName {
value: JS_NUMBER_LITERAL@72..74 "6" [] [Whitespace(" ")],
},
colon_token: missing (required),
pattern: missing (required),
init: missing (optional),
},
],
r_curly_token: R_CURLY@74..76 "}" [] [Whitespace(" ")],
},
variable_annotation: missing (optional),
initializer: JsInitializerClause {
eq_token: EQ@76..78 "=" [] [Whitespace(" ")],
expression: JsObjectExpression {
l_curly_token: L_CURLY@78..80 "{" [] [Whitespace(" ")],
members: JsObjectMemberList [
JsPropertyObjectMember {
name: JsLiteralMemberName {
value: IDENT@80..84 "eval" [] [],
},
colon_token: COLON@84..86 ":" [] [Whitespace(" ")],
value: JsStringLiteralExpression {
value_token: JS_STRING_LITERAL@86..92 "\"foo\"" [] [Whitespace(" ")],
},
},
],
r_curly_token: R_CURLY@92..93 "}" [] [],
},
},
},
],
},
semicolon_token: SEMICOLON@93..94 ";" [] [],
},
JsVariableStatement {
declaration: JsVariableDeclaration {
await_token: missing (optional),
kind: LET_KW@94..99 "let" [Newline("\n")] [Whitespace(" ")],
declarators: JsVariableDeclaratorList [
JsVariableDeclarator {
id: JsObjectBindingPattern {
l_curly_token: L_CURLY@99..101 "{" [] [Whitespace(" ")],
properties: JsObjectBindingPatternPropertyList [
JsObjectBindingPatternProperty {
member: JsLiteralMemberName {
value: IDENT@101..109 "default" [] [Whitespace(" ")],
},
colon_token: missing (required),
pattern: missing (required),
init: missing (optional),
},
COMMA@109..111 "," [] [Whitespace(" ")],
JsObjectBindingPatternProperty {
member: JsLiteralMemberName {
value: IDENT@111..115 "eval" [] [],
},
colon_token: COLON@115..117 ":" [] [Whitespace(" ")],
pattern: missing (required),
init: missing (optional),
},
],
r_curly_token: R_CURLY@117..119 "}" [] [Whitespace(" ")],
},
variable_annotation: missing (optional),
initializer: JsInitializerClause {
eq_token: EQ@119..121 "=" [] [Whitespace(" ")],
expression: JsObjectExpression {
l_curly_token: L_CURLY@121..122 "{" [] [],
members: JsObjectMemberList [],
r_curly_token: R_CURLY@122..123 "}" [] [],
},
},
},
],
},
semicolon_token: SEMICOLON@123..124 ";" [] [],
},
],
eof_token: EOF@124..125 "" [Newline("\n")] [],
}
0: JS_MODULE@0..125
0: (empty)
1: (empty)
2: JS_DIRECTIVE_LIST@0..0
3: JS_MODULE_ITEM_LIST@0..124
0: JS_VARIABLE_STATEMENT@0..10
0: JS_VARIABLE_DECLARATION@0..10
0: (empty)
1: LET_KW@0..4 "let" [] [Whitespace(" ")]
2: JS_VARIABLE_DECLARATOR_LIST@4..10
0: JS_VARIABLE_DECLARATOR@4..10
0: JS_OBJECT_BINDING_PATTERN@4..10
0: L_CURLY@4..6 "{" [] [Whitespace(" ")]
1: JS_OBJECT_BINDING_PATTERN_PROPERTY_LIST@6..8
0: JS_OBJECT_BINDING_PATTERN_PROPERTY@6..8
0: JS_LITERAL_MEMBER_NAME@6..8
0: JS_NUMBER_LITERAL@6..8 "5" [] [Whitespace(" ")]
1: (empty)
2: (empty)
3: (empty)
2: R_CURLY@8..10 "}" [] [Whitespace(" ")]
1: (empty)
2: (empty)
1: (empty)
1: JS_BOGUS_STATEMENT@10..14
0: R_CURLY@10..12 "}" [] [Whitespace(" ")]
1: EQ@12..14 "=" [] [Whitespace(" ")]
2: JS_BLOCK_STATEMENT@14..29
0: L_CURLY@14..16 "{" [] [Whitespace(" ")]
1: JS_STATEMENT_LIST@16..28
0: JS_LABELED_STATEMENT@16..28
0: JS_LABEL@16..20
0: IDENT@16..20 "eval" [] []
1: COLON@20..22 ":" [] [Whitespace(" ")]
2: JS_EXPRESSION_STATEMENT@22..28
0: JS_STRING_LITERAL_EXPRESSION@22..28
0: JS_STRING_LITERAL@22..28 "\"foo\"" [] [Whitespace(" ")]
1: (empty)
2: R_CURLY@28..29 "}" [] []
3: JS_EMPTY_STATEMENT@29..30
0: SEMICOLON@29..30 ";" [] []
4: JS_VARIABLE_STATEMENT@30..62
0: JS_VARIABLE_DECLARATION@30..61
0: (empty)
1: LET_KW@30..35 "let" [Newline("\n")] [Whitespace(" ")]
2: JS_VARIABLE_DECLARATOR_LIST@35..61
0: JS_VARIABLE_DECLARATOR@35..61
0: JS_OBJECT_BINDING_PATTERN@35..44
0: L_CURLY@35..37 "{" [] [Whitespace(" ")]
1: JS_OBJECT_BINDING_PATTERN_PROPERTY_LIST@37..42
0: JS_OBJECT_BINDING_PATTERN_SHORTHAND_PROPERTY@37..42
0: JS_BOGUS_BINDING@37..42
0: IDENT@37..42 "eval" [] [Whitespace(" ")]
1: (empty)
2: R_CURLY@42..44 "}" [] [Whitespace(" ")]
1: (empty)
2: JS_INITIALIZER_CLAUSE@44..61
0: EQ@44..46 "=" [] [Whitespace(" ")]
1: JS_OBJECT_EXPRESSION@46..61
0: L_CURLY@46..48 "{" [] [Whitespace(" ")]
1: JS_OBJECT_MEMBER_LIST@48..60
0: JS_PROPERTY_OBJECT_MEMBER@48..60
0: JS_LITERAL_MEMBER_NAME@48..52
0: IDENT@48..52 "eval" [] []
1: COLON@52..54 ":" [] [Whitespace(" ")]
2: JS_STRING_LITERAL_EXPRESSION@54..60
0: JS_STRING_LITERAL@54..60 "\"foo\"" [] [Whitespace(" ")]
2: R_CURLY@60..61 "}" [] []
1: SEMICOLON@61..62 ";" [] []
5: JS_VARIABLE_STATEMENT@62..94
0: JS_VARIABLE_DECLARATION@62..93
0: (empty)
1: LET_KW@62..67 "let" [Newline("\n")] [Whitespace(" ")]
2: JS_VARIABLE_DECLARATOR_LIST@67..93
0: JS_VARIABLE_DECLARATOR@67..93
0: JS_OBJECT_BINDING_PATTERN@67..76
0: L_CURLY@67..69 "{" [] [Whitespace(" ")]
1: JS_OBJECT_BINDING_PATTERN_PROPERTY_LIST@69..74
0: JS_OBJECT_BINDING_PATTERN_PROPERTY@69..70
0: JS_LITERAL_MEMBER_NAME@69..70
0: JS_NUMBER_LITERAL@69..70 "5" [] []
1: (empty)
2: (empty)
3: (empty)
1: COMMA@70..72 "," [] [Whitespace(" ")]
2: JS_OBJECT_BINDING_PATTERN_PROPERTY@72..74
0: JS_LITERAL_MEMBER_NAME@72..74
0: JS_NUMBER_LITERAL@72..74 "6" [] [Whitespace(" ")]
1: (empty)
2: (empty)
3: (empty)
2: R_CURLY@74..76 "}" [] [Whitespace(" ")]
1: (empty)
2: JS_INITIALIZER_CLAUSE@76..93
0: EQ@76..78 "=" [] [Whitespace(" ")]
1: JS_OBJECT_EXPRESSION@78..93
0: L_CURLY@78..80 "{" [] [Whitespace(" ")]
1: JS_OBJECT_MEMBER_LIST@80..92
0: JS_PROPERTY_OBJECT_MEMBER@80..92
0: JS_LITERAL_MEMBER_NAME@80..84
0: IDENT@80..84 "eval" [] []
1: COLON@84..86 ":" [] [Whitespace(" ")]
2: JS_STRING_LITERAL_EXPRESSION@86..92
0: JS_STRING_LITERAL@86..92 "\"foo\"" [] [Whitespace(" ")]
2: R_CURLY@92..93 "}" [] []
1: SEMICOLON@93..94 ";" [] []
6: JS_VARIABLE_STATEMENT@94..124
0: JS_VARIABLE_DECLARATION@94..123
0: (empty)
1: LET_KW@94..99 "let" [Newline("\n")] [Whitespace(" ")]
2: JS_VARIABLE_DECLARATOR_LIST@99..123
0: JS_VARIABLE_DECLARATOR@99..123
0: JS_OBJECT_BINDING_PATTERN@99..119
0: L_CURLY@99..101 "{" [] [Whitespace(" ")]
1: JS_OBJECT_BINDING_PATTERN_PROPERTY_LIST@101..117
0: JS_OBJECT_BINDING_PATTERN_PROPERTY@101..109
0: JS_LITERAL_MEMBER_NAME@101..109
0: IDENT@101..109 "default" [] [Whitespace(" ")]
1: (empty)
2: (empty)
3: (empty)
1: COMMA@109..111 "," [] [Whitespace(" ")]
2: JS_OBJECT_BINDING_PATTERN_PROPERTY@111..117
0: JS_LITERAL_MEMBER_NAME@111..115
0: IDENT@111..115 "eval" [] []
1: COLON@115..117 ":" [] [Whitespace(" ")]
2: (empty)
3: (empty)
2: R_CURLY@117..119 "}" [] [Whitespace(" ")]
1: (empty)
2: JS_INITIALIZER_CLAUSE@119..123
0: EQ@119..121 "=" [] [Whitespace(" ")]
1: JS_OBJECT_EXPRESSION@121..123
0: L_CURLY@121..122 "{" [] []
1: JS_OBJECT_MEMBER_LIST@122..122
2: R_CURLY@122..123 "}" [] []
1: SEMICOLON@123..124 ";" [] []
4: EOF@124..125 "" [Newline("\n")] []
--
object_binding_pattern.js:1:9 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× expected `:` but instead found `}`
> 1 │ let { 5 } } = { eval: "foo" };
│ ^
2 │ let { eval } = { eval: "foo" };
3 │ let { 5, 6 } = { eval: "foo" };
i Remove }
--
object_binding_pattern.js:1:5 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× Object and Array patterns require initializers.
> 1 │ let { 5 } } = { eval: "foo" };
│ ^^^^^
2 │ let { eval } = { eval: "foo" };
3 │ let { 5, 6 } = { eval: "foo" };
i This pattern is declared, but it is not given an initialized value.
--
object_binding_pattern.js:1:11 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× Expected a statement but instead found '} ='.
> 1 │ let { 5 } } = { eval: "foo" };
│ ^^^
2 │ let { eval } = { eval: "foo" };
3 │ let { 5, 6 } = { eval: "foo" };
i Expected a statement here.
> 1 │ let { 5 } } = { eval: "foo" };
│ ^^^
2 │ let { eval } = { eval: "foo" };
3 │ let { 5, 6 } = { eval: "foo" };
--
object_binding_pattern.js:2:7 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× Illegal use of `eval` as an identifier in strict mode
1 │ let { 5 } } = { eval: "foo" };
> 2 │ let { eval } = { eval: "foo" };
│ ^^^^
3 │ let { 5, 6 } = { eval: "foo" };
4 │ let { default , eval: } = {};
--
object_binding_pattern.js:3:8 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× expected `:` but instead found `,`
1 │ let { 5 } } = { eval: "foo" };
2 │ let { eval } = { eval: "foo" };
> 3 │ let { 5, 6 } = { eval: "foo" };
│ ^
4 │ let { default , eval: } = {};
5 │
i Remove ,
--
object_binding_pattern.js:3:12 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× expected `:` but instead found `}`
1 │ let { 5 } } = { eval: "foo" };
2 │ let { eval } = { eval: "foo" };
> 3 │ let { 5, 6 } = { eval: "foo" };
│ ^
4 │ let { default , eval: } = {};
5 │
i Remove }
--
object_binding_pattern.js:4:15 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× expected `:` but instead found `,`
2 │ let { eval } = { eval: "foo" };
3 │ let { 5, 6 } = { eval: "foo" };
> 4 │ let { default , eval: } = {};
│ ^
5 │
i Remove ,
--
object_binding_pattern.js:4:23 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× Expected an identifier, an array pattern, or an object pattern but instead found '}'.
2 │ let { eval } = { eval: "foo" };
3 │ let { 5, 6 } = { eval: "foo" };
> 4 │ let { default , eval: } = {};
│ ^
5 │
i Expected an identifier, an array pattern, or an object pattern here.
2 │ let { eval } = { eval: "foo" };
3 │ let { 5, 6 } = { eval: "foo" };
> 4 │ let { default , eval: } = {};
│ ^
5 │
--
let { 5 } } = { eval: "foo" };
let { eval } = { eval: "foo" };
let { 5, 6 } = { eval: "foo" };
let { default , eval: } = {};