description( | |
"Tests that a redundant load of a captured variable that was proven to be a constant doesn't crash the compiler." | |
); | |
function foo(o, p) { | |
var x = o.f; | |
if (p) | |
return function() { return x; } | |
else { | |
var a = x; | |
var b = x; | |
return [a, b]; | |
} | |
} | |
var o = {f:function() { return 32; }}; | |
for (var i = 0; i < 100; ++i) { | |
var expected; | |
if (i % 2) | |
expected = "\"function () { return x; }\""; | |
else | |
expected = "\"function () { return 32; },function () { return 32; }\""; | |
shouldBe("\"\" + foo(o, i % 2)", expected); | |
} |