diff --git a/Userland/Libraries/LibJS/Bytecode/Op.cpp b/Userland/Libraries/LibJS/Bytecode/Op.cpp index f0ea2e9b59..84e7d44358 100644 --- a/Userland/Libraries/LibJS/Bytecode/Op.cpp +++ b/Userland/Libraries/LibJS/Bytecode/Op.cpp @@ -65,9 +65,12 @@ static ThrowCompletionOr put_by_property_key(Object* object, Value value, object->define_direct_accessor(name, nullptr, &function, Attribute::Configurable | Attribute::Enumerable); break; } - case PropertyKind::KeyValue: - TRY(object->set(name, interpreter.accumulator(), Object::ShouldThrowExceptions::Yes)); + case PropertyKind::KeyValue: { + bool succeeded = TRY(object->internal_set(name, interpreter.accumulator(), object)); + if (!succeeded && interpreter.vm().in_strict_mode()) + return interpreter.vm().throw_completion(interpreter.global_object(), ErrorType::ReferenceNullishSetProperty, name, interpreter.accumulator().to_string_without_side_effects()); break; + } case PropertyKind::Spread: TRY(object->copy_data_properties(value, {}, interpreter.global_object())); break;