LibJS: Don't define the "prototype" property for arrow functions

This commit is contained in:
Jack Karamanian 2020-05-30 00:15:17 -05:00 committed by Andreas Kling
parent 45ccd9f8d9
commit 1110b1b444
2 changed files with 6 additions and 1 deletions

View file

@ -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);
}

View file

@ -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());