js/src/tests/ecma_5/extensions/function-caller-skips-eval-frames.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:7c93d0b39a5f
1 // Any copyright is dedicated to the Public Domain.
2 // http://creativecommons.org/licenses/publicdomain/
3
4 function innermost() { return arguments.callee.caller; }
5 function nest() { return eval("innermost();"); }
6 function nest2() { return nest(); }
7
8 assertEq(nest2(), nest);
9
10 var innermost = function innermost() { return arguments.callee.caller.caller; };
11
12 assertEq(nest2(), nest2);
13
14 function nestTwice() { return eval("eval('innermost();');"); }
15 var nest = nestTwice;
16
17 assertEq(nest2(), nest2);
18
19 function innermostEval() { return eval("arguments.callee.caller"); }
20 var innermost = innermostEval;
21
22 assertEq(nest2(), nestTwice);
23
24 function innermostEvalTwice() { return eval('eval("arguments.callee.caller");'); }
25 var innermost = innermostEvalTwice;
26
27 assertEq(nest2(), nestTwice);
28
29 /******************************************************************************/
30
31 if (typeof reportCompare === "function")
32 reportCompare(true, true);
33
34 print("Tests complete");

mercurial