Object.defineProperty: Property description must be an object. Fixes gh-1754

This commit is contained in:
Rick Waldron 2020-09-16 15:33:42 -04:00
parent db5b9c1dd9
commit 1cd7d87501
8 changed files with 206 additions and 0 deletions

View File

@ -0,0 +1,23 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-object.defineproperty
description: >
Property description must be an object (bigint)
info: |
Object.defineProperty ( O, P, Attributes )
...
Let desc be ? ToPropertyDescriptor(Attributes).
...
ToPropertyDescriptor ( Obj )
If Type(Obj) is not Object, throw a TypeError exception.
...
features: [BigInt]
---*/
assert.throws(TypeError, () => {
Object.defineProperty({}, 'a', 0n);
});

View File

@ -0,0 +1,26 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-object.defineproperty
description: >
Property description must be an object (false)
info: |
ObjectDefineProperties ( O, Properties )
...
For each element nextKey of keys, do
Let propDesc be ? props.[[GetOwnProperty]](nextKey).
If propDesc is not undefined and propDesc.[[Enumerable]] is true, then
Let descObj be ? Get(props, nextKey).
Let desc be ? ToPropertyDescriptor(descObj).
...
ToPropertyDescriptor ( Obj )
If Type(Obj) is not Object, throw a TypeError exception.
...
---*/
assert.throws(TypeError, () => {
Object.defineProperty({}, 'a', false);
});

View File

@ -0,0 +1,26 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-object.defineproperty
description: >
Property description must be an object (null)
info: |
ObjectDefineProperties ( O, Properties )
...
For each element nextKey of keys, do
Let propDesc be ? props.[[GetOwnProperty]](nextKey).
If propDesc is not undefined and propDesc.[[Enumerable]] is true, then
Let descObj be ? Get(props, nextKey).
Let desc be ? ToPropertyDescriptor(descObj).
...
ToPropertyDescriptor ( Obj )
If Type(Obj) is not Object, throw a TypeError exception.
...
---*/
assert.throws(TypeError, () => {
Object.defineProperty({}, 'a', null);
});

View File

@ -0,0 +1,26 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-object.defineproperty
description: >
Property description must be an object (number)
info: |
ObjectDefineProperties ( O, Properties )
...
For each element nextKey of keys, do
Let propDesc be ? props.[[GetOwnProperty]](nextKey).
If propDesc is not undefined and propDesc.[[Enumerable]] is true, then
Let descObj be ? Get(props, nextKey).
Let desc be ? ToPropertyDescriptor(descObj).
...
ToPropertyDescriptor ( Obj )
If Type(Obj) is not Object, throw a TypeError exception.
...
---*/
assert.throws(TypeError, () => {
Object.defineProperty({}, 'a', 1);
});

View File

@ -0,0 +1,26 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-object.defineproperty
description: >
Property description must be an object (string)
info: |
ObjectDefineProperties ( O, Properties )
...
For each element nextKey of keys, do
Let propDesc be ? props.[[GetOwnProperty]](nextKey).
If propDesc is not undefined and propDesc.[[Enumerable]] is true, then
Let descObj be ? Get(props, nextKey).
Let desc be ? ToPropertyDescriptor(descObj).
...
ToPropertyDescriptor ( Obj )
If Type(Obj) is not Object, throw a TypeError exception.
...
---*/
assert.throws(TypeError, () => {
Object.defineProperty({}, 'a', '');
});

View File

@ -0,0 +1,27 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-object.defineproperty
description: >
Property description must be an object (symbol)
info: |
ObjectDefineProperties ( O, Properties )
...
For each element nextKey of keys, do
Let propDesc be ? props.[[GetOwnProperty]](nextKey).
If propDesc is not undefined and propDesc.[[Enumerable]] is true, then
Let descObj be ? Get(props, nextKey).
Let desc be ? ToPropertyDescriptor(descObj).
...
ToPropertyDescriptor ( Obj )
If Type(Obj) is not Object, throw a TypeError exception.
...
features: [Symbol]
---*/
assert.throws(TypeError, () => {
Object.defineProperty({}, 'a', Symbol());
});

View File

@ -0,0 +1,26 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-object.defineproperty
description: >
Property description must be an object (true)
info: |
ObjectDefineProperties ( O, Properties )
...
For each element nextKey of keys, do
Let propDesc be ? props.[[GetOwnProperty]](nextKey).
If propDesc is not undefined and propDesc.[[Enumerable]] is true, then
Let descObj be ? Get(props, nextKey).
Let desc be ? ToPropertyDescriptor(descObj).
...
ToPropertyDescriptor ( Obj )
If Type(Obj) is not Object, throw a TypeError exception.
...
---*/
assert.throws(TypeError, () => {
Object.defineProperty({}, 'a', true);
});

View File

@ -0,0 +1,26 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-object.defineproperty
description: >
Property description must be an object (undefined)
info: |
ObjectDefineProperties ( O, Properties )
...
For each element nextKey of keys, do
Let propDesc be ? props.[[GetOwnProperty]](nextKey).
If propDesc is not undefined and propDesc.[[Enumerable]] is true, then
Let descObj be ? Get(props, nextKey).
Let desc be ? ToPropertyDescriptor(descObj).
...
ToPropertyDescriptor ( Obj )
If Type(Obj) is not Object, throw a TypeError exception.
...
---*/
assert.throws(TypeError, () => {
Object.defineProperty({}, 'a', undefined);
});