LibJS: Never omit setter/getter attributes in accessor descriptor object

These should not be omitted, an accessor with out getter or setter still
yields an undefined for the attribute in its descriptor object.
This commit is contained in:
Linus Groh 2021-06-07 23:07:13 +01:00
parent 8c964ef9f8
commit 3fdad563e2
Notes: sideshowbarker 2024-07-18 12:39:48 +09:00

View file

@ -434,17 +434,14 @@ Value Object::get_own_property_descriptor_object(const PropertyName& property_na
descriptor_object->define_property(vm.names.writable, Value(descriptor.attributes.is_writable()));
if (vm.exception())
return {};
} else if (descriptor.is_accessor_descriptor()) {
if (descriptor.getter) {
descriptor_object->define_property(vm.names.get, Value(descriptor.getter));
if (vm.exception())
return {};
}
if (descriptor.setter) {
descriptor_object->define_property(vm.names.set, Value(descriptor.setter));
if (vm.exception())
return {};
}
} else {
VERIFY(descriptor.is_accessor_descriptor());
descriptor_object->define_property(vm.names.get, descriptor.getter ? Value(descriptor.getter) : js_undefined());
if (vm.exception())
return {};
descriptor_object->define_property(vm.names.set, descriptor.setter ? Value(descriptor.setter) : js_undefined());
if (vm.exception())
return {};
}
descriptor_object->define_property(vm.names.enumerable, Value(descriptor.attributes.is_enumerable()));
if (vm.exception())