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

This commit is contained in:
Rick Waldron 2020-09-16 15:20:45 -04:00
parent c5e8aa9ca2
commit db5b9c1dd9
8 changed files with 226 additions and 0 deletions

View File

@ -0,0 +1,29 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-objectdefineproperties
description: >
Property description must be an object (bigint)
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: [BigInt]
---*/
assert.throws(TypeError, () => {
Object.defineProperties({}, {
a: 0n
});
});

View File

@ -0,0 +1,28 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-objectdefineproperties
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.defineProperties({}, {
a: false
});
});

View File

@ -0,0 +1,28 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-objectdefineproperties
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.defineProperties({}, {
a: null
});
});

View File

@ -0,0 +1,28 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-objectdefineproperties
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.defineProperties({}, {
a: 1
});
});

View File

@ -0,0 +1,28 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-objectdefineproperties
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.defineProperties({}, {
a: ''
});
});

View File

@ -0,0 +1,29 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-objectdefineproperties
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.defineProperties({}, {
a: Symbol()
});
});

View File

@ -0,0 +1,28 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-objectdefineproperties
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.defineProperties({}, {
a: true
});
});

View File

@ -0,0 +1,28 @@
// Copyright (C) 2020 Rick Waldron. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-objectdefineproperties
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.defineProperties({}, {
a: undefined
});
});