Bug 1310744: Regression test. r?nbp draft
authorEmilio Cobos Álvarez <ecoal95@gmail.com>
Wed, 19 Oct 2016 21:21:40 +0200
changeset 427492 3028b948769f63513f03019663479cba21e86136
parent 427491 6d74ed024323f088aa7f862621a14a722306159e
child 427493 8dcb4a587c264177ae5770e95ab4689763861166
push id33030
push userbmo:ecoal95@gmail.com
push dateThu, 20 Oct 2016 13:02:22 +0000
reviewersnbp
bugs1310744
milestone52.0a1
Bug 1310744: Regression test. r?nbp MozReview-Commit-ID: 9R2JoooOtkc
js/src/tests/ecma_5/Array/frozen-dense-array.js
new file mode 100644
--- /dev/null
+++ b/js/src/tests/ecma_5/Array/frozen-dense-array.js
@@ -0,0 +1,41 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ * Author: Emilio Cobos Álvarez <ecoal95@gmail.com>
+ */
+var BUGNUMBER = 1310744;
+var summary = "Dense array properties shouldn't be modified when they're frozen";
+
+print(BUGNUMBER + ": " + summary);
+
+var a = Object.freeze([4, 5, 1]);
+var methods = [
+  'reverse',
+  'shift',
+  'pop',
+];
+
+assertThrowsInstanceOf(() => a.reverse(), TypeError);
+assertThrowsInstanceOf(() => a.shift(), TypeError);
+assertThrowsInstanceOf(() => a.unshift(0), TypeError);
+assertThrowsInstanceOf(() => a.sort(function() {}), TypeError);
+assertThrowsInstanceOf(() => a.pop(), TypeError);
+assertThrowsInstanceOf(() => a.fill(0), TypeError);
+assertThrowsInstanceOf(() => a.splice(0, 1, 1), TypeError);
+assertThrowsInstanceOf(() => a.push("foo"), TypeError);
+assertThrowsInstanceOf(() => { "use strict"; a.length = 5; }, TypeError);
+assertThrowsInstanceOf(() => { "use strict"; delete a[0]; }, TypeError);
+
+// Shouldn't throw, since this is not strict mode, but shouldn't change the
+// value of the property.
+a.length = 5;
+assertEq(delete a[0], false);
+
+
+assertEq(a.length, 3);
+assertEq(a[0], 4);
+assertEq(a[1], 5);
+assertEq(a[2], 1);
+
+if (typeof reportCompare === "function")
+  reportCompare(true, true);