| Index: test/mjsunit/harmony/array-of.js
|
| diff --git a/test/mjsunit/harmony/array-of.js b/test/mjsunit/harmony/array-of.js
|
| index adf7cb547cdae9eebd9fdec14f01c8d562526e65..a0fe1beb740f9d88037f61f23b404da966484dd3 100644
|
| --- a/test/mjsunit/harmony/array-of.js
|
| +++ b/test/mjsunit/harmony/array-of.js
|
| @@ -182,3 +182,24 @@ assertThrows(function() { new Array.of() }, TypeError); // not a constructor
|
| assertEquals(instance instanceof boundFn, true);
|
| assertEquals(Array.isArray(instance), false);
|
| })();
|
| +
|
| +// Assert that [[DefineOwnProperty]] is used in ArrayFrom, meaning a
|
| +// setter isn't called, and a failed [[DefineOwnProperty]] will throw.
|
| +(function testDefinesOwnProperty() {
|
| + var setterCalled = 0;
|
| + function exotic() {
|
| + Object.defineProperty(this, '0', {
|
| + get: function() { return 2; },
|
| + set: function() { setterCalled++; }
|
| + });
|
| + }
|
| + // Check that exotic was defined right
|
| + var instance = new exotic();
|
| + assertEquals(2, instance[0]);
|
| + instance[0] = 1;
|
| + assertEquals(2, instance[0]);
|
| + assertEquals(1, setterCalled);
|
| + // Accessor properties can't be overwritten with DefineOwnProperty
|
| + assertThrows(function () { Array.of.call(exotic, 1); }, TypeError);
|
| + assertEquals(1, setterCalled);
|
| +})();
|
|
|