From 93b57e6d8c62af0fc419332247a5f96aa5346833 Mon Sep 17 00:00:00 2001 From: davidot Date: Mon, 12 Jul 2021 01:30:04 +0200 Subject: [PATCH] LibJS: Disallow static methods named prototype in classes --- Userland/Libraries/LibJS/Parser.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Userland/Libraries/LibJS/Parser.cpp b/Userland/Libraries/LibJS/Parser.cpp index 1c4412b0c6..a36a41e649 100644 --- a/Userland/Libraries/LibJS/Parser.cpp +++ b/Userland/Libraries/LibJS/Parser.cpp @@ -674,6 +674,12 @@ NonnullRefPtr Parser::parse_class_expression(bool expect_class_ break; } + //https://tc39.es/ecma262/#sec-class-definitions-static-semantics-early-errors + // ClassElement : static MethodDefinition + // It is a Syntax Error if PropName of MethodDefinition is "prototype". + if (is_static && name == "prototype"sv) + syntax_error("Classes may not have a static property named 'prototype'"); + } else { expected("property key"); }