tor-browser

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

throw-during-break.js (645B)


      1 var whoCaught = "nobody"
      2 
      3 function* wrapNoThrow() {
      4    let iter = {
      5      [Symbol.iterator]() {
      6        return this;
      7      },
      8      next() {
      9        return { value: 10, done: false };
     10      },
     11      return() { throw "nonsense"; }
     12    };
     13    for (const i of iter)
     14      yield i;
     15  }
     16 function foo() {
     17    try {
     18 l2:
     19 for (j of wrapNoThrow()) {
     20     try {
     21 	for (i of [1,2,3]) {
     22 	    try {
     23 		break l2;
     24 	    } catch(e) {
     25 		whoCaught = "inner"
     26 	    }
     27 	}
     28     } catch (e) {
     29 	whoCaught = "inner2"
     30     }
     31 }
     32    } catch (e) {
     33 whoCaught = "correct"
     34    }
     35 }
     36 
     37 try {
     38    foo();
     39 } catch (e) { whoCaught = "outer" }
     40 
     41 
     42 assertEq(whoCaught, "correct");