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`