blob: 603e299273511d3582200130e71e08fae1c6285f [file] [log] [blame]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
function A(k)
{
this.k = k;
}
var x = new A(1);
var y = new A(undefined);
var i = 1;
var j = 2;
with (x)
{
i = 2;
with (A.prototype)
{
i = 3;
x.i = 77;
i = 4;
}
with (y)
{
i = 4.0;
j = "y.j";
y.j = undefined;
k = null;
}
A.prototype.i = undefined;
with (A.prototype)
{
i = 99;
}
WScript.Echo(i);
WScript.Echo(j);
WScript.Echo(k);
with (y)
{
WScript.Echo(i);
if (j === undefined)
WScript.Echo("undefined");
WScript.Echo(k);
}
j = 0;
k = "x.k";
var foo = function f() {
var i = 'local.i';
WScript.Echo(i);
WScript.Echo(foo.length);
};
x.foo = 'x.foo';
}
WScript.Echo(i);
WScript.Echo(A.prototype.i);
WScript.Echo(x.i);
WScript.Echo(y.i);
WScript.Echo(j);
if (A.prototype.j === undefined)
WScript.Echo("undefined");
if (x.j === undefined)
WScript.Echo("undefined");
if (y.j === undefined)
WScript.Echo("undefined");
WScript.Echo(x.k);
WScript.Echo(y.k);
WScript.Echo(x.foo);
foo();
try
{
f(); // doesn't escape the blocks cope
} catch (e) {
WScript.Echo(e);
}
function foo2() {
var a1 = new Object();
a1.foo = 16;
a1.bar = "abcd";
with ( a1 ) {
a1 = new Object();
a1.foo = 16;
a1.bar = "dcba";
WScript.Echo(bar);
}
}
foo2();
var evalinwith = 'global evalinwith';
(function (){
var O = {evalinwith:'no'};
with(O)
{
eval('var evalinwith = "O.evalinwith"');
eval('WScript.Echo(evalinwith + "")');
}
evalinwith = 'local evalinwith';
eval('WScript.Echo(evalinwith + "")');
})();
eval('WScript.Echo(evalinwith + "")');
function verify(act, msg) { WScript.Echo(msg + ': ' + act); }
var level1Func = function level1FuncIdent() {
var level1 = "level1";
with({level1: ""}) {
try {
throw "throw";
} catch(level1) {}
}
verify(level1, "Value of level1 after assignment at level 1");
}
level1Func();
(function () {
function a()
{
WScript.Echo("a is called");
}
(function(){
try {
throw a;
}
catch(x) {
with({}){
x();
}
}
})();
})();
// Guarantee that function-body-in-array script length heuristic is not broken
// by compat mode named-function-expression-in-with.
with ({}) {
var arrwithfunc = [(function handlerFactory() { return; })];
}