Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
1 // Test that we can save stacks with direct and indirect eval calls.
3 const directEval = (function iife() {
4 return eval("(" + function evalFrame() {
5 return saveStack();
6 } + "())");
7 }());
9 assertEq(directEval.source.contains("> eval"), true);
10 assertEq(directEval.functionDisplayName, "evalFrame");
12 assertEq(directEval.parent.source.contains("> eval"), true);
14 assertEq(directEval.parent.parent.source.contains("> eval"), false);
15 assertEq(directEval.parent.parent.functionDisplayName, "iife");
17 assertEq(directEval.parent.parent.parent.source.contains("> eval"), false);
19 assertEq(directEval.parent.parent.parent.parent, null);
21 const lave = eval;
22 const indirectEval = (function iife() {
23 return lave("(" + function evalFrame() {
24 return saveStack();
25 } + "())");
26 }());
28 assertEq(indirectEval.source.contains("> eval"), true);
29 assertEq(indirectEval.functionDisplayName, "evalFrame");
31 assertEq(indirectEval.parent.source.contains("> eval"), true);
33 assertEq(indirectEval.parent.parent.source.contains("> eval"), false);
34 assertEq(indirectEval.parent.parent.functionDisplayName, "iife");
36 assertEq(indirectEval.parent.parent.parent.source.contains("> eval"), false);
38 assertEq(indirectEval.parent.parent.parent.parent, null);