// aaa is initially undefined. Make sure it's set to the // correct value - we have to store the type tag, even though // its known type is int32. var aaa; function f() { function g(x) { if (x) aaa = 22; } g(10); function h() { aaa = 22; } for (var i=0; i<70; i++) { h(); } assertEq(aaa, 22); } f(); x = 0; function setX(i) { x = i; } for (var i=0; i<70; i++) setX(i); assertEq(x, 69); y = 3.14; y = true; y = []; function setY(arg) { y = arg; } for (var i=0; i<70; i++) setY([1]); setY([1, 2, 3]); assertEq(y.length, 3); // z is non-configurable, but can be made non-writable. var z = 10; function testNonWritable() { function g() { z = 11; } for (var i=0; i<70; i++) { g(); } Object.defineProperty(this, "z", {value: 1234, writable: false}); g(); assertEq(z, 1234); } testNonWritable();