diff --git a/Libraries/LibJS/Parser.cpp b/Libraries/LibJS/Parser.cpp index 01bb086fc37..ac56ebdaa45 100644 --- a/Libraries/LibJS/Parser.cpp +++ b/Libraries/LibJS/Parser.cpp @@ -1537,6 +1537,8 @@ NonnullRefPtr Parser::parse_class_expression(bool expect_ { ScopePusher static_init_scope = ScopePusher::static_init_block_scope(*this, *static_init_block); + static_init_scope.set_function_parameters(FunctionParameters::empty()); + parse_statement_list(static_init_block); } diff --git a/Libraries/LibJS/Tests/classes/class-static-initializers.js b/Libraries/LibJS/Tests/classes/class-static-initializers.js index 5d46816d064..9f9dceebc5a 100644 --- a/Libraries/LibJS/Tests/classes/class-static-initializers.js +++ b/Libraries/LibJS/Tests/classes/class-static-initializers.js @@ -72,3 +72,20 @@ describe("class like constructs can be used inside", () => { expect(hit).toBeTrue(); }); }); + +// https://github.com/LadybirdBrowser/ladybird/pull/4226 +test("declaring variables", () => { + class A { + static { + const a = 1; + let b = 2; + var c = 3; + function d() {} + + expect(a).toBe(1); + expect(b).toBe(2); + expect(c).toBe(3); + expect(typeof d).toBe("function"); + } + } +});