| Index: test/mjsunit/object-define-property.js
|
| diff --git a/test/mjsunit/object-define-property.js b/test/mjsunit/object-define-property.js
|
| index d24a4e5a398c0d84a85052283daf0f0516d4f87f..89b8622d2253d7877139ad464b195962180e1b5e 100644
|
| --- a/test/mjsunit/object-define-property.js
|
| +++ b/test/mjsunit/object-define-property.js
|
| @@ -749,14 +749,33 @@ assertTrue(desc.writable);
|
| assertTrue(desc.enumerable);
|
| assertFalse(desc.configurable);
|
|
|
| -// Ensure that we can't overwrite the non configurable element.
|
| +// Can use defineProperty to change the value of a non
|
| +// configurable property.
|
| try {
|
| Object.defineProperty(obj6, '2', descElement);
|
| + desc = Object.getOwnPropertyDescriptor(obj6, '2');
|
| + assertEquals(desc.value, 'foobar');
|
| +} catch (e) {
|
| + assertUnreachable();
|
| +}
|
| +
|
| +// Ensure that we can't change the descriptor of a
|
| +// non configurable property.
|
| +try {
|
| + var descAccessor = { get: function() { return 0; } };
|
| + Object.defineProperty(obj6, '2', descAccessor);
|
| assertUnreachable();
|
| } catch (e) {
|
| assertTrue(/Cannot redefine property/.test(e));
|
| }
|
|
|
| +Object.defineProperty(obj6, '2', descElementNonWritable);
|
| +desc = Object.getOwnPropertyDescriptor(obj6, '2');
|
| +assertEquals(desc.value, 'foofoo');
|
| +assertFalse(desc.writable);
|
| +assertTrue(desc.enumerable);
|
| +assertFalse(desc.configurable);
|
| +
|
| Object.defineProperty(obj6, '3', descElementNonWritable);
|
| desc = Object.getOwnPropertyDescriptor(obj6, '3');
|
| assertEquals(desc.value, 'foofoo');
|
| @@ -827,14 +846,33 @@ assertTrue(desc.writable);
|
| assertTrue(desc.enumerable);
|
| assertFalse(desc.configurable);
|
|
|
| -// Ensure that we can't overwrite the non configurable element.
|
| +// Can use defineProperty to change the value of a non
|
| +// configurable property of an array.
|
| try {
|
| Object.defineProperty(arr, '2', descElement);
|
| + desc = Object.getOwnPropertyDescriptor(arr, '2');
|
| + assertEquals(desc.value, 'foobar');
|
| +} catch (e) {
|
| + assertUnreachable();
|
| +}
|
| +
|
| +// Ensure that we can't change the descriptor of a
|
| +// non configurable property.
|
| +try {
|
| + var descAccessor = { get: function() { return 0; } };
|
| + Object.defineProperty(arr, '2', descAccessor);
|
| assertUnreachable();
|
| } catch (e) {
|
| assertTrue(/Cannot redefine property/.test(e));
|
| }
|
|
|
| +Object.defineProperty(arr, '2', descElementNonWritable);
|
| +desc = Object.getOwnPropertyDescriptor(arr, '2');
|
| +assertEquals(desc.value, 'foofoo');
|
| +assertFalse(desc.writable);
|
| +assertTrue(desc.enumerable);
|
| +assertFalse(desc.configurable);
|
| +
|
| Object.defineProperty(arr, '3', descElementNonWritable);
|
| desc = Object.getOwnPropertyDescriptor(arr, '3');
|
| assertEquals(desc.value, 'foofoo');
|
|
|