LibJS: Throw when delete-ing a non-configurable property in strict mode

This commit is contained in:
Idan Horowitz
2021-06-16 13:13:01 +03:00
committed by Linus Groh
parent c619ad4fec
commit 07992c8da6

View File

@@ -781,8 +781,11 @@ bool Object::delete_property(const PropertyName& property_name)
auto metadata = shape().lookup(property_name.to_string_or_symbol());
if (!metadata.has_value())
return true;
if (!metadata.value().attributes.is_configurable())
if (!metadata.value().attributes.is_configurable()) {
if (vm().in_strict_mode())
vm().throw_exception<TypeError>(global_object(), ErrorType::DescChangeNonConfigurable, property_name.to_string_or_symbol().to_display_string());
return false;
}
size_t deleted_offset = metadata.value().offset;