732d09a63b
When cloning objects using spread and update properties (e.g. obj = {...o, x: 0}), we wrongly used the setter for the update argument if one was set. This CL changes the behaviour such that all arguments following the spread are treated as dynamic arguments. Bug: chromium:1251366 Change-Id: I76a6d02606dca0faa0a256f465834d85d3df4f6f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3178969 Commit-Queue: Patrick Thier <pthier@chromium.org> Reviewed-by: Shu-yu Guo <syg@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Reviewed-by: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/main@{#77079}
14 lines
344 B
JavaScript
14 lines
344 B
JavaScript
// Copyright 2021 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
Object.defineProperty(Object.prototype, "x", {
|
|
set: function (val) {}
|
|
});
|
|
|
|
let o = {...{}, x: 3};
|
|
assertEquals(o.x, 3);
|
|
|
|
let o2 = {...{x: 1}, x: 3};
|
|
assertEquals(o2.x, 3);
|