early2.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  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. function earlyReturnTF(num) {
  6. for (var i = 0; i < num; i++) {
  7. try {
  8. if (num > 5) return;
  9. }finally {
  10. WScript.Echo("return outer finally");
  11. }
  12. }
  13. }
  14. function earlyBreakTF(num) {
  15. for (var i = 0; i < num; i++) {
  16. try {
  17. if (num > 5) break;
  18. }finally {
  19. WScript.Echo("break outer finally");
  20. }
  21. }
  22. }
  23. function earlyContinueTF(num) {
  24. for (var i = 0; i < num; i++) {
  25. try {
  26. if (i < 3) continue;
  27. }finally {
  28. WScript.Echo("continue outer finally " + i);
  29. }
  30. }
  31. }
  32. function earlyReturnNestedTFTC(num) {
  33. for (var i = 0; i < num; i++) {
  34. try {
  35. try {
  36. if (num > 5) return;
  37. }
  38. catch(e) {
  39. WScript.Echo("inner catch");
  40. }
  41. }finally {
  42. WScript.Echo("outer finally");
  43. }
  44. }
  45. }
  46. function earlyReturnNestedTFTF(num) {
  47. for (var i = 0; i < num; i++) {
  48. try {
  49. try {
  50. if (num > 5) return;
  51. }
  52. finally {
  53. WScript.Echo("inner finally");
  54. }
  55. }finally {
  56. WScript.Echo("outer finally");
  57. }
  58. }
  59. }
  60. function earlyBreakNestedTFTF(num) {
  61. for (var i = 0; i < num; i++) {
  62. try {
  63. try {
  64. if (num > 5) break;
  65. }
  66. finally {
  67. WScript.Echo("inner finally");
  68. }
  69. }finally {
  70. WScript.Echo("outer finally");
  71. }
  72. }
  73. }
  74. function earlyContinueNestedTFTF(num) {
  75. for (var i = 0; i < num; i++) {
  76. try {
  77. try {
  78. if (i > 3) continue;
  79. }
  80. finally {
  81. WScript.Echo("inner finally");
  82. }
  83. }finally {
  84. WScript.Echo("continue outer finally " + i);
  85. }
  86. }
  87. }
  88. function earlyBreakNestedTFTC(num) {
  89. for (var i = 0; i < num; i++) {
  90. try {
  91. try {
  92. if (num > 5) break;
  93. }
  94. catch(e) {
  95. WScript.Echo("inner catch");
  96. }
  97. }finally {
  98. WScript.Echo("break outer finally");
  99. }
  100. }
  101. }
  102. function earlyContinueNestedTFTC(num) {
  103. for (var i = 0; i < num; i++) {
  104. try {
  105. try {
  106. if (num > 5) continue;
  107. }
  108. catch(e) {
  109. WScript.Echo("inner catch");
  110. }
  111. }finally {
  112. WScript.Echo("continue outer finally " + i);
  113. }
  114. }
  115. }
  116. function test0() {
  117. earlyReturnTF(7);
  118. earlyBreakTF(7);
  119. earlyContinueTF(7);
  120. earlyReturnNestedTFTC(7);
  121. earlyReturnNestedTFTF(7);
  122. earlyBreakNestedTFTF(7);
  123. earlyContinueNestedTFTF(7);
  124. earlyReturnNestedTFTC(7);
  125. earlyBreakNestedTFTC(7);
  126. earlyContinueNestedTFTC(7);
  127. }
  128. test0();
  129. test0();
  130. test0();