diff -r 000000000000 -r 6474c204b198 js/src/jit-test/tests/arguments/defaults-evaluation-order.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/js/src/jit-test/tests/arguments/defaults-evaluation-order.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,27 @@ +function f1(a, bIs, cIs, dIs, b=a, c=d, d=5) { + assertEq(a, 1); + assertEq(b, bIs); + assertEq(c, cIs); + assertEq(d, dIs); +} +f1(1, 1, undefined, 5); +f1(1, 42, undefined, 5, 42); +f1(1, 42, 43, 5, 42, 43); +f1(1, 42, 43, 44, 42, 43, 44); +function f2(a=[]) { return a; } +assertEq(f2() !== f2(), true); +function f3(a=function () {}) { return a; } +assertEq(f3() !== f3(), true); +function f4(a=Date) { return a; } +assertEq(f4(), Date); +Date = 0; +assertEq(f4(), 0); +function f5(x=FAIL()) {}; // don't throw +var n = 0; +function f6(a=n++) {} +assertEq(n, 0); +function f7([a, b], A=a, B=b) { + assertEq(A, a); + assertEq(B, b); +} +f7([0, 1]);