| Index: test/mjsunit/object-freeze.js
|
| diff --git a/test/mjsunit/object-freeze.js b/test/mjsunit/object-freeze.js
|
| index 23f5af0f0c2c9de4489828fa5f0e628ad5d05d3d..5d1f8b7c5b0abb092639c90945c70aec48753a44 100644
|
| --- a/test/mjsunit/object-freeze.js
|
| +++ b/test/mjsunit/object-freeze.js
|
| @@ -25,20 +25,33 @@
|
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| -// Tests the Object.freeze and Object.isFrozen methods - ES 19.1.2.5 and
|
| -// ES 19.1.2.12
|
| +// Tests the Object.freeze and Object.isFrozen methods - ES 15.2.3.9 and
|
| +// ES 15.2.3.12
|
|
|
| // Flags: --allow-natives-syntax
|
|
|
| -// Test that we return obj if non-object is passed as argument
|
| -var non_objects = new Array(undefined, null, 1, -1, 0, 42.43, Symbol("test"));
|
| +// Test that we throw an error if an object is not passed as argument.
|
| +var non_objects = new Array(undefined, null, 1, -1, 0, 42.43);
|
| for (var key in non_objects) {
|
| - assertSame(non_objects[key], Object.freeze(non_objects[key]));
|
| + var exception = false;
|
| + try {
|
| + Object.freeze(non_objects[key]);
|
| + } catch(e) {
|
| + exception = true;
|
| + assertTrue(/Object.freeze called on non-object/.test(e));
|
| + }
|
| + assertTrue(exception);
|
| }
|
|
|
| -// Test that isFrozen always returns true for non-objects
|
| for (var key in non_objects) {
|
| - assertTrue(Object.isFrozen(non_objects[key]));
|
| + exception = false;
|
| + try {
|
| + Object.isFrozen(non_objects[key]);
|
| + } catch(e) {
|
| + exception = true;
|
| + assertTrue(/Object.isFrozen called on non-object/.test(e));
|
| + }
|
| + assertTrue(exception);
|
| }
|
|
|
| // Test normal data properties.
|
| @@ -335,64 +348,3 @@
|
| Object.freeze(obj);
|
| assertTrue(Object.isSealed(obj));
|
| assertTrue(Object.isFrozen(obj));
|
| -
|
| -
|
| -(function propertiesOfFrozenObjectNotFrozen() {
|
| - function Frozen() {}
|
| - Object.freeze(Frozen);
|
| - assertDoesNotThrow(function() { return new Frozen(); });
|
| - Frozen.prototype.prototypeExists = true;
|
| - assertTrue((new Frozen()).prototypeExists);
|
| -})();
|
| -
|
| -
|
| -(function frozenPrototypePreventsPUT() {
|
| - // A read-only property on the prototype should prevent a [[Put]] .
|
| - function Constructor() {}
|
| - Constructor.prototype.foo = 1;
|
| - Object.freeze(Constructor.prototype);
|
| - var obj = new Constructor();
|
| - obj.foo = 2;
|
| - assertSame(1, obj.foo);
|
| -})();
|
| -
|
| -
|
| -(function frozenFunctionSloppy() {
|
| - // Check that freezing a function works correctly.
|
| - var func = Object.freeze(function foo(){});
|
| - assertTrue(Object.isFrozen(func));
|
| - func.prototype = 42;
|
| - assertFalse(func.prototype === 42);
|
| - assertFalse(Object.getOwnPropertyDescriptor(func, "prototype").writable);
|
| -})();
|
| -
|
| -
|
| -(function frozenFunctionStrict() {
|
| - // Check that freezing a strict function works correctly.
|
| - var func = Object.freeze(function foo(){ "use strict"; });
|
| - assertTrue(Object.isFrozen(func));
|
| - func.prototype = 42;
|
| - assertFalse(func.prototype === 42);
|
| - assertFalse(Object.getOwnPropertyDescriptor(func, "prototype").writable);
|
| -})();
|
| -
|
| -
|
| -(function frozenArrayObject() {
|
| - // Check that freezing array objects works correctly.
|
| - var array = Object.freeze([0,1,2]);
|
| - assertTrue(Object.isFrozen(array));
|
| - array[0] = 3;
|
| - assertEquals(0, array[0]);
|
| - assertFalse(Object.getOwnPropertyDescriptor(array, "length").writable);
|
| -})();
|
| -
|
| -
|
| -(function frozenArgumentsObject() {
|
| - // Check that freezing arguments objects works correctly.
|
| - var args = Object.freeze((function(){ return arguments; })(0,1,2));
|
| - assertTrue(Object.isFrozen(args));
|
| - args[0] = 3;
|
| - assertEquals(0, args[0]);
|
| - assertFalse(Object.getOwnPropertyDescriptor(args, "length").writable);
|
| - assertFalse(Object.getOwnPropertyDescriptor(args, "callee").writable);
|
| -})();
|
|
|