JsModule {
bom_token: missing (optional),
interpreter_token: missing (optional),
directives: JsDirectiveList [],
items: JsModuleItemList [
JsVariableStatement {
declaration: JsVariableDeclaration {
kind: LET_KW@0..4 "let" [] [Whitespace(" ")],
declarators: JsVariableDeclaratorList [
JsVariableDeclarator {
id: JsIdentifierBinding {
name_token: IDENT@4..8 "obj" [] [Whitespace(" ")],
},
variable_annotation: missing (optional),
initializer: JsInitializerClause {
eq_token: EQ@8..10 "=" [] [Whitespace(" ")],
expression: JsObjectExpression {
l_curly_token: L_CURLY@10..11 "{" [] [],
members: JsObjectMemberList [],
r_curly_token: R_CURLY@11..12 "}" [] [],
},
},
},
],
},
semicolon_token: SEMICOLON@12..13 ";" [] [],
},
JsExpressionStatement {
expression: JsxTagExpression {
tag: JsxSelfClosingElement {
l_angle_token: L_ANGLE@13..15 "<" [Newline("\n")] [],
name: JsxName {
value_token: JSX_IDENT@15..17 "a" [] [Whitespace(" ")],
},
attributes: JsxAttributeList [
JsxSpreadAttribute {
l_curly_token: L_CURLY@17..18 "{" [] [],
dotdotdot_token: DOT3@18..21 "..." [] [],
argument: JsUnknownExpression {
items: [
JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@21..24 "obj" [] [],
},
},
COMMA@24..26 "," [] [Whitespace(" ")],
JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@26..31 "other" [] [],
},
},
],
},
r_curly_token: R_CURLY@31..33 "}" [] [Whitespace(" ")],
},
],
slash_token: SLASH@33..34 "/" [] [],
r_angle_token: R_ANGLE@34..35 ">" [] [],
},
},
semicolon_token: SEMICOLON@35..36 ";" [] [],
},
JsExpressionStatement {
expression: JsxTagExpression {
tag: JsxSelfClosingElement {
l_angle_token: L_ANGLE@36..38 "<" [Newline("\n")] [],
name: JsxName {
value_token: JSX_IDENT@38..40 "a" [] [Whitespace(" ")],
},
attributes: JsxAttributeList [
JsxSpreadAttribute {
l_curly_token: missing (required),
dotdotdot_token: DOT3@40..43 "..." [] [],
argument: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@43..46 "obj" [] [],
},
},
r_curly_token: R_CURLY@46..48 "}" [] [Whitespace(" ")],
},
],
slash_token: SLASH@48..49 "/" [] [],
r_angle_token: R_ANGLE@49..50 ">" [] [],
},
},
semicolon_token: SEMICOLON@50..51 ";" [] [],
},
JsExpressionStatement {
expression: JsxTagExpression {
tag: JsxSelfClosingElement {
l_angle_token: L_ANGLE@51..53 "<" [Newline("\n")] [],
name: JsxName {
value_token: JSX_IDENT@53..55 "a" [] [Whitespace(" ")],
},
attributes: JsxAttributeList [
JsxSpreadAttribute {
l_curly_token: L_CURLY@55..56 "{" [] [],
dotdotdot_token: missing (required),
argument: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@56..59 "obj" [] [],
},
},
r_curly_token: R_CURLY@59..61 "}" [] [Whitespace(" ")],
},
],
slash_token: SLASH@61..62 "/" [] [],
r_angle_token: R_ANGLE@62..63 ">" [] [],
},
},
semicolon_token: SEMICOLON@63..64 ";" [] [],
},
JsExpressionStatement {
expression: JsxTagExpression {
tag: JsxSelfClosingElement {
l_angle_token: L_ANGLE@64..66 "<" [Newline("\n")] [],
name: JsxName {
value_token: JSX_IDENT@66..69 "div" [] [],
},
attributes: JsxAttributeList [
JsxSpreadAttribute {
l_curly_token: L_CURLY@69..77 "{" [Newline("\n"), Whitespace(" ")] [],
dotdotdot_token: DOT3@77..80 "..." [] [],
argument: JsObjectExpression {
l_curly_token: L_CURLY@80..81 "{" [] [],
members: JsObjectMemberList [],
r_curly_token: R_CURLY@81..130 "}" [] [Whitespace(" "), Comments("/*\n // @ts-ignor ..."), Whitespace(" "), Comments("/* prettier-ignore */")],
},
r_curly_token: missing (required),
},
JsxAttribute {
name: JsxName {
value_token: JSX_IDENT@130..148 "invalidProp" [Newline("\n"), Whitespace(" ")] [],
},
initializer: JsxAttributeInitializerClause {
eq_token: EQ@148..149 "=" [] [],
value: JsxString {
value_token: JSX_STRING_LITERAL@149..161 "\"HelloWorld\"" [] [],
},
},
},
],
slash_token: SLASH@161..167 "/" [Newline("\n"), Whitespace(" ")] [],
r_angle_token: R_ANGLE@167..168 ">" [] [],
},
},
semicolon_token: SEMICOLON@168..169 ";" [] [],
},
],
eof_token: EOF@169..170 "" [Newline("\n")] [],
}
0: JS_MODULE@0..170
0: (empty)
1: (empty)
2: JS_DIRECTIVE_LIST@0..0
3: JS_MODULE_ITEM_LIST@0..169
0: JS_VARIABLE_STATEMENT@0..13
0: JS_VARIABLE_DECLARATION@0..12
0: LET_KW@0..4 "let" [] [Whitespace(" ")]
1: JS_VARIABLE_DECLARATOR_LIST@4..12
0: JS_VARIABLE_DECLARATOR@4..12
0: JS_IDENTIFIER_BINDING@4..8
0: IDENT@4..8 "obj" [] [Whitespace(" ")]
1: (empty)
2: JS_INITIALIZER_CLAUSE@8..12
0: EQ@8..10 "=" [] [Whitespace(" ")]
1: JS_OBJECT_EXPRESSION@10..12
0: L_CURLY@10..11 "{" [] []
1: JS_OBJECT_MEMBER_LIST@11..11
2: R_CURLY@11..12 "}" [] []
1: SEMICOLON@12..13 ";" [] []
1: JS_EXPRESSION_STATEMENT@13..36
0: JSX_TAG_EXPRESSION@13..35
0: JSX_SELF_CLOSING_ELEMENT@13..35
0: L_ANGLE@13..15 "<" [Newline("\n")] []
1: JSX_NAME@15..17
0: JSX_IDENT@15..17 "a" [] [Whitespace(" ")]
2: JSX_ATTRIBUTE_LIST@17..33
0: JSX_SPREAD_ATTRIBUTE@17..33
0: L_CURLY@17..18 "{" [] []
1: DOT3@18..21 "..." [] []
2: JS_UNKNOWN_EXPRESSION@21..31
0: JS_IDENTIFIER_EXPRESSION@21..24
0: JS_REFERENCE_IDENTIFIER@21..24
0: IDENT@21..24 "obj" [] []
1: COMMA@24..26 "," [] [Whitespace(" ")]
2: JS_IDENTIFIER_EXPRESSION@26..31
0: JS_REFERENCE_IDENTIFIER@26..31
0: IDENT@26..31 "other" [] []
3: R_CURLY@31..33 "}" [] [Whitespace(" ")]
3: SLASH@33..34 "/" [] []
4: R_ANGLE@34..35 ">" [] []
1: SEMICOLON@35..36 ";" [] []
2: JS_EXPRESSION_STATEMENT@36..51
0: JSX_TAG_EXPRESSION@36..50
0: JSX_SELF_CLOSING_ELEMENT@36..50
0: L_ANGLE@36..38 "<" [Newline("\n")] []
1: JSX_NAME@38..40
0: JSX_IDENT@38..40 "a" [] [Whitespace(" ")]
2: JSX_ATTRIBUTE_LIST@40..48
0: JSX_SPREAD_ATTRIBUTE@40..48
0: (empty)
1: DOT3@40..43 "..." [] []
2: JS_IDENTIFIER_EXPRESSION@43..46
0: JS_REFERENCE_IDENTIFIER@43..46
0: IDENT@43..46 "obj" [] []
3: R_CURLY@46..48 "}" [] [Whitespace(" ")]
3: SLASH@48..49 "/" [] []
4: R_ANGLE@49..50 ">" [] []
1: SEMICOLON@50..51 ";" [] []
3: JS_EXPRESSION_STATEMENT@51..64
0: JSX_TAG_EXPRESSION@51..63
0: JSX_SELF_CLOSING_ELEMENT@51..63
0: L_ANGLE@51..53 "<" [Newline("\n")] []
1: JSX_NAME@53..55
0: JSX_IDENT@53..55 "a" [] [Whitespace(" ")]
2: JSX_ATTRIBUTE_LIST@55..61
0: JSX_SPREAD_ATTRIBUTE@55..61
0: L_CURLY@55..56 "{" [] []
1: (empty)
2: JS_IDENTIFIER_EXPRESSION@56..59
0: JS_REFERENCE_IDENTIFIER@56..59
0: IDENT@56..59 "obj" [] []
3: R_CURLY@59..61 "}" [] [Whitespace(" ")]
3: SLASH@61..62 "/" [] []
4: R_ANGLE@62..63 ">" [] []
1: SEMICOLON@63..64 ";" [] []
4: JS_EXPRESSION_STATEMENT@64..169
0: JSX_TAG_EXPRESSION@64..168
0: JSX_SELF_CLOSING_ELEMENT@64..168
0: L_ANGLE@64..66 "<" [Newline("\n")] []
1: JSX_NAME@66..69
0: JSX_IDENT@66..69 "div" [] []
2: JSX_ATTRIBUTE_LIST@69..161
0: JSX_SPREAD_ATTRIBUTE@69..130
0: L_CURLY@69..77 "{" [Newline("\n"), Whitespace(" ")] []
1: DOT3@77..80 "..." [] []
2: JS_OBJECT_EXPRESSION@80..130
0: L_CURLY@80..81 "{" [] []
1: JS_OBJECT_MEMBER_LIST@81..81
2: R_CURLY@81..130 "}" [] [Whitespace(" "), Comments("/*\n // @ts-ignor ..."), Whitespace(" "), Comments("/* prettier-ignore */")]
3: (empty)
1: JSX_ATTRIBUTE@130..161
0: JSX_NAME@130..148
0: JSX_IDENT@130..148 "invalidProp" [Newline("\n"), Whitespace(" ")] []
1: JSX_ATTRIBUTE_INITIALIZER_CLAUSE@148..161
0: EQ@148..149 "=" [] []
1: JSX_STRING@149..161
0: JSX_STRING_LITERAL@149..161 "\"HelloWorld\"" [] []
3: SLASH@161..167 "/" [Newline("\n"), Whitespace(" ")] []
4: R_ANGLE@167..168 ">" [] []
1: SEMICOLON@168..169 ";" [] []
4: EOF@169..170 "" [Newline("\n")] []
--
error[SyntaxError]: Comma operator isn't a valid value for a JSX spread argument.
┌─ spread_attribute_error.jsx:2:8
│
2 │ <a {...obj, other} />;
│ ^^^^^^^^^^
--
error[SyntaxError]: expected `'{'` but instead found `...`
┌─ spread_attribute_error.jsx:3:4
│
3 │ <a ...obj} />;
│ ^^^ unexpected
--
error[SyntaxError]: expected `...` but instead found `obj`
┌─ spread_attribute_error.jsx:4:5
│
4 │ <a {obj} />;
│ ^^^ unexpected
--
error[SyntaxError]: expected `'}'` but instead found `invalidProp`
┌─ spread_attribute_error.jsx:8:7
│
8 │ invalidProp="HelloWorld"
│ ^^^^^^^^^^^ unexpected
--
let obj = {};
<a {...obj, other} />;
<a ...obj} />;
<a {obj} />;
<div
{...{} /*
// @ts-ignore */ /* prettier-ignore */
invalidProp="HelloWorld"
/>;