blob: 4595fc3265a2d326700c63daecc3a6e181c6e77a [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 write(x) { WScript.Echo(x); }
// var after let at function scope should be redeclaration error
try {
eval(
"(function () {" +
" let x = 'let x';" +
" var x = 'redeclaration error';" +
" write(x);" +
"})();"
);
} catch (e) {
write(e);
}
// var after let in non-function block scope should be valid;
// var declaration should reassing let bound symbol, but should
// also introduce function scoped variable, initialized to undefined
// (Make sure there is no difference whether the let binding is used
// or not before the var declaration)
// (Blue bug 145660)
try {
eval(
"(function () {" +
" {" +
" let x = 'let x';" +
" var x = 'var x';" +
" write(x);" +
" }" +
" write(x);" +
" {" +
" let y = 'let y';" +
" write(y);" +
" var y = 'var y';" +
" write(y);" +
" }" +
" write(y);" +
"})();"
);
} catch (e) {
write(e);
}
// var before let in non-function block scope should raise a
// Use Berfore Declaration error.
try {
eval(
"(function () {" +
" {" +
" var x = 'var x';" +
" let x = 'let x';" +
" write(x);" +
" }" +
" write(x);" +
"})();"
);
} catch (e) {
write(e);
}