diff --git a/Libraries/LibJS/Runtime/ScriptFunction.cpp b/Libraries/LibJS/Runtime/ScriptFunction.cpp index 5d0857823f..5828bcdde3 100644 --- a/Libraries/LibJS/Runtime/ScriptFunction.cpp +++ b/Libraries/LibJS/Runtime/ScriptFunction.cpp @@ -61,7 +61,8 @@ ScriptFunction::ScriptFunction(const FlyString& name, const Statement& body, Vec , m_function_length(m_function_length) , m_is_arrow_function(is_arrow_function) { - define_property("prototype", Object::create_empty(interpreter(), interpreter().global_object()), 0); + if (!is_arrow_function) + define_property("prototype", Object::create_empty(interpreter(), interpreter().global_object()), 0); define_native_property("length", length_getter, nullptr, Attribute::Configurable); define_native_property("name", name_getter, nullptr, Attribute::Configurable); } diff --git a/Libraries/LibJS/Tests/arrow-functions.js b/Libraries/LibJS/Tests/arrow-functions.js index d34a7836f2..e224415ded 100644 --- a/Libraries/LibJS/Tests/arrow-functions.js +++ b/Libraries/LibJS/Tests/arrow-functions.js @@ -77,6 +77,10 @@ try { assert(foobar.x.y() === foobar); assert(foobar.x.z() === foobar.x); + var Baz = () => {}; + + assert(Baz.prototype === undefined); + (() => { "use strict"; assert(isStrictMode());