michael@0: michael@0: /* Handle recompilation on undefined variables. */ michael@0: michael@0: function local() michael@0: { michael@0: var x; michael@0: x++; michael@0: assertEq(x, NaN); michael@0: x = 0; michael@0: } michael@0: local(); michael@0: michael@0: function name(v) michael@0: { michael@0: var x; michael@0: with (v) { michael@0: x++; michael@0: assertEq(x, NaN); michael@0: } michael@0: assertEq(x, NaN); michael@0: x = 0; michael@0: } michael@0: name({}); michael@0: michael@0: function letname(v) michael@0: { michael@0: if (v) { michael@0: let x; michael@0: with (v) { michael@0: x = "twelve"; michael@0: } michael@0: assertEq(x, "twelve"); michael@0: } michael@0: } michael@0: letname({}); michael@0: michael@0: function upvar() michael@0: { michael@0: var x; michael@0: function inner() { michael@0: x++; michael@0: assertEq(x, NaN); michael@0: } michael@0: inner(); michael@0: } michael@0: upvar(); michael@0: michael@0: var x; michael@0: var y; michael@0: michael@0: function global() michael@0: { michael@0: x++; michael@0: assertEq(x, NaN); michael@0: var z = 2 + y; michael@0: assertEq(z, NaN); michael@0: } michael@0: global(); michael@0: michael@0: x = 0; michael@0: y = 0;