summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/arguments/defaults-bound-to-function.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/arguments/defaults-bound-to-function.js')
-rw-r--r--js/src/jit-test/tests/arguments/defaults-bound-to-function.js43
1 files changed, 43 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/arguments/defaults-bound-to-function.js b/js/src/jit-test/tests/arguments/defaults-bound-to-function.js
new file mode 100644
index 000000000..28a1c3b45
--- /dev/null
+++ b/js/src/jit-test/tests/arguments/defaults-bound-to-function.js
@@ -0,0 +1,43 @@
+load(libdir + "asserts.js");
+
+function f(a=42) {
+ return a;
+ function a() { return 19; }
+}
+assertEq(f()(), 19);
+function h(a=b, b=43) {
+ return [a, b];
+ function b() { return 42; }
+}
+// TDZ
+assertThrowsInstanceOf(h, ReferenceError);
+function i(b=FAIL) {
+ function b() {}
+}
+assertThrowsInstanceOf(i, ReferenceError);
+i(42);
+function j(a=(b=42), b=8) {
+ return b;
+ function b() { return 43; }
+}
+// TDZ
+assertThrowsInstanceOf(j, ReferenceError);
+function k(a=(b=42), b=8) {
+ return b;
+ function a() { return 43; }
+}
+// TDZ
+assertThrowsInstanceOf(k, ReferenceError);
+function l(a=8, b=a) {
+ return b;
+ function a() { return 42; }
+}
+assertEq(l(), 8);
+function m([a, b]=[1, 2], c=a) {
+ function a() { return 42; }
+ assertEq(typeof a, "function");
+ assertEq(a(), 42);
+ assertEq(b, 2);
+ assertEq(c, 1);
+}
+m();