biome_js_parser 0.5.7

Biome's JavaScript parser
Documentation
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`