tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

next-shenanigans.js (684B)


      1 // Test for-of with iter.next and monkeypatching.
      2 
      3 function* g(n) { for (var i=0; i<n; i++) yield i; }
      4 var GeneratorObjectPrototype = Object.getPrototypeOf(g).prototype;
      5 var GeneratorObjectPrototype_next = GeneratorObjectPrototype.next;
      6 
      7 // Monkeypatch next on an iterator.
      8 var inner = g(20);
      9 var n = 0;
     10 for (let x of inner) {
     11    assertEq(x, n++);
     12    if (n == 1) {
     13        inner.next = function() { throw 'not reached'; };
     14    }
     15 }
     16 assertEq(n, 20);
     17 
     18 // Monkeypatch next on the prototype.
     19 var inner = g(20);
     20 var n = 0;
     21 for (let x of inner) {
     22    assertEq(x, n++);
     23    if (n == 1) {
     24        GeneratorObjectPrototype.next = function() { throw 'not reached'; };
     25    }
     26 }
     27 assertEq(n, 20);