tor-browser

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

semantics-09.js (503B)


      1 // The LHS of a for-of loop is not evaluated until after the .next() method returns.
      2 
      3 var s;
      4 function f() {
      5    s += 'f';
      6    return {};
      7 }
      8 
      9 // Test 1: .next() throws StopIteration right away. f is never called.
     10 s = '';
     11 for (f().x of [])
     12    s += '.';
     13 assertEq(s, '');
     14 
     15 // Test 2: check proper interleaving of f calls, iterator.next() calls, and the loop body.
     16 function* g() {
     17    s += 'g';
     18    yield 0;
     19    s += 'g';
     20    yield 1;
     21    s += 'g';
     22 }
     23 for (f().x of g())
     24    s += '.';
     25 assertEq(s, 'gf.gf.g');