Bug 1486584 - Update test262 sort-tonumber.js. r=jorendorff
authorAshley Hauck <khyperia@mozilla.com>
Mon, 27 Aug 2018 13:24:00 +0300
changeset 491407 28b6adbb3b4c9d076a1b93590cf12ffe22795ecc
parent 491406 72614ed1b56fc7afcd3844557b08fd20a9aa3b89
child 491408 211b070bac735ff9301f80af489a045a7f644b60
push id1815
push userffxbld-merge
push dateMon, 15 Oct 2018 10:40:45 +0000
treeherdermozilla-release@18d4c09e9378 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjorendorff
bugs1486584
milestone63.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1486584 - Update test262 sort-tonumber.js. r=jorendorff
js/src/tests/non262/TypedArray/sort-tonumber.js
js/src/tests/test262/built-ins/TypedArray/prototype/sort/sort-tonumber.js
deleted file mode 100644
--- a/js/src/tests/non262/TypedArray/sort-tonumber.js
+++ /dev/null
@@ -1,29 +0,0 @@
-var BUGNUMBER = 230216;
-var summary = 'Ensure ToNumber is called on the result of compareFn inside TypedArray.prototype.sort';
-
-printBugNumber(BUGNUMBER);
-printStatus(summary);
-
-var ta = new Int32Array(4);
-var ab = ta.buffer;
-
-var called = false;
-try {
-  ta.sort(function(a, b) {
-    // IsDetachedBuffer is checked right after calling the compare function.
-    // The order of operations is:
-    // var tmp = compareFn(a, b)
-    // var res = ToNumber(tmp)
-    // if IsDetachedBuffer, throw TypeError
-    // [...]
-    // inspect `res` to determine sorting (calling ToNumber in the process)
-    // So, detach the ArrayBuffer to throw, to make sure we're actually calling ToNumber immediately (as spec'd)
-    detachArrayBuffer(ab);
-    return {
-      [Symbol.toPrimitive]() { called = true; }
-    };
-  });
-} catch (e) { }
-
-if (typeof reportCompare === "function")
-    reportCompare(true, called);
new file mode 100644
--- /dev/null
+++ b/js/src/tests/test262/built-ins/TypedArray/prototype/sort/sort-tonumber.js
@@ -0,0 +1,39 @@
+// Copyright (C) 2018 Mozilla Corporation. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+esid: sec-%typedarray%.prototype.sort
+description: The result of compareFn is immediately passed through ToNumber
+info: |
+  22.2.3.26 %TypedArray%.prototype.sort ( comparefn )
+
+  ...
+  2. If comparefn is not undefined, then
+    a. Let v be ? ToNumber(? Call(comparefn, undefined, « x, y »)).
+    b. If IsDetachedBuffer(buffer) is true, throw a TypeError exception.
+    ...
+  ...
+includes: [testTypedArray.js, detachArrayBuffer.js]
+features: [TypedArray]
+---*/
+
+testWithTypedArrayConstructors(function(TA) {
+  var ta = new TA(4);
+  var ab = ta.buffer;
+
+  var called = false;
+  assert.throws(TypeError, function() {
+    ta.sort(function(a, b) {
+      // IsDetachedBuffer is checked right after calling comparefn.
+      // So, detach the ArrayBuffer to cause sort to throw, to make sure we're actually calling ToNumber immediately (as spec'd)
+      // (a possible bug is to wait until the result is inspected to call ToNumber, rather than immediately)
+      $DETACHBUFFER(ab);
+      return {
+        [Symbol.toPrimitive]() { called = true; }
+      };
+    });
+  });
+
+  assert.sameValue(true, called);
+});
+
+reportCompare(0, 0);