tor-browser

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

throw-during-nested-break.js (748B)


      1 var progress = "";
      2 
      3 function* wrapNoThrow() {
      4    let iter = {
      5        [Symbol.iterator]() { return this; },
      6        next() { return { value: 10, iter: false }; },
      7        return() { progress += " throw"; throw "nonsense"; }
      8    };
      9    for (const i of iter)
     10        yield i;
     11 }
     12 
     13 function foo() {
     14    try {
     15        var badIter = wrapNoThrow();
     16        loop: for (var i of badIter) {
     17            progress += "outerloop";
     18            try {
     19                for (i of [1,2,3]) {
     20                    progress += " innerloop";
     21                    break loop;
     22                }
     23            } catch (e) { progress += " BAD CATCH"; }
     24        }
     25    } catch (e) { progress += " goodcatch"; }
     26 }
     27 
     28 foo();
     29 assertEq(progress, "outerloop innerloop throw goodcatch");