29 lines
616 B
JavaScript
29 lines
616 B
JavaScript
description(
|
|
"Tests that DFG getter caching does not break the world if the getter throws an exception."
|
|
);
|
|
|
|
function foo(o) {
|
|
return o.f;
|
|
}
|
|
|
|
function bar(o) {
|
|
try {
|
|
return "Returned result: " + foo(o);
|
|
} catch (e) {
|
|
return "Threw exception: " + e;
|
|
}
|
|
}
|
|
|
|
for (var i = 0; i < 200; ++i) {
|
|
var o = new Object();
|
|
o.__defineGetter__("f", function(){
|
|
if (i < 100)
|
|
return i;
|
|
else
|
|
throw "Oh hi, I'm an exception!";
|
|
});
|
|
shouldBe("bar(o)", i < 100 ? "\"Returned result: " + i + "\"" : "\"Threw exception: Oh hi, I'm an exception!\"");
|
|
}
|
|
|
|
|