michael@0: function testFuncStmt1() { michael@0: var g = 3; michael@0: function f(b) { michael@0: if (b) { michael@0: function g() { return 42 } michael@0: assertEq(g(), 42); michael@0: } michael@0: } michael@0: f(true); michael@0: } michael@0: testFuncStmt1(); michael@0: michael@0: function testFuncStmt2() { michael@0: var g = 3; michael@0: (function(b) { michael@0: if (b) { michael@0: function g() { return 42 } michael@0: function f() { assertEq(g(), 42); } michael@0: f(); michael@0: } michael@0: })(true); michael@0: } michael@0: testFuncStmt2(); michael@0: michael@0: function testEval1() { michael@0: var g = 3; michael@0: function f() { michael@0: eval("var g = 42"); michael@0: assertEq(g, 42); michael@0: } michael@0: f(); michael@0: } michael@0: testEval1(); michael@0: michael@0: function testEval2() { michael@0: var g = 3; michael@0: (function() { michael@0: eval("var g = 42"); michael@0: function f() { michael@0: assertEq(g, 42); michael@0: } michael@0: f(); michael@0: })(); michael@0: } michael@0: testEval2(); michael@0: michael@0: function testWith1() { michael@0: var g = 3; michael@0: function f() { michael@0: with ({g:42}) { michael@0: assertEq(g, 42); michael@0: } michael@0: } michael@0: f(); michael@0: } michael@0: testWith1(); michael@0: michael@0: function testWith2() { michael@0: var g = 3; michael@0: with ({g:42}) { michael@0: function f() { michael@0: assertEq(g, 42); michael@0: } michael@0: } michael@0: f(); michael@0: } michael@0: testWith2();