//------------------------------------------------------------------------------------------------------- // 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(v) { WScript.Echo(v + ""); } var count = 0; function check(scen) { var str = "check" + ++count + ": " + scen; try { var result = eval(scen); str += " #" + result; } catch (e) { str += " @" + e.message; } write(str); } var Test0 = function F_Test0() { } var Test1 = function F_Test1() { write(F_Test1); } // funcexpression assigned a value var Test2 = function F_Test2() { write(F_Test2); F_Test2 = 100; write(F_Test2); } //variable with same name var Test3 = function F_Test3() { write("Test3: " + F_Test3); var F_Test3; write("Test3: " + F_Test3); } // variable with same name with init var Test4 = function F_Test4() { write("Test4: " + F_Test4); var F_Test4 = 100; write("Test4: " + F_Test4); } // variable with same name with init var Test5 = function F_Test5() { write("Test5: " + F_Test5); var F_Test5; F_Test5 = 100; write("Test5: " + F_Test5); } // argument with same name var Test6 = function F_Test6(F_Test6) { write("Test6: " + F_Test6); } // argument with same name and assignment var Test7 = function F_Test7(F_Test7) { write("Test7: " + F_Test7); F_Test7 = 100; write("Test7: " + F_Test7); } // argument with same name and assignment var Test8 = function F_Test8(F_Test8) { write("Test8: " + F_Test8); F_Test8 = 100; write("Test8: " + F_Test8); write("Test8: " + arguments[0]); } // argument with same name and assignment var Test9 = function F_Test9(F_Test9) { write("Test9: " + F_Test9); arguments[0] = 100; write("Test9: " + F_Test9); write("Test9: " + arguments[0]); } eval("var Test10 = function F_Test10(){}"); var Test11 = function F_Test11() { eval('write("Test11: " + F_Test11)'); } eval("var Test12 = function F_Test12(){eval('write(\"Test12: \" + F_Test12)');}"); // funcexpression assigned a value var Test13 = function F_Test13() { write("Test13: " + F_Test13); eval("F_Test13 = 100"); write("Test13: " + F_Test13); } // variable with same name with init var Test14 = function F_Test14() { write("Test14: " + F_Test14); eval("var F_Test14 = 100;"); write("Test14: " + F_Test14); } // variable with same name with init var Test15 = function F_Test15() { write("Test15: " + F_Test15); eval("var F_Test15;"); write("Test15: " + F_Test15); eval("F_Test15 = 100;"); write("Test15: " + F_Test15); } // argument with same name var Test16 = function F_Test16(F_Test16) { eval("write(F_Test16)"); } // argument with same name and assignment var Test17 = function F_Test17(F_Test17) { write("Test17: " + F_Test17); eval("F_Test17 = 100;"); write("Test17: " + F_Test17); } // argument with same name and assignment var Test18 = function F_Test18(F_Test18) { write("Test18: " + F_Test18); eval("F_Test18 = 100;"); write("Test18: " + F_Test18); write("Test18: " + arguments[0]); } // argument with same name and assignment var Test19 = function F_Test19(F_Test19) { write("Test19: " + F_Test19); eval("arguments[0] = 100;"); write("Test19: " + F_Test19); write("Test19: " + arguments[0]); } var Test20 = function F_Test20() { function inner20() { eval("var F_Test20 = 10"); write(F_Test20); } inner20(); WScript.Echo(F_Test20); return 0; } var Test21 = function F_Test21() { try { var x = function y() { var a = function b() { eval("WScript.Echo(y)"); eval("y = 'legacy only'"); eval("WScript.Echo(y)"); } a(); } x(); } catch (ex) { WScript.Echo(ex); } } var Test22 = function F_Test22() { eval('try {} catch(e) {} (function e(x){}); WScript.Echo(e);'); return e; } var Test23 = function F_Test23() { var x = 1; new (function g() { with({}) { WScript.Echo('typeof g === ' + typeof g); WScript.Echo('typeof F_Test23 === ' + typeof F_Test23); WScript.Echo('typeof x === ' + typeof x); if (!x) g(); } } ); } var Test24 = function F_Test24() { with( "" ){ (function() { foo(F_Test24); })(); } function foo(f) { if (f.name !== 'F_Test24') WScript.Echo('fail Test24') }; } var numTests = 25; for (var i=0;i