assign-descriptor.js |
---
description: Testing descriptor property of Object.assign
includes: [propertyHelper.js]
es6id: 19.1.2.1
--- |
369 |
assign-length.js |
---
description: The length property of the assign method should be 2
es6id: 19.1.2.1
info: |
The length property of the assign method is 2.
ES6 Section 17:
Unless otherwise specified, the length property of a built-in Function
object has the attributes { [[Writable]]: false, [[Enumerable]]: false,
[[Configurable]]: true }.
includes: [propertyHelper.js]
--- |
660 |
assignment-to-readonly-property-of-target-must-throw-a-typeerror-exception.js |
---
esid: sec-object.assign
description: >
Assignment to readonly property of target must throw a TypeError exception
info: |
Let to be ? ToObject(target).
If only one argument was passed, return to.
For each element nextSource of sources, do
If nextSource is neither undefined nor null, then
Let from be ! ToObject(nextSource).
Let keys be ? from.[[OwnPropertyKeys]]().
For each element nextKey of keys, do
Let desc be ? from.[[GetOwnProperty]](nextKey).
If desc is not undefined and desc.[[Enumerable]] is true, then
Let propValue be ? Get(from, nextKey).
Perform ? Set(to, nextKey, propValue, true).
Set ( O, P, V, Throw ) sec-set-o-p-v-throw
Let success be ? O.[[Set]](P, V, O).
If success is false and Throw is true, throw a TypeError exception.
--- |
1042 |
browser.js |
|
0 |
invoked-as-ctor.js |
---
es6id: 19.1.2.1
description: Invoked as a constructor
info: |
ES6 Section 9.3:
Built-in function objects that are not identified as constructors do not
implement the [[Construct]] internal method unless otherwise specified in
the description of a particular function.
--- |
525 |
name.js |
---
es6id: 19.1.2.1
description: '`name` property'
info: |
ES6 Section 17:
Every built-in Function object, including constructors, that is not
identified as an anonymous function has a name property whose value is a
String. Unless otherwise specified, this value is the name that is given to
the function in this specification.
[...]
Unless otherwise specified, the name property of a built-in Function
object, if it exists, has the attributes { [[Writable]]: false,
[[Enumerable]]: false, [[Configurable]]: true }.
includes: [propertyHelper.js]
--- |
879 |
not-a-constructor.js |
---
esid: sec-ecmascript-standard-built-in-objects
description: >
Object.assign does not implement [[Construct]], is not new-able
info: |
ECMAScript Function Objects
Built-in function objects that are not identified as constructors do not
implement the [[Construct]] internal method unless otherwise specified in
the description of a particular function.
sec-evaluatenew
...
7. If IsConstructor(constructor) is false, throw a TypeError exception.
...
includes: [isConstructor.js]
features: [Reflect.construct, arrow-function]
--- |
876 |
ObjectOverride-sameproperty.js |
---
description: >
Object properties are assigned to target in ascending index order,
i.e. a later assignment to the same property overrides an earlier assignment.
es6id: 19.1.2.1
--- |
495 |
OnlyOneArgument.js |
---
description: >
test Object.Assign(target,...sources),only one argument was passed,
return ToObject(target)
es6id: 19.1.2.1.3
--- |
462 |
Override-notstringtarget.js |
---
description: >
Test override of Object.Assign(target,...sources),
Every string from sources will be wrapped to objects, and override from the first letter(result[0]) all the time
es6id: 19.1.2.1
--- |
839 |
Override.js |
---
description: Test Object.Assign(target,...sources).
esid: sec-object.assign
--- |
1332 |
shell.js |
|
0 |
source-get-attr-error.js |
---
es6id: 19.1.2.1
description: Errors thrown during retrieval of source object attributes
info: |
[...]
5. For each element nextSource of sources, in ascending index order,
[...]
c. Repeat for each element nextKey of keys in List order,
[...]
iii. if desc is not undefined and desc.[[Enumerable]] is true, then
1. Let propValue be Get(from, nextKey).
2. ReturnIfAbrupt(propValue).
--- |
748 |
source-non-enum.js |
---
es6id: 19.1.2.1
description: Does not assign non-enumerable source properties
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
--- |
903 |
Source-Null-Undefined.js |
---
description: null and undefined source should be ignored,result should be original object.
esid: sec-object.assign
--- |
459 |
Source-Number-Boolen-Symbol.js |
---
description: >
Number,Boolean,Symbol cannot have own enumerable properties,
So cannot be Assigned.Here result should be original object.
esid: sec-object.assign
features: [Symbol]
--- |
537 |
source-own-prop-desc-missing.js |
---
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]
--- |
1089 |
source-own-prop-error.js |
---
es6id: 19.1.2.1
description: Invoked with a source whose own property descriptor cannot be retrieved
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).
features: [Proxy]
--- |
753 |
source-own-prop-keys-error.js |
---
es6id: 19.1.2.1
description: Invoked with a source whose own property keys cannot be retrieved
info: |
[...]
5. For each element nextSource of sources, in ascending index order,
a. If nextSource is undefined or null, let keys be an empty List.
b. Else,
i. Let from be ToObject(nextSource).
ii. ReturnIfAbrupt(from).
iii. Let keys be from.[[OwnPropertyKeys]]().
iv. ReturnIfAbrupt(keys).
features: [Proxy]
--- |
806 |
Source-String.js |
---
description: Test Object.Assign(target,...sources), string have own enumerable properties, so it can be wrapped to objects.
esid: sec-object.assign
--- |
630 |
strings-and-symbol-order-proxy.js |
---
esid: sec-object.assign
description: >
Proxy keys are iterated in order they were provided by "ownKeys" trap.
info: |
Object.assign ( target, ...sources )
[...]
4. For each element nextSource of sources, in ascending index order, do
a. If nextSource is neither undefined nor null, then
[...]
ii. Let keys be ? from.[[OwnPropertyKeys]]().
iii. For each element nextKey of keys in List order, do
1. Let desc be ? from.[[GetOwnProperty]](nextKey).
[[OwnPropertyKeys]] ( )
[...]
7. Let trapResultArray be ? Call(trap, handler, « target »).
8. Let trapResult be ? CreateListFromArrayLike(trapResultArray, « String, Symbol »).
[...]
23. Return trapResult.
features: [Proxy, Symbol]
includes: [compareArray.js]
--- |
1237 |
strings-and-symbol-order.js |
---
esid: sec-object.assign
description: >
Symbol-valued properties are copied after String-valued properties.
info: |
19.1.2.1 Object.assign ( target, ...sources )
...
4. For each element nextSource of sources, in ascending index order, do
a. ...
b. Else,
i. Let from be ! ToObject(nextSource).
ii. Let keys be ? from.[[OwnPropertyKeys]]().
c. For each element nextKey of keys in List order, do
...
...
9.1.11.1 OrdinaryOwnPropertyKeys ( O )
...
3. For each own property key P of O that is a String but is not an integer index,
in ascending chronological order of property creation, do
a. Add P as the last element of keys.
4. For each own property key P of O that is a Symbol, in ascending chronological
order of property creation, do
a. Add P as the last element of keys.
...
includes: [compareArray.js]
--- |
1749 |
Target-Boolean.js |
---
description: >
Test the first argument(target) of Object.Assign(target,...sources),
if target is Boolean,the return value should be a new object whose value is target.
es6id: 19.1.2.1.1
--- |
556 |
target-is-frozen-accessor-property-set-succeeds.js |
---
esid: sec-object.assign
description: >
[[Set]] to accessor property of frozen `target` succeeds.
info: |
SetIntegrityLevel ( O, level )
[...]
3. Let status be ? O.[[PreventExtensions]]().
[...]
7. Else,
a. Assert: level is frozen.
b. For each element k of keys, do
i. Let currentDesc be ? O.[[GetOwnProperty]](k).
ii. If currentDesc is not undefined, then
1. If IsAccessorDescriptor(currentDesc) is true, then
a. Let desc be the PropertyDescriptor { [[Configurable]]: false }.
[...]
3. Perform ? DefinePropertyOrThrow(O, k, desc).
8. Return true.
Object.assign ( target, ...sources )
[...]
3. For each element nextSource of sources, do
a. If nextSource is neither undefined nor null, then
[...]
iii. For each element nextKey of keys, do
1. Let desc be ? from.[[GetOwnProperty]](nextKey).
2. If desc is not undefined and desc.[[Enumerable]] is true, then
[...]
b. Perform ? Set(to, nextKey, propValue, true).
OrdinarySetWithOwnDescriptor ( O, P, V, Receiver, ownDesc )
[...]
7. Perform ? Call(setter, Receiver, « V »).
8. Return true.
features: [Symbol]
--- |
1715 |
target-is-frozen-data-property-set-throws.js |
---
esid: sec-object.assign
description: >
[[Set]] to data property of frozen `target` fails with TypeError.
info: |
SetIntegrityLevel ( O, level )
[...]
3. Let status be ? O.[[PreventExtensions]]().
[...]
7. Else,
a. Assert: level is frozen.
b. For each element k of keys, do
i. Let currentDesc be ? O.[[GetOwnProperty]](k).
ii. If currentDesc is not undefined, then
1. If IsAccessorDescriptor(currentDesc) is true, then
[...]
2. Else,
a. Let desc be the PropertyDescriptor { [[Configurable]]: false, [[Writable]]: false }.
3. Perform ? DefinePropertyOrThrow(O, k, desc).
8. Return true.
Object.assign ( target, ...sources )
[...]
3. For each element nextSource of sources, do
a. If nextSource is neither undefined nor null, then
[...]
iii. For each element nextKey of keys, do
1. Let desc be ? from.[[GetOwnProperty]](nextKey).
2. If desc is not undefined and desc.[[Enumerable]] is true, then
[...]
b. Perform ? Set(to, nextKey, propValue, true).
OrdinarySetWithOwnDescriptor ( O, P, V, Receiver, ownDesc )
[...]
3. If IsDataDescriptor(ownDesc) is true, then
a. If ownDesc.[[Writable]] is false, return false.
features: [Symbol, Reflect]
--- |
1729 |
target-is-non-extensible-existing-accessor-property.js |
---
esid: sec-object.assign
description: >
[[Set]] to existing accessor property of non-extensible `target` is successful.
info: |
OrdinaryPreventExtensions ( O )
1. Set O.[[Extensible]] to false.
Object.assign ( target, ...sources )
[...]
3. For each element nextSource of sources, do
a. If nextSource is neither undefined nor null, then
[...]
iii. For each element nextKey of keys, do
1. Let desc be ? from.[[GetOwnProperty]](nextKey).
2. If desc is not undefined and desc.[[Enumerable]] is true, then
[...]
b. Perform ? Set(to, nextKey, propValue, true).
OrdinarySetWithOwnDescriptor ( O, P, V, Receiver, ownDesc )
[...]
7. Perform ? Call(setter, Receiver, « V »).
8. Return true.
features: [Symbol]
--- |
1297 |
target-is-non-extensible-existing-data-property.js |
---
esid: sec-object.assign
description: >
[[Set]] to existing data property of non-extensible `target` is successful.
info: |
OrdinaryPreventExtensions ( O )
1. Set O.[[Extensible]] to false.
Object.assign ( target, ...sources )
[...]
3. For each element nextSource of sources, do
a. If nextSource is neither undefined nor null, then
[...]
iii. For each element nextKey of keys, do
1. Let desc be ? from.[[GetOwnProperty]](nextKey).
2. If desc is not undefined and desc.[[Enumerable]] is true, then
[...]
b. Perform ? Set(to, nextKey, propValue, true).
OrdinarySetWithOwnDescriptor ( O, P, V, Receiver, ownDesc )
[...]
3. If IsDataDescriptor(ownDesc) is true, then
[...]
c. Let existingDescriptor be ? Receiver.[[GetOwnProperty]](P).
d. If existingDescriptor is not undefined, then
[...]
iii. Let valueDesc be the PropertyDescriptor { [[Value]]: V }.
iv. Return ? Receiver.[[DefineOwnProperty]](P, valueDesc).
ValidateAndApplyPropertyDescriptor ( O, P, extensible, Desc, current )
[...]
9. If O is not undefined, then
a. For each field of Desc that is present, set the corresponding attribute
of the property named P of object O to the value of the field.
10. Return true.
features: [Symbol]
--- |
1759 |
target-is-non-extensible-property-creation-throws.js |
---
esid: sec-object.assign
description: >
[[Set]] to non-existing property of non-extensible `target` fails with TypeError.
info: |
Object.assign ( target, ...sources )
[...]
3. For each element nextSource of sources, do
a. If nextSource is neither undefined nor null, then
[...]
iii. For each element nextKey of keys, do
1. Let desc be ? from.[[GetOwnProperty]](nextKey).
2. If desc is not undefined and desc.[[Enumerable]] is true, then
[...]
b. Perform ? Set(to, nextKey, propValue, true).
OrdinarySetWithOwnDescriptor ( O, P, V, Receiver, ownDesc )
[...]
3. If IsDataDescriptor(ownDesc) is true, then
[...]
c. Let existingDescriptor be ? Receiver.[[GetOwnProperty]](P).
d. If existingDescriptor is not undefined, then
[...]
e. Else,
i. Assert: Receiver does not currently have a property P.
ii. Return ? CreateDataProperty(Receiver, P, V).
ValidateAndApplyPropertyDescriptor ( O, P, extensible, Desc, current )
[...]
2. If current is undefined, then
a. If extensible is false, return false.
features: [Symbol]
--- |
1570 |
target-is-sealed-existing-accessor-property.js |
---
esid: sec-object.assign
description: >
[[Set]] to existing accessor property of sealed `target` is successful.
info: |
SetIntegrityLevel ( O, level )
[...]
3. Let status be ? O.[[PreventExtensions]]().
[...]
OrdinaryPreventExtensions ( O )
1. Set O.[[Extensible]] to false.
Object.assign ( target, ...sources )
[...]
3. For each element nextSource of sources, do
a. If nextSource is neither undefined nor null, then
[...]
iii. For each element nextKey of keys, do
1. Let desc be ? from.[[GetOwnProperty]](nextKey).
2. If desc is not undefined and desc.[[Enumerable]] is true, then
[...]
b. Perform ? Set(to, nextKey, propValue, true).
OrdinarySetWithOwnDescriptor ( O, P, V, Receiver, ownDesc )
[...]
7. Perform ? Call(setter, Receiver, « V »).
8. Return true.
--- |
1343 |
target-is-sealed-existing-data-property.js |
---
esid: sec-object.assign
description: >
[[Set]] to existing data property of sealed `target` is successful.
info: |
SetIntegrityLevel ( O, level )
[...]
3. Let status be ? O.[[PreventExtensions]]().
[...]
OrdinaryPreventExtensions ( O )
1. Set O.[[Extensible]] to false.
Object.assign ( target, ...sources )
[...]
3. For each element nextSource of sources, do
a. If nextSource is neither undefined nor null, then
[...]
iii. For each element nextKey of keys, do
1. Let desc be ? from.[[GetOwnProperty]](nextKey).
2. If desc is not undefined and desc.[[Enumerable]] is true, then
[...]
b. Perform ? Set(to, nextKey, propValue, true).
OrdinarySetWithOwnDescriptor ( O, P, V, Receiver, ownDesc )
[...]
3. If IsDataDescriptor(ownDesc) is true, then
[...]
c. Let existingDescriptor be ? Receiver.[[GetOwnProperty]](P).
d. If existingDescriptor is not undefined, then
[...]
iii. Let valueDesc be the PropertyDescriptor { [[Value]]: V }.
iv. Return ? Receiver.[[DefineOwnProperty]](P, valueDesc).
ValidateAndApplyPropertyDescriptor ( O, P, extensible, Desc, current )
[...]
9. If O is not undefined, then
a. For each field of Desc that is present, set the corresponding attribute
of the property named P of object O to the value of the field.
10. Return true.
--- |
1805 |
target-is-sealed-property-creation-throws.js |
---
esid: sec-object.assign
description: >
[[Set]] to non-existing property of sealed `target` fails with TypeError.
info: |
SetIntegrityLevel ( O, level )
[...]
3. Let status be ? O.[[PreventExtensions]]().
[...]
Object.assign ( target, ...sources )
[...]
3. For each element nextSource of sources, do
a. If nextSource is neither undefined nor null, then
[...]
iii. For each element nextKey of keys, do
1. Let desc be ? from.[[GetOwnProperty]](nextKey).
2. If desc is not undefined and desc.[[Enumerable]] is true, then
[...]
b. Perform ? Set(to, nextKey, propValue, true).
OrdinarySetWithOwnDescriptor ( O, P, V, Receiver, ownDesc )
[...]
3. If IsDataDescriptor(ownDesc) is true, then
[...]
c. Let existingDescriptor be ? Receiver.[[GetOwnProperty]](P).
d. If existingDescriptor is not undefined, then
[...]
e. Else,
i. Assert: Receiver does not currently have a property P.
ii. Return ? CreateDataProperty(Receiver, P, V).
ValidateAndApplyPropertyDescriptor ( O, P, extensible, Desc, current )
[...]
2. If current is undefined, then
a. If extensible is false, return false.
features: [Symbol, Reflect]
--- |
1644 |
Target-Null.js |
---
description: >
Test the first argument(target) of Object.Assign(target,...sources),
if target is null,Should Throw a TypeError exception.
es6id: 19.1.2.1.1
--- |
407 |
Target-Number.js |
---
description: >
Test the first argument(target) of Object.Assign(target,...sources),
if target is Number,the return value should be a new object whose value is target.
es6id: 19.1.2.1.1
--- |
546 |
Target-Object.js |
---
description: >
Test the first argument(target) of Object.Assign(target,...sources),
if target is Object,its properties will be the properties of new object.
es6id: 19.1.2.1.1
--- |
549 |
target-set-not-writable.js |
---
es6id: 19.1.2.1
description: Errors thrown during definition of target object attributes
info: |
[...]
5. For each element nextSource of sources, in ascending index order,
[...]
c. Repeat for each element nextKey of keys in List order,
[...]
iii. if desc is not undefined and desc.[[Enumerable]] is true, then
[...]
3. Let status be Set(to, nextKey, propValue, true).
4. ReturnIfAbrupt(status).
--- |
800 |
target-set-user-error.js |
---
es6id: 19.1.2.1
description: Errors thrown during definition of target object attributes
info: |
[...]
5. For each element nextSource of sources, in ascending index order,
[...]
c. Repeat for each element nextKey of keys in List order,
[...]
iii. if desc is not undefined and desc.[[Enumerable]] is true, then
[...]
3. Let status be Set(to, nextKey, propValue, true).
4. ReturnIfAbrupt(status).
--- |
840 |
Target-String.js |
---
description: >
Test the first argument(target) of Object.Assign(target,...sources),
if target is String,the return value should be a new object whose value is target.
es6id: 19.1.2.1.1
--- |
561 |
Target-Symbol.js |
---
description: >
Test the first argument(target) of Object.Assign(target,...sources),
if target is Symbol,the return value should be a new Symbol object whose [[SymbolData]] value is target.
es6id: 19.1.2.1.1
features: [Symbol]
--- |
652 |
Target-Undefined.js |
---
description: >
Test the first argument(target) of Object.Assign(target,...sources),
if target is Undefined,Should Throw a TypeError exception.
es6id: 19.1.2.1.1
--- |
417 |