var causeOSI = true; | |
function rec(x, self) { | |
if (x === 0 || x !== x) { | |
if (causeOSI) { | |
causeOSI = false; | |
self(NaN, self) | |
causeOSI = true; | |
} | |
return; | |
} | |
self(x - 1, self); | |
} | |
// Use enough iterations to type infer the script. | |
causeOSI = false; | |
for (var i = 0; i < 20; ++i) | |
rec(1, rec); | |
causeOSI = true; | |
rec(2, rec) |