diff options
Diffstat (limited to 'js/src/tests/ecma_5/extensions/function-caller-strict-cross-global.js')
-rw-r--r-- | js/src/tests/ecma_5/extensions/function-caller-strict-cross-global.js | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/js/src/tests/ecma_5/extensions/function-caller-strict-cross-global.js b/js/src/tests/ecma_5/extensions/function-caller-strict-cross-global.js new file mode 100644 index 000000000..45fd7b1b3 --- /dev/null +++ b/js/src/tests/ecma_5/extensions/function-caller-strict-cross-global.js @@ -0,0 +1,28 @@ +// |reftest| skip-if(!xulRuntime.shell) -- needs newGlobal() +// Any copyright is dedicated to the Public Domain. +// http://creativecommons.org/licenses/publicdomain/ + +var g1 = newGlobal(); +g1.evaluate("function f() { return f.caller; }"); + +var g2 = newGlobal(); +g2.f = g1.f; + +try +{ + g2.evaluate("function g() { 'use strict'; return f(); } g()"); + throw new Error("failed to throw"); +} +catch (e) +{ + assertEq(e.constructor.name, "TypeError", + "expected TypeError accessing strict .caller across globals, got " + + e); +} + +/******************************************************************************/ + +if (typeof reportCompare === "function") + reportCompare(true, true); + +print("Tests complete"); |