1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/jit-test/tests/arguments/defaults-scoping.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,33 @@ 1.4 +var x = 'global'; 1.5 +function f(a=x) { // local variable x 1.6 + var x = 'local'; 1.7 + return a; 1.8 +} 1.9 +assertEq(f(), undefined); 1.10 + 1.11 +function g(f=function () { return ++x; }) { // closes on local variable x 1.12 + var x = 0; 1.13 + return f; 1.14 +} 1.15 +var gf = g(); 1.16 +assertEq(gf(), 1); 1.17 +assertEq(gf(), 2); 1.18 +gf = g(); 1.19 +assertEq(gf(), 1); 1.20 + 1.21 +function h(f=function (s) { return eval(s); }) { // closes on local scope 1.22 + var x = 'hlocal'; 1.23 + return f; 1.24 +} 1.25 +var hf = h(); 1.26 +assertEq(hf('x'), 'hlocal'); 1.27 +assertEq(hf('f'), hf); 1.28 +assertEq(hf('var x = 3; x'), 3); 1.29 + 1.30 +function j(expr, v=eval(expr)) { 1.31 + return v; 1.32 +} 1.33 +assertEq(j("expr"), "expr"); 1.34 +assertEq(j("v"), undefined); 1.35 +assertEq(j("Array"), Array); 1.36 +assertEq(j("arguments").length, 1);