//------------------------------------------------------------------------------------------------------- | |
// 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); | |
} |