summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/global/eval-01.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
commit2aa4a82499d4becd2284cdb482213d541b8804dd (patch)
treeb80bf8bf13c3766139fbacc530efd0dd9d54394c /js/src/tests/non262/global/eval-01.js
parentInitial commit. (diff)
downloadfirefox-upstream.tar.xz
firefox-upstream.zip
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/tests/non262/global/eval-01.js')
-rw-r--r--js/src/tests/non262/global/eval-01.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/js/src/tests/non262/global/eval-01.js b/js/src/tests/non262/global/eval-01.js
new file mode 100644
index 0000000000..50bb95ffdb
--- /dev/null
+++ b/js/src/tests/non262/global/eval-01.js
@@ -0,0 +1,38 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+var a = 9;
+var global = this;
+
+function test() {
+ var a = 0;
+
+ // direct eval sees local a
+ assertEq(eval('a+1'), 1);
+ assertEq(eval('eval("a+1")'), 1);
+
+ // indirect: using a name other than 'eval'
+ var foo = eval;
+ assertEq(foo('a+1'), 10);
+ assertEq(eval('foo("a+1")'), 10); // outer eval is direct, inner foo("a+1") is indirect
+
+ // indirect: qualified method call
+ assertEq(this.eval("a+1"), 10);
+ assertEq(global.eval("a+1"), 10);
+ var obj = {foo: eval, eval: eval};
+ assertEq(obj.foo('a+1'), 10);
+ assertEq(obj.eval('a+1'), 10);
+ var name = "eval";
+ assertEq(obj[name]('a+1'), 10);
+ assertEq([eval][0]('a+1'), 10);
+
+ // indirect: not called from a CallExpression at all
+ assertEq(eval.call(undefined, 'a+1'), 10);
+ assertEq(eval.call(global, 'a+1'), 10);
+ assertEq(eval.apply(undefined, ['a+1']), 10);
+ assertEq(eval.apply(global, ['a+1']), 10);
+ assertEq(['a+1'].map(eval)[0], 10);
+}
+
+test();
+reportCompare(0, 0);