JsModule {
bom_token: missing (optional),
interpreter_token: missing (optional),
directives: JsDirectiveList [],
items: JsModuleItemList [
JsExpressionStatement {
expression: JsBogusExpression {
items: [
JsStaticMemberExpression {
object: JsStaticMemberExpression {
object: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@0..3 "obj" [] [],
},
},
operator_token: DOT@3..4 "." [] [],
member: JsName {
value_token: IDENT@4..7 "val" [] [],
},
},
operator_token: QUESTIONDOT@7..9 "?." [] [],
member: JsName {
value_token: IDENT@9..13 "prop" [] [],
},
},
BACKTICK@13..14 "`" [] [],
JsTemplateElementList [
JsTemplateChunkElement {
template_chunk_token: TEMPLATE_CHUNK@14..22 "template" [] [],
},
],
BACKTICK@22..23 "`" [] [],
],
},
semicolon_token: missing (optional),
},
JsExpressionStatement {
expression: JsBogusExpression {
items: [
JsComputedMemberExpression {
object: JsStaticMemberExpression {
object: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@23..27 "obj" [Newline("\n")] [],
},
},
operator_token: DOT@27..28 "." [] [],
member: JsName {
value_token: IDENT@28..31 "val" [] [],
},
},
optional_chain_token: QUESTIONDOT@31..33 "?." [] [],
l_brack_token: L_BRACK@33..34 "[" [] [],
member: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@34..38 "expr" [] [],
},
},
r_brack_token: R_BRACK@38..39 "]" [] [],
},
BACKTICK@39..40 "`" [] [],
JsTemplateElementList [
JsTemplateChunkElement {
template_chunk_token: TEMPLATE_CHUNK@40..48 "template" [] [],
},
],
BACKTICK@48..49 "`" [] [],
],
},
semicolon_token: missing (optional),
},
JsExpressionStatement {
expression: JsBogusExpression {
items: [
JsCallExpression {
callee: JsStaticMemberExpression {
object: JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@49..53 "obj" [Newline("\n")] [],
},
},
operator_token: DOT@53..54 "." [] [],
member: JsName {
value_token: IDENT@54..58 "func" [] [],
},
},
optional_chain_token: QUESTIONDOT@58..60 "?." [] [],
type_arguments: missing (optional),
arguments: JsCallArguments {
l_paren_token: L_PAREN@60..61 "(" [] [],
args: JsCallArgumentList [
JsIdentifierExpression {
name: JsReferenceIdentifier {
value_token: IDENT@61..65 "args" [] [],
},
},
],
r_paren_token: R_PAREN@65..66 ")" [] [],
},
},
BACKTICK@66..67 "`" [] [],
JsTemplateElementList [
JsTemplateChunkElement {
template_chunk_token: TEMPLATE_CHUNK@67..75 "template" [] [],
},
],
BACKTICK@75..76 "`" [] [],
],
},
semicolon_token: missing (optional),
},
],
eof_token: EOF@76..77 "" [Newline("\n")] [],
}
0: JS_MODULE@0..77
0: (empty)
1: (empty)
2: JS_DIRECTIVE_LIST@0..0
3: JS_MODULE_ITEM_LIST@0..76
0: JS_EXPRESSION_STATEMENT@0..23
0: JS_BOGUS_EXPRESSION@0..23
0: JS_STATIC_MEMBER_EXPRESSION@0..13
0: JS_STATIC_MEMBER_EXPRESSION@0..7
0: JS_IDENTIFIER_EXPRESSION@0..3
0: JS_REFERENCE_IDENTIFIER@0..3
0: IDENT@0..3 "obj" [] []
1: DOT@3..4 "." [] []
2: JS_NAME@4..7
0: IDENT@4..7 "val" [] []
1: QUESTIONDOT@7..9 "?." [] []
2: JS_NAME@9..13
0: IDENT@9..13 "prop" [] []
1: BACKTICK@13..14 "`" [] []
2: JS_TEMPLATE_ELEMENT_LIST@14..22
0: JS_TEMPLATE_CHUNK_ELEMENT@14..22
0: TEMPLATE_CHUNK@14..22 "template" [] []
3: BACKTICK@22..23 "`" [] []
1: (empty)
1: JS_EXPRESSION_STATEMENT@23..49
0: JS_BOGUS_EXPRESSION@23..49
0: JS_COMPUTED_MEMBER_EXPRESSION@23..39
0: JS_STATIC_MEMBER_EXPRESSION@23..31
0: JS_IDENTIFIER_EXPRESSION@23..27
0: JS_REFERENCE_IDENTIFIER@23..27
0: IDENT@23..27 "obj" [Newline("\n")] []
1: DOT@27..28 "." [] []
2: JS_NAME@28..31
0: IDENT@28..31 "val" [] []
1: QUESTIONDOT@31..33 "?." [] []
2: L_BRACK@33..34 "[" [] []
3: JS_IDENTIFIER_EXPRESSION@34..38
0: JS_REFERENCE_IDENTIFIER@34..38
0: IDENT@34..38 "expr" [] []
4: R_BRACK@38..39 "]" [] []
1: BACKTICK@39..40 "`" [] []
2: JS_TEMPLATE_ELEMENT_LIST@40..48
0: JS_TEMPLATE_CHUNK_ELEMENT@40..48
0: TEMPLATE_CHUNK@40..48 "template" [] []
3: BACKTICK@48..49 "`" [] []
1: (empty)
2: JS_EXPRESSION_STATEMENT@49..76
0: JS_BOGUS_EXPRESSION@49..76
0: JS_CALL_EXPRESSION@49..66
0: JS_STATIC_MEMBER_EXPRESSION@49..58
0: JS_IDENTIFIER_EXPRESSION@49..53
0: JS_REFERENCE_IDENTIFIER@49..53
0: IDENT@49..53 "obj" [Newline("\n")] []
1: DOT@53..54 "." [] []
2: JS_NAME@54..58
0: IDENT@54..58 "func" [] []
1: QUESTIONDOT@58..60 "?." [] []
2: (empty)
3: JS_CALL_ARGUMENTS@60..66
0: L_PAREN@60..61 "(" [] []
1: JS_CALL_ARGUMENT_LIST@61..65
0: JS_IDENTIFIER_EXPRESSION@61..65
0: JS_REFERENCE_IDENTIFIER@61..65
0: IDENT@61..65 "args" [] []
2: R_PAREN@65..66 ")" [] []
1: BACKTICK@66..67 "`" [] []
2: JS_TEMPLATE_ELEMENT_LIST@67..75
0: JS_TEMPLATE_CHUNK_ELEMENT@67..75
0: TEMPLATE_CHUNK@67..75 "template" [] []
3: BACKTICK@75..76 "`" [] []
1: (empty)
4: EOF@76..77 "" [Newline("\n")] []
--
template_after_optional_chain.js:1:1 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× Tagged template expressions are not permitted in an optional chain.
> 1 │ obj.val?.prop`template`
│ ^^^^^^^^^^^^^^^^^^^^^^^
2 │ obj.val?.[expr]`template`
3 │ obj.func?.(args)`template`
--
template_after_optional_chain.js:2:1 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× Tagged template expressions are not permitted in an optional chain.
1 │ obj.val?.prop`template`
> 2 │ obj.val?.[expr]`template`
│ ^^^^^^^^^^^^^^^^^^^^^^^^^
3 │ obj.func?.(args)`template`
4 │
--
template_after_optional_chain.js:3:1 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
× Tagged template expressions are not permitted in an optional chain.
1 │ obj.val?.prop`template`
2 │ obj.val?.[expr]`template`
> 3 │ obj.func?.(args)`template`
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^
4 │
--
obj.val?.prop`template`
obj.val?.[expr]`template`
obj.func?.(args)`template`