Bug 1098412 - Remove and update tests that use __iterator__. r?luke draft
authorMasatoshi Kimura <VYV03354@nifty.ne.jp>
Thu, 24 Aug 2017 22:25:25 +0900
changeset 655309 93c97025e0b6a68214b0e2c72f3feb582d55e6d5
parent 655242 9957a25209908aaea4bfd4915c3201f006b29b6e
child 655310 bfba5ae2c7b74157ebaecfecd241bb473a0fc494
push id76825
push userVYV03354@nifty.ne.jp
push dateTue, 29 Aug 2017 20:26:22 +0000
reviewersluke
bugs1098412
milestone57.0a1
Bug 1098412 - Remove and update tests that use __iterator__. r?luke MozReview-Commit-ID: 7mxZYAceiuN
devtools/client/webconsole/test/browser_webconsole_bug_632347_iterators_generators.js
devtools/client/webconsole/test/test-bug-632347-iterators-generators.html
js/src/jit-test/tests/auto-regress/bug1343245.js
js/src/jit-test/tests/basic/bug684922.js
js/src/jit-test/tests/basic/bug885648.js
js/src/jit-test/tests/basic/testCustomIterator.js
js/src/jit-test/tests/debug/Frame-onStep-06.js
js/src/jit-test/tests/ion/bug754718.js
js/src/tests/js1_7/extensions/basic-for-each.js
js/src/tests/js1_7/extensions/basic-for-in.js
js/src/tests/js1_7/extensions/regress-346021.js
js/src/tests/js1_7/extensions/regress-354945-01.js
js/src/tests/js1_7/extensions/regress-354945-02.js
--- a/devtools/client/webconsole/test/browser_webconsole_bug_632347_iterators_generators.js
+++ b/devtools/client/webconsole/test/browser_webconsole_bug_632347_iterators_generators.js
@@ -23,46 +23,31 @@ function consoleOpened(HUD) {
   tmp.addDebuggerToGlobal(tmp);
   let dbg = new tmp.Debugger();
 
   let jsterm = HUD.jsterm;
   let win = content.wrappedJSObject;
   let dbgWindow = dbg.addDebuggee(content);
   let container = win._container;
 
-  // Make sure autocomplete does not walk through iterators and generators.
+  // Make sure autocomplete does not walk through generators.
   let result = container.gen1.next();
   let completion = JSPropertyProvider(dbgWindow, null, "_container.gen1.");
   isnot(completion.matches.length, 0, "Got matches for gen1");
 
   is(result + 1, container.gen1.next(), "gen1.next() did not execute");
 
   result = container.gen2.next().value;
 
   completion = JSPropertyProvider(dbgWindow, null, "_container.gen2.");
   isnot(completion.matches.length, 0, "Got matches for gen2");
 
   is((result / 2 + 1) * 2, container.gen2.next().value,
      "gen2.next() did not execute");
 
-  result = container.iter1.next();
-  is(result[0], "foo", "iter1.next() [0] is correct");
-  is(result[1], "bar", "iter1.next() [1] is correct");
-
-  completion = JSPropertyProvider(dbgWindow, null, "_container.iter1.");
-  isnot(completion.matches.length, 0, "Got matches for iter1");
-
-  result = container.iter1.next();
-  is(result[0], "baz", "iter1.next() [0] is correct");
-  is(result[1], "baaz", "iter1.next() [1] is correct");
-
-  let dbgContent = dbg.makeGlobalObjectReference(content);
-  completion = JSPropertyProvider(dbgContent, null, "_container.iter2.");
-  isnot(completion.matches.length, 0, "Got matches for iter2");
-
   completion = JSPropertyProvider(dbgWindow, null, "window._container.");
   ok(completion, "matches available for window._container");
   ok(completion.matches.length, "matches available for window (length)");
 
   dbg.removeDebuggee(content);
   jsterm.clearOutput();
 
   jsterm.execute("window._container", (msg) => {
@@ -71,14 +56,12 @@ function consoleOpened(HUD) {
     EventUtils.synthesizeMouse(anchor, 2, 2, {}, HUD.iframeWindow);
   });
 }
 
 function testVariablesView(aWebconsole, aEvent, aView) {
   findVariableViewProperties(aView, [
     { name: "gen1", isGenerator: true },
     { name: "gen2", isGenerator: true },
-    { name: "iter1", isIterator: true },
-    { name: "iter2", isIterator: true },
   ], { webconsole: aWebconsole }).then(function () {
     executeSoon(finishTest);
   });
 }
--- a/devtools/client/webconsole/test/test-bug-632347-iterators-generators.html
+++ b/devtools/client/webconsole/test/test-bug-632347-iterators-generators.html
@@ -1,56 +1,29 @@
 <!DOCTYPE html>
 <html lang="en">
   <head>
     <meta charset="utf-8">
-    <title>Web Console test for bug 632347 - iterators and generators</title>
+    <title>Web Console test for bug 632347 - generators</title>
     <!-- Any copyright is dedicated to the Public Domain.
          http://creativecommons.org/publicdomain/zero/1.0/ -->
 <script type="application/javascript;version=1.8">
 (function(){
 function genFunc() {
   var a = 5;
   while (a < 10) {
     yield a++;
   }
 }
 
 window._container = {};
 
 _container.gen1 = genFunc();
 _container.gen1.next();
 
-var obj = { foo: "bar", baz: "baaz", hay: "stack" };
-_container.iter1 = Iterator(obj);
-
-function Range(low, high) {
-  this.low = low;
-  this.high = high;
-}
-
-function RangeIterator(range) {
-  this.range = range;
-  this.current = this.range.low;
-}
-
-RangeIterator.prototype.next = function() {
-  if (this.current > this.range.high) {
-    throw StopIteration;
-  } else {
-    return this.current++;
-  }
-}
-
-Range.prototype.__iterator__ = function() {
-  return new RangeIterator(this);
-}
-
-_container.iter2 = new Range(3, 15);
-
-_container.gen2 = (function* () { for (let i in _container.iter2) yield i * 2; })();
+_container.gen2 = (function* () { for (let i = 3; i <= 15; ++i) yield i * 2; })();
 })();
 </script>
   </head>
   <body>
-    <p>Web Console test for bug 632347 - iterators and generators.</p>
+    <p>Web Console test for bug 632347 - generators.</p>
   </body>
 </html>
deleted file mode 100644
--- a/js/src/jit-test/tests/auto-regress/bug1343245.js
+++ /dev/null
@@ -1,7 +0,0 @@
-// |jit-test| error:TypeError
-var o = {
-    __iterator__: function() {
-        return {};
-    }
-};
-for (var j in o) {}
deleted file mode 100644
--- a/js/src/jit-test/tests/basic/bug684922.js
+++ /dev/null
@@ -1,6 +0,0 @@
-// |jit-test| error: InternalError
-var op = Object.prototype;
-op.b = op;
-op.__iterator__ = Iterator;
-for (var c in {}) {}
-
deleted file mode 100644
--- a/js/src/jit-test/tests/basic/bug885648.js
+++ /dev/null
@@ -1,9 +0,0 @@
-gczeal(4,1);
-var iterable = {persistedProp: 17};
-iterable.__iterator__ = function() {
-    yield ["foo", 2];
-    yield ["bar", 3];
-};
-var it = Iterator(iterable);
-assertEq(it.next().toString(), "foo,2");
-assertEq(it.next().toString(), "bar,3");
deleted file mode 100644
--- a/js/src/jit-test/tests/basic/testCustomIterator.js
+++ /dev/null
@@ -1,26 +0,0 @@
-function my_iterator_next() {
-    if (this.i == 10) {
-        this.i = 0;
-        throw this.StopIteration;
-    }
-    return this.i++;
-}
-function testCustomIterator() {
-    var o = {
-        __iterator__: function () {
-            return {
-                i: 0,
-                next: my_iterator_next,
-                StopIteration: StopIteration
-            };
-        }
-    };
-    var a=[];
-    for (var k = 0; k < 100; k += 10) {
-        for(var j in o) {
-            a[k + (j >> 0)] = j*k;
-        }
-    }
-    return a.join();
-}
-assertEq(testCustomIterator(), "0,0,0,0,0,0,0,0,0,0,0,10,20,30,40,50,60,70,80,90,0,20,40,60,80,100,120,140,160,180,0,30,60,90,120,150,180,210,240,270,0,40,80,120,160,200,240,280,320,360,0,50,100,150,200,250,300,350,400,450,0,60,120,180,240,300,360,420,480,540,0,70,140,210,280,350,420,490,560,630,0,80,160,240,320,400,480,560,640,720,0,90,180,270,360,450,540,630,720,810");
--- a/js/src/jit-test/tests/debug/Frame-onStep-06.js
+++ b/js/src/jit-test/tests/debug/Frame-onStep-06.js
@@ -43,24 +43,16 @@ check("x != 0");
 check("x & 1");
 check("x | 1");
 check("x ^ 1");
 check("~x");
 check("x << 1");
 check("x >> 1");
 check("x >>> 1");
 
-g.eval("function lastStep() { throw StopIteration; }");
-g.eval("function emptyIterator() { debugger; log += 'x'; return { next: lastStep }; }");
-g.eval("var customEmptyIterator = { __iterator__: emptyIterator };");
-g.log = '';
-g.eval("for (i in customEmptyIterator);\n" +
-       "log += 'y';\n");
-assertEq(g.log, 'dxsy');
-
 g.eval("var getter = { get x() { debugger; return log += 'x'; } }");
 check("getter.x");
 
 g.eval("var setter = { set x(v) { debugger; return log += 'x'; } }");
 check("setter.x = 1");
 
 g.eval("Object.defineProperty(this, 'thisgetter', { get: function() { debugger; log += 'x'; }});");
 check("thisgetter");
deleted file mode 100644
--- a/js/src/jit-test/tests/ion/bug754718.js
+++ /dev/null
@@ -1,8 +0,0 @@
-// |jit-test| error: TypeError; need-for-each
-
-(function() {
-  var a, b;
-  for each (a in [{}, {__iterator__: function(){}}]) 
-    for (b in a) { }
-})();
-
--- a/js/src/tests/js1_7/extensions/basic-for-each.js
+++ b/js/src/tests/js1_7/extensions/basic-for-each.js
@@ -37,48 +37,16 @@ try
   for (var i in iterable)
   {
     if (i != "persistedProp")
       throw "no persistedProp!";
     if (iterable[i] != 17)
       throw "iterable[\"persistedProp\"] == 17";
   }
 
-  var keys = ["foo", "bar", "baz"];
-  var vals = [6, 5, 14];
-
-  iterable.__iterator__ =
-    function(keysOnly)
-    {
-      var gen =
-      function()
-      {
-	for (var i = 0; i < keys.length; i++)
-	{
-	  if (keysOnly)
-	    yield keys[i];
-	  else
-	    yield [keys[i], vals[i]];
-	}
-      };
-      return gen();
-    };
-
-  // for each sets keysOnly==false
-  var index = 0;
-  for each (var v in iterable)
-  {
-    if (!Array_equals(v, [keys[index], vals[index]]))
-      throw "for-each iteration failed on index=" + index + "!";
-    index++;
-  }
-  if (index != keys.length)
-    throw "not everything iterated!  index=" + index +
-      ", keys.length=" + keys.length;
-
   if (iterable.persistedProp != 17)
     throw "iterable.persistedProp not persisted!";
 }
 catch (e)
 {
   failed = e;
 }
 
