blob: cedfebc7aeb95ff19f743850ab6ed38e280477dc [file]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
// With scope verification.
function f1() {
var a = 20;
var x = {
a: "with_a",
b: function b() { }, // this one goes to [Methods] group
__proto__: {
b: "proto_b", // should resolve to local x.b, not x.__proto__.b
c: "proto_c", // should resolve to x.__proto__.c
d: function proto_d() { }, // this in __proto__.[Methods] group
__proto__: {
e: "ancestor_e"
}
}
};
Object.defineProperty(x.__proto__.__proto__, "f", { value: "ancestor_f", enumerable: false }); // non-enumerable
with (x) {
var k = a; //WScript.Echo(a, b, c, d, e, f);
k; /**bp:evaluate('a');evaluate('b');evaluate('c');evaluate('d');evaluate('e');evaluate('f');locals()**/
}
return a;
}
f1();
with ({ outer3: "outer3" }) {
(function foo() {
var foo1 = "foo1";
with ({ outer2: "outer2" }) {
with ({ outer1: "outer1" }) {
(function () {
foo1; foo;
/**bp:evaluate('outer1');evaluate('outer2');evaluate('foo1');evaluate('foo');evaluate('outer3');locals(1)**/
}).apply({});
}
}
})();
}
WScript.Echo("Pass");