test262/test/built-ins/Object/assign/source-own-prop-desc-missin...

36 lines
1.0 KiB
JavaScript

// Copyright (C) 2015 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
es6id: 19.1.2.1
description: Invoked with a source which does not have a descriptor for an own property
info: >
[...]
5. For each element nextSource of sources, in ascending index order,
[...]
c. Repeat for each element nextKey of keys in List order,
i. Let desc be from.[[GetOwnProperty]](nextKey).
ii. ReturnIfAbrupt(desc).
iii. if desc is not undefined and desc.[[Enumerable]] is true, then
features: [Proxy]
---*/
var callCount = 0;
var target = {};
var result;
var source = new Proxy({}, {
ownKeys: function() {
callCount += 1;
return ['missing'];
}
});
result = Object.assign(target, source);
assert.sameValue(callCount, 1, 'Proxy trap was invoked exactly once');
assert.sameValue(
Object.hasOwnProperty.call(target, 'missing'),
false,
'An own property was not created for a property without a property descriptor'
);
assert.sameValue(result, target);