blob: 21c379e081b89a977e26911d5fb4dd7fe11a3dc2 [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.
//-------------------------------------------------------------------------------------------------------
// let and const variables should exhibit redeclaration and assignment to const errors
// even when they are located in an ActivationObjectEx cached scope.
// Test them independently
//
function f0() {
let x = 0;
try {
eval("var x = 5");
} catch (e) {
WScript.Echo("eval('var x = 5') threw '" + e.message + "'");
}
try {
eval("x = 5");
} catch (e) {
WScript.Echo("unexpected error thrown: '" + e.message + "'");
}
WScript.Echo("x: " + x);
}
// Called-in-loop is no longer the heuristic we want to use to enable scope caching.
// Instead rely on -force:cachedscope and call the test function only once here.
f0();
function f1() {
const y = 1;
try {
eval("var y = 5");
} catch (e) {
WScript.Echo("eval('var y = 5') threw '" + e.message + "'");
}
try {
eval("y = 5");
} catch (e) {
WScript.Echo("eval('y = 5') threw '" + e.message + "'");
}
WScript.Echo("y: " + y);
}
// Called-in-loop is no longer the heuristic we want to use to enable scope caching.
// Instead rely on -force:cachedscope and call the test function only once here.
f1();