--- a/js/src/tests/js1_7/extensions/basic-for-in.js
+++ b/js/src/tests/js1_7/extensions/basic-for-in.js
@@ -25,48 +25,16 @@ try
   for (var i in iterable)
   {
     if (i != "persistedProp")
       throw "no persistedProp!";
     if (iterable[i] != 17)
       throw "iterable[\"persistedProp\"] == 17";
   }
 
-  var keys = ["foo", "bar", "baz"];
-  var vals = [6, 5, 14];
-
-  iterable.__iterator__ =
-    function(keysOnly)
-    {
-      var gen =
-      function()
-      {
-	for (var i = 0; i < keys.length; i++)
-	{
-	  if (keysOnly)
-	    yield keys[i];
-	  else
-	    yield [keys[i], vals[i]];
-	}
-      };
-      return gen();
-    };
-
-  // for in sets keysOnly==true
-  var index = 0;
-  for (var k in iterable)
-  {
-    if (k != keys[index])
-      throw "for-in iteration failed on keys[\"" + index + "\"]";
-    index++;
-  }
-  if (index != keys.length)
-    throw "not everything iterated!  index=" + index +
-      ", keys.length=" + keys.length;
-
   if (iterable.persistedProp != 17)
     throw "iterable.persistedProp not persisted!";
 }
 catch (e)
 {
   failed = e;
 }
 
deleted file mode 100644
--- a/js/src/tests/js1_7/extensions/regress-346021.js
+++ /dev/null
@@ -1,45 +0,0 @@
-/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-//-----------------------------------------------------------------------------
-var BUGNUMBER = 346021;
-var summary = 'Implementing __iterator__ as generator';
-var actual = '';
-var expect = '';
-
-
-//-----------------------------------------------------------------------------
-test();
-//-----------------------------------------------------------------------------
-
-function test()
-{
-  enterFunc ('test');
-  printBugNumber(BUGNUMBER);
-  printStatus (summary);
- 
-  var o = { __iterator__: function () { print(12); yield 42; } };
-
-  expect = 42;
-  actual = 0;
- 
-  for (let i in Iterator(o))
-  {
-    actual = i;
-  }
-
-  reportCompare(expect, actual, summary);
-
-  actual = 0;
-
-  for (let i in o)
-  {
-    actual = i; // this doesn't iterate 42
-  }
-
-  reportCompare(expect, actual, summary);
-
-  exitFunc ('test');
-}
deleted file mode 100644
--- a/js/src/tests/js1_7/extensions/regress-354945-01.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-//-----------------------------------------------------------------------------
-var BUGNUMBER = 354945;
-var summary = 'Do not crash with new Iterator';
-var expect = 'TypeError: trap __iterator__ for ({__iterator__:(function(){ })}) returned a primitive value';
-var actual;
-
-
-//-----------------------------------------------------------------------------
-test();
-//-----------------------------------------------------------------------------
-
-function test()
-{
-  enterFunc ('test');
-  printBugNumber(BUGNUMBER);
-  printStatus (summary);
-
-  try {
-    var obj = {};
-    obj.__iterator__ = function(){ };
-    for(t in (new Iterator(obj))) { }
-  } catch (ex) {
-    actual = ex.toString();
-  }
-
-  reportCompare(expect, actual, summary);
-
-  exitFunc ('test');
-}
deleted file mode 100644
--- a/js/src/tests/js1_7/extensions/regress-354945-02.js
+++ /dev/null
@@ -1,38 +0,0 @@
-/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-//-----------------------------------------------------------------------------
-var BUGNUMBER = 354945;
-var summary = 'Do not crash with new Iterator';
-var actual = 'No Crash';
-var expect = 'No Crash';
-
-
-//-----------------------------------------------------------------------------
-test();
-//-----------------------------------------------------------------------------
-
-function test()
-{
-  enterFunc ('test');
-  printBugNumber(BUGNUMBER);
-  printStatus (summary);
- 
-  expect = 'TypeError: trap __iterator__ for ({__iterator__:(function(){ })}) returned a primitive value';
-  var obj = {};
-  obj.__iterator__ = function(){ };
-  try
-  {
-    for(t in (obj)) { }
-  }
-  catch(ex)
-  {
-    actual = ex + '';
-  }
-
-  reportCompare(expect, actual, summary);
-
-  exitFunc ('test');
-}