Source code

Revision control

Copy as Markdown

Other Tools

var g = newGlobal({newCompartment: true});
g.parent = this;
g.eval("new Debugger(parent).onExceptionUnwind = function () {};");
function* wrapNoThrow() {
let iter = {
[Symbol.iterator]() {
return this;
},
next() {
return { value: 10, done: false };
},
return() { return "invalid return value" }
};
for (const i of iter)
yield i;
}
function foo() {
for (var i of [1,2,3]) {
for (var j of [4,5,6]) {
try {
for (const i of wrapNoThrow()) break;
} catch (e) {}
}
for (var j of [7,8,9]) {
}
}
}
for (var i = 0; i < 10; i++) {
try {
foo();
} catch(e) {}
}