biome_js_parser 0.5.7

Biome's JavaScript parser
Documentation
JsModule {
    bom_token: missing (optional),
    interpreter_token: missing (optional),
    directives: JsDirectiveList [],
    items: JsModuleItemList [
        JsClassDeclaration {
            decorators: JsDecoratorList [],
            abstract_token: missing (optional),
            class_token: CLASS_KW@0..6 "class" [] [Whitespace(" ")],
            id: missing (required),
            type_parameters: missing (optional),
            extends_clause: missing (optional),
            implements_clause: missing (optional),
            l_curly_token: L_CURLY@6..7 "{" [] [],
            members: JsClassMemberList [
                JsPropertyClassMember {
                    modifiers: JsPropertyModifierList [],
                    name: JsComputedMemberName {
                        l_brack_token: L_BRACK@7..11 "[" [Newline("\n"), Whitespace("  ")] [],
                        expression: JsBinaryExpression {
                            left: JsNumberLiteralExpression {
                                value_token: JS_NUMBER_LITERAL@11..13 "1" [] [Whitespace(" ")],
                            },
                            operator_token: PLUS@13..15 "+" [] [Whitespace(" ")],
                            right: JsNumberLiteralExpression {
                                value_token: JS_NUMBER_LITERAL@15..16 "1" [] [],
                            },
                        },
                        r_brack_token: R_BRACK@16..18 "]" [] [Whitespace(" ")],
                    },
                    property_annotation: missing (optional),
                    value: JsInitializerClause {
                        eq_token: EQ@18..20 "=" [] [Whitespace(" ")],
                        expression: JsArrowFunctionExpression {
                            async_token: missing (optional),
                            type_parameters: missing (optional),
                            parameters: JsParameters {
                                l_paren_token: L_PAREN@20..21 "(" [] [],
                                items: JsParameterList [],
                                r_paren_token: R_PAREN@21..23 ")" [] [Whitespace(" ")],
                            },
                            return_type_annotation: missing (optional),
                            fat_arrow_token: FAT_ARROW@23..26 "=>" [] [Whitespace(" ")],
                            body: JsFunctionBody {
                                l_curly_token: L_CURLY@26..27 "{" [] [],
                                directives: JsDirectiveList [],
                                statements: JsStatementList [
                                    JsVariableStatement {
                                        declaration: JsVariableDeclaration {
                                            await_token: missing (optional),
                                            kind: LET_KW@27..36 "let" [Newline("\n"), Whitespace("    ")] [Whitespace(" ")],
                                            declarators: JsVariableDeclaratorList [
                                                JsVariableDeclarator {
                                                    id: JsIdentifierBinding {
                                                        name_token: IDENT@36..37 "a" [] [],
                                                    },
                                                    variable_annotation: missing (optional),
                                                    initializer: JsInitializerClause {
                                                        eq_token: EQ@37..38 "=" [] [],
                                                        expression: missing (required),
                                                    },
                                                },
                                            ],
                                        },
                                        semicolon_token: SEMICOLON@38..39 ";" [] [],
                                    },
                                ],
                                r_curly_token: R_CURLY@39..43 "}" [Newline("\n"), Whitespace("  ")] [],
                            },
                        },
                    },
                    semicolon_token: SEMICOLON@43..44 ";" [] [],
                },
            ],
            r_curly_token: R_CURLY@44..46 "}" [Newline("\n")] [],
        },
        JsEmptyStatement {
            semicolon_token: SEMICOLON@46..47 ";" [] [],
        },
    ],
    eof_token: EOF@47..48 "" [Newline("\n")] [],
}

0: JS_MODULE@0..48
  0: (empty)
  1: (empty)
  2: JS_DIRECTIVE_LIST@0..0
  3: JS_MODULE_ITEM_LIST@0..47
    0: JS_CLASS_DECLARATION@0..46
      0: JS_DECORATOR_LIST@0..0
      1: (empty)
      2: CLASS_KW@0..6 "class" [] [Whitespace(" ")]
      3: (empty)
      4: (empty)
      5: (empty)
      6: (empty)
      7: L_CURLY@6..7 "{" [] []
      8: JS_CLASS_MEMBER_LIST@7..44
        0: JS_PROPERTY_CLASS_MEMBER@7..44
          0: JS_PROPERTY_MODIFIER_LIST@7..7
          1: JS_COMPUTED_MEMBER_NAME@7..18
            0: L_BRACK@7..11 "[" [Newline("\n"), Whitespace("  ")] []
            1: JS_BINARY_EXPRESSION@11..16
              0: JS_NUMBER_LITERAL_EXPRESSION@11..13
                0: JS_NUMBER_LITERAL@11..13 "1" [] [Whitespace(" ")]
              1: PLUS@13..15 "+" [] [Whitespace(" ")]
              2: JS_NUMBER_LITERAL_EXPRESSION@15..16
                0: JS_NUMBER_LITERAL@15..16 "1" [] []
            2: R_BRACK@16..18 "]" [] [Whitespace(" ")]
          2: (empty)
          3: JS_INITIALIZER_CLAUSE@18..43
            0: EQ@18..20 "=" [] [Whitespace(" ")]
            1: JS_ARROW_FUNCTION_EXPRESSION@20..43
              0: (empty)
              1: (empty)
              2: JS_PARAMETERS@20..23
                0: L_PAREN@20..21 "(" [] []
                1: JS_PARAMETER_LIST@21..21
                2: R_PAREN@21..23 ")" [] [Whitespace(" ")]
              3: (empty)
              4: FAT_ARROW@23..26 "=>" [] [Whitespace(" ")]
              5: JS_FUNCTION_BODY@26..43
                0: L_CURLY@26..27 "{" [] []
                1: JS_DIRECTIVE_LIST@27..27
                2: JS_STATEMENT_LIST@27..39
                  0: JS_VARIABLE_STATEMENT@27..39
                    0: JS_VARIABLE_DECLARATION@27..38
                      0: (empty)
                      1: LET_KW@27..36 "let" [Newline("\n"), Whitespace("    ")] [Whitespace(" ")]
                      2: JS_VARIABLE_DECLARATOR_LIST@36..38
                        0: JS_VARIABLE_DECLARATOR@36..38
                          0: JS_IDENTIFIER_BINDING@36..37
                            0: IDENT@36..37 "a" [] []
                          1: (empty)
                          2: JS_INITIALIZER_CLAUSE@37..38
                            0: EQ@37..38 "=" [] []
                            1: (empty)
                    1: SEMICOLON@38..39 ";" [] []
                3: R_CURLY@39..43 "}" [Newline("\n"), Whitespace("  ")] []
          4: SEMICOLON@43..44 ";" [] []
      9: R_CURLY@44..46 "}" [Newline("\n")] []
    1: JS_EMPTY_STATEMENT@46..47
      0: SEMICOLON@46..47 ";" [] []
  4: EOF@47..48 "" [Newline("\n")] []
--
invalid_method_recover.js:1:1 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × class declarations must have a name
  
  > 1 │ class {
      │ ^^^^^^
    2 │   [1 + 1] = () => {
    3 │     let a=;
  
--
invalid_method_recover.js:3:11 parse ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  × Expected an expression, or an assignment but instead found ';'.
  
    1 │ class {
    2 │   [1 + 1] = () => {
  > 3 │     let a=;
      │           ^
    4 │   };
    5 │ };
  
  i Expected an expression, or an assignment here.
  
    1 │ class {
    2 │   [1 + 1] = () => {
  > 3 │     let a=;
      │           ^
    4 │   };
    5 │ };
  
--
class {
  [1 + 1] = () => {
    let a=;
  };
};