mirror of
https://github.com/RGBCube/serenity
synced 2025-05-21 15:15:07 +00:00
LibJS/Bytecode: Make setting failures throw only in strict mode
This commit is contained in:
parent
8568d18d7d
commit
12e3abc9e7
1 changed files with 5 additions and 2 deletions
|
@ -65,9 +65,12 @@ static ThrowCompletionOr<void> put_by_property_key(Object* object, Value value,
|
||||||
object->define_direct_accessor(name, nullptr, &function, Attribute::Configurable | Attribute::Enumerable);
|
object->define_direct_accessor(name, nullptr, &function, Attribute::Configurable | Attribute::Enumerable);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PropertyKind::KeyValue:
|
case PropertyKind::KeyValue: {
|
||||||
TRY(object->set(name, interpreter.accumulator(), Object::ShouldThrowExceptions::Yes));
|
bool succeeded = TRY(object->internal_set(name, interpreter.accumulator(), object));
|
||||||
|
if (!succeeded && interpreter.vm().in_strict_mode())
|
||||||
|
return interpreter.vm().throw_completion<TypeError>(interpreter.global_object(), ErrorType::ReferenceNullishSetProperty, name, interpreter.accumulator().to_string_without_side_effects());
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case PropertyKind::Spread:
|
case PropertyKind::Spread:
|
||||||
TRY(object->copy_data_properties(value, {}, interpreter.global_object()));
|
TRY(object->copy_data_properties(value, {}, interpreter.global_object()));
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue