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 [ JsObjectBindingPatternShorthandProperty { identifier: JsIdentifierBinding { name_token: IDENT@6..8 "a" [] [Whitespace(" ")], }, init: missing (optional), }, missing separator, JsObjectBindingPatternShorthandProperty { identifier: JsIdentifierBinding { name_token: IDENT@8..10 "b" [] [Whitespace(" ")], }, init: missing (optional), }, ], r_curly_token: R_CURLY@10..12 "}" [] [Whitespace(" ")], }, variable_annotation: missing (optional), initializer: JsInitializerClause { eq_token: EQ@12..14 "=" [] [Whitespace(" ")], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@14..15 "c" [] [], }, }, }, }, ], }, semicolon_token: missing (optional), }, JsVariableStatement { declaration: JsVariableDeclaration { await_token: missing (optional), kind: LET_KW@15..20 "let" [Newline("\n")] [Whitespace(" ")], declarators: JsVariableDeclaratorList [ JsVariableDeclarator { id: JsObjectBindingPattern { l_curly_token: L_CURLY@20..22 "{" [] [Whitespace(" ")], properties: JsObjectBindingPatternPropertyList [ JsObjectBindingPatternShorthandProperty { identifier: missing (required), init: JsInitializerClause { eq_token: EQ@22..24 "=" [] [Whitespace(" ")], expression: JsStringLiteralExpression { value_token: JS_STRING_LITERAL@24..31 "\"test\"" [] [Whitespace(" ")], }, }, }, ], r_curly_token: R_CURLY@31..33 "}" [] [Whitespace(" ")], }, variable_annotation: missing (optional), initializer: JsInitializerClause { eq_token: EQ@33..35 "=" [] [Whitespace(" ")], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@35..36 "c" [] [], }, }, }, }, ], }, semicolon_token: missing (optional), }, JsVariableStatement { declaration: JsVariableDeclaration { await_token: missing (optional), kind: LET_KW@36..41 "let" [Newline("\n")] [Whitespace(" ")], declarators: JsVariableDeclaratorList [ JsVariableDeclarator { id: JsObjectBindingPattern { l_curly_token: L_CURLY@41..43 "{" [] [Whitespace(" ")], properties: JsObjectBindingPatternPropertyList [ missing element, COMMA@43..45 "," [] [Whitespace(" ")], JsObjectBindingPatternShorthandProperty { identifier: JsIdentifierBinding { name_token: IDENT@45..47 "d" [] [Whitespace(" ")], }, init: missing (optional), }, ], r_curly_token: R_CURLY@47..49 "}" [] [Whitespace(" ")], }, variable_annotation: missing (optional), initializer: JsInitializerClause { eq_token: EQ@49..51 "=" [] [Whitespace(" ")], expression: JsIdentifierExpression { name: JsReferenceIdentifier { value_token: IDENT@51..52 "c" [] [], }, }, }, }, ], }, semicolon_token: missing (optional), }, ], eof_token: EOF@52..53 "" [Newline("\n")] [], } 0: JS_MODULE@0..53 0: (empty) 1: (empty) 2: JS_DIRECTIVE_LIST@0..0 3: JS_MODULE_ITEM_LIST@0..52 0: JS_VARIABLE_STATEMENT@0..15 0: JS_VARIABLE_DECLARATION@0..15 0: (empty) 1: LET_KW@0..4 "let" [] [Whitespace(" ")] 2: JS_VARIABLE_DECLARATOR_LIST@4..15 0: JS_VARIABLE_DECLARATOR@4..15 0: JS_OBJECT_BINDING_PATTERN@4..12 0: L_CURLY@4..6 "{" [] [Whitespace(" ")] 1: JS_OBJECT_BINDING_PATTERN_PROPERTY_LIST@6..10 0: JS_OBJECT_BINDING_PATTERN_SHORTHAND_PROPERTY@6..8 0: JS_IDENTIFIER_BINDING@6..8 0: IDENT@6..8 "a" [] [Whitespace(" ")] 1: (empty) 1: (empty) 2: JS_OBJECT_BINDING_PATTERN_SHORTHAND_PROPERTY@8..10 0: JS_IDENTIFIER_BINDING@8..10 0: IDENT@8..10 "b" [] [Whitespace(" ")] 1: (empty) 2: R_CURLY@10..12 "}" [] [Whitespace(" ")] 1: (empty) 2: JS_INITIALIZER_CLAUSE@12..15 0: EQ@12..14 "=" [] [Whitespace(" ")] 1: JS_IDENTIFIER_EXPRESSION@14..15 0: JS_REFERENCE_IDENTIFIER@14..15 0: IDENT@14..15 "c" [] [] 1: (empty) 1: JS_VARIABLE_STATEMENT@15..36 0: JS_VARIABLE_DECLARATION@15..36 0: (empty) 1: LET_KW@15..20 "let" [Newline("\n")] [Whitespace(" ")] 2: JS_VARIABLE_DECLARATOR_LIST@20..36 0: JS_VARIABLE_DECLARATOR@20..36 0: JS_OBJECT_BINDING_PATTERN@20..33 0: L_CURLY@20..22 "{" [] [Whitespace(" ")] 1: JS_OBJECT_BINDING_PATTERN_PROPERTY_LIST@22..31 0: JS_OBJECT_BINDING_PATTERN_SHORTHAND_PROPERTY@22..31 0: (empty) 1: JS_INITIALIZER_CLAUSE@22..31 0: EQ@22..24 "=" [] [Whitespace(" ")] 1: JS_STRING_LITERAL_EXPRESSION@24..31 0: JS_STRING_LITERAL@24..31 "\"test\"" [] [Whitespace(" ")] 2: R_CURLY@31..33 "}" [] [Whitespace(" ")] 1: (empty) 2: JS_INITIALIZER_CLAUSE@33..36 0: EQ@33..35 "=" [] [Whitespace(" ")] 1: JS_IDENTIFIER_EXPRESSION@35..36 0: JS_REFERENCE_IDENTIFIER@35..36 0: IDENT@35..36 "c" [] [] 1: (empty) 2: JS_VARIABLE_STATEMENT@36..52 0: JS_VARIABLE_DECLARATION@36..52 0: (empty) 1: LET_KW@36..41 "let" [Newline("\n")] [Whitespace(" ")] 2: JS_VARIABLE_DECLARATOR_LIST@41..52 0: JS_VARIABLE_DECLARATOR@41..52 0: JS_OBJECT_BINDING_PATTERN@41..49 0: L_CURLY@41..43 "{" [] [Whitespace(" ")] 1: JS_OBJECT_BINDING_PATTERN_PROPERTY_LIST@43..47 0: (empty) 1: COMMA@43..45 "," [] [Whitespace(" ")] 2: JS_OBJECT_BINDING_PATTERN_SHORTHAND_PROPERTY@45..47 0: JS_IDENTIFIER_BINDING@45..47 0: IDENT@45..47 "d" [] [Whitespace(" ")] 1: (empty) 2: R_CURLY@47..49 "}" [] [Whitespace(" ")] 1: (empty) 2: JS_INITIALIZER_CLAUSE@49..52 0: EQ@49..51 "=" [] [Whitespace(" ")] 1: JS_IDENTIFIER_EXPRESSION@51..52 0: JS_REFERENCE_IDENTIFIER@51..52 0: IDENT@51..52 "c" [] [] 1: (empty) 4: EOF@52..53 "" [Newline("\n")] [] -- object_shorthand_property_err.js:1:9 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ × expected `,` but instead found `b` > 1 │ let { a b } = c │ ^ 2 │ let { = "test" } = c 3 │ let { , d } = c i Remove b -- object_shorthand_property_err.js:2:7 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ × Expected an identifier but instead found '='. 1 │ let { a b } = c > 2 │ let { = "test" } = c │ ^ 3 │ let { , d } = c 4 │ i Expected an identifier here. 1 │ let { a b } = c > 2 │ let { = "test" } = c │ ^ 3 │ let { , d } = c 4 │ -- object_shorthand_property_err.js:3:7 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ × Expected an identifier, a member name, or a rest pattern but instead found ','. 1 │ let { a b } = c 2 │ let { = "test" } = c > 3 │ let { , d } = c │ ^ 4 │ i Expected an identifier, a member name, or a rest pattern here. 1 │ let { a b } = c 2 │ let { = "test" } = c > 3 │ let { , d } = c │ ^ 4 │ -- let { a b } = c let { = "test" } = c let { , d } = c