scopegen1.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. let print = function(x) { WScript.Echo(x) }
  6. try {
  7. throw "level1";
  8. } catch (level_1_identifier_0) {
  9. eval("var level_1_identifier_3 = 'level1'");
  10. function level2Func(level_2_identifier_0) {
  11. level_1_identifier_3 += "level2"; //throws error
  12. }
  13. level2Func("level2");
  14. print(level_1_identifier_3);
  15. }
  16. with({ }) {
  17. //let level_1_identifier_1= "level1";
  18. //or
  19. const level_1_identifier_2= "level1";
  20. with({ }) {
  21. eval("var level_2_identifier_3 = 'level2'");
  22. eval("print(level_2_identifier_3);");
  23. eval("print(level_1_identifier_2);");
  24. }
  25. }
  26. function evalcaller() {
  27. eval("\
  28. var level_1_identifier_0= \"level1\";\n\
  29. try {\n\
  30. throw \"level2\";\n\
  31. }catch(e) { \n\
  32. let level_2_identifier_1= \"level2\";\n\
  33. function level3Func(level_3_identifier_0) { \n\
  34. level_1_identifier_0 += \"level3\"; \n\
  35. level_2_identifier_1 += \"level3\"; \n\
  36. }\n\
  37. level3Func(\"level3\");\n\
  38. print(level_2_identifier_1);\n\
  39. }\n\
  40. ");
  41. print(level_1_identifier_0);
  42. }
  43. evalcaller();