Source code

Revision control

Copy as Markdown

Other Tools

load(libdir + "evalInFrame.js");
// Test that computing the implicit 'this' in calls for D.F.eval is as if it
// were a pasted-in eval.
var G = this;
function globalFun(check, expectedThis) {
if (check)
assertEq(this, expectedThis);
return this;
}
var expectedGlobalFunThis = globalFun(false);
evalInFrame(0, "globalFun(true, expectedGlobalFunThis)");
(function testInnerFun() {
function innerFun(check, expectedThis) {
if (check)
assertEq(this, expectedThis);
return this;
}
var expectedInnerFunThis = innerFun(false);
evalInFrame(0, "innerFun(true, expectedInnerFunThis)");
return [innerFun, expectedInnerFunThis]; // To prevent the JIT from optimizing out vars.
})();
(function testWith() {
var o = {
withFun: function withFun(check, expectedThis) {
if (check)
assertEq(this, expectedThis);
return this;
}
};
with (o) {
var expectedWithFunThis = withFun(false);
evalInFrame(0, "withFun(true, expectedWithFunThis)");
}
})();