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: JsStaticMemberExpression {
                object: JsComputedMemberExpression {
                    object: JsStaticMemberExpression {
                        object: JsCallExpression {
                            callee: JsIdentifierExpression {
                                name: JsReferenceIdentifier {
                                    value_token: IDENT@0..3 "foo" [] [],
                                },
                            },
                            optional_chain_token: missing (optional),
                            type_arguments: missing (optional),
                            arguments: JsCallArguments {
                                l_paren_token: L_PAREN@3..4 "(" [] [],
                                args: JsCallArgumentList [],
                                r_paren_token: R_PAREN@4..5 ")" [] [],
                            },
                        },
                        operator_token: QUESTIONDOT@5..7 "?." [] [],
                        member: JsName {
                            value_token: IDENT@7..10 "baz" [] [],
                        },
                    },
                    optional_chain_token: missing (optional),
                    l_brack_token: L_BRACK@10..11 "[" [] [],
                    member: missing (required),
                    r_brack_token: R_BRACK@11..12 "]" [] [],
                },
                operator_token: DOT@12..13 "." [] [],
                member: missing (required),
            },
            semicolon_token: SEMICOLON@13..14 ";" [] [],
        },
        JsExpressionStatement {
            expression: JsTemplateExpression {
                tag: JsIdentifierExpression {
                    name: JsReferenceIdentifier {
                        value_token: IDENT@14..18 "BAR" [Newline("\n")] [],
                    },
                },
                type_arguments: missing (optional),
                l_tick_token: BACKTICK@18..19 "`" [] [],
                elements: JsTemplateElementList [
                    JsTemplateChunkElement {
                        template_chunk_token: TEMPLATE_CHUNK@19..21 "b\n" [] [],
                    },
                ],
                r_tick_token: missing (required),
            },
            semicolon_token: missing (optional),
        },
    ],
    eof_token: EOF@21..21 "" [] [],
}

0: JS_MODULE@0..21
  0: (empty)
  1: (empty)
  2: JS_DIRECTIVE_LIST@0..0
  3: JS_MODULE_ITEM_LIST@0..21
    0: JS_EXPRESSION_STATEMENT@0..14
      0: JS_STATIC_MEMBER_EXPRESSION@0..13
        0: JS_COMPUTED_MEMBER_EXPRESSION@0..12
          0: JS_STATIC_MEMBER_EXPRESSION@0..10
            0: JS_CALL_EXPRESSION@0..5
              0: JS_IDENTIFIER_EXPRESSION@0..3
                0: JS_REFERENCE_IDENTIFIER@0..3
                  0: IDENT@0..3 "foo" [] []
              1: (empty)
              2: (empty)
              3: JS_CALL_ARGUMENTS@3..5
                0: L_PAREN@3..4 "(" [] []
                1: JS_CALL_ARGUMENT_LIST@4..4
                2: R_PAREN@4..5 ")" [] []
            1: QUESTIONDOT@5..7 "?." [] []
            2: JS_NAME@7..10
              0: IDENT@7..10 "baz" [] []
          1: (empty)
          2: L_BRACK@10..11 "[" [] []
          3: (empty)
          4: R_BRACK@11..12 "]" [] []
        1: DOT@12..13 "." [] []
        2: (empty)
      1: SEMICOLON@13..14 ";" [] []
    1: JS_EXPRESSION_STATEMENT@14..21
      0: JS_TEMPLATE_EXPRESSION@14..21
        0: JS_IDENTIFIER_EXPRESSION@14..18
          0: JS_REFERENCE_IDENTIFIER@14..18
            0: IDENT@14..18 "BAR" [Newline("\n")] []
        1: (empty)
        2: BACKTICK@18..19 "`" [] []
        3: JS_TEMPLATE_ELEMENT_LIST@19..21
          0: JS_TEMPLATE_CHUNK_ELEMENT@19..21
            0: TEMPLATE_CHUNK@19..21 "b\n" [] []
        4: (empty)
      1: (empty)
  4: EOF@21..21 "" [] []
--
subscripts_err.js:1:12 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Expected an expression but instead found ']'.
  
  > 1 │ foo()?.baz[].;
      │            ^
    2 │ BAR`b
    3 │ 
  
  i Expected an expression here.
  
  > 1 │ foo()?.baz[].;
      │            ^
    2 │ BAR`b
    3 │ 
  
--
subscripts_err.js:1:14 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Expected an identifier but instead found ';'.
  
  > 1 │ foo()?.baz[].;
      │              ^
    2 │ BAR`b
    3 │ 
  
  i Expected an identifier here.
  
  > 1 │ foo()?.baz[].;
      │              ^
    2 │ BAR`b
    3 │ 
  
--
subscripts_err.js:2:5 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × unterminated template literal
  
    1 │ foo()?.baz[].;
  > 2 │ BAR`b
      │     ^
  > 3 │ 
      │ 
  
--
foo()?.baz[].;
BAR`b