| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- function oos() {
- oos();
- }
- function earlyReturn(num) {
- for (var i = 0; i < num; i++) {
- try {
- if (num > 5) {
- oos();
- return;
- }
- }
- catch(e) {
- WScript.Echo("catch " + i);
- }
- }
- WScript.Echo("done");
- }
- function earlyBreak(num) {
- for (var i = 0; i < num; i++) {
- try {
- if (i > 5) {
- break;
- }
- }
- finally {
- WScript.Echo("finally " + i);
- }
- }
- WScript.Echo("done");
- }
- function earlyContinue(num) {
- for (var i = 0; i < num; i++) {
- try {
- if (i > 5) {
- continue;
- }
- }
- finally {
- WScript.Echo("finally " + i);
- }
- }
- WScript.Echo("done");
- }
- function earlyReturnFromFinally(num)
- {
- for (var i = 0; i < num; i++) {
- try {
- }
- finally {
- WScript.Echo("finally " + i);
- if (i > 5) {
- return;
- }
- }
- }
- WScript.Echo("done");
- }
- function earlyReturnFromCatch(num)
- {
- for (var i = 0; i < num; i++) {
- try {
- oos();
- }
- catch(e) {
- WScript.Echo("catch " + i);
- if (num > 5) {
- return;
- }
- }
- }
- WScript.Echo("done");
- }
- function earlyReturnFromNestedFinally(num)
- {
- for (var i = 0; i < num; i++) {
- try {
- try {
- if (num > 5) return;
- }
- finally{
- WScript.Echo("inner finally " + i);
- }
- }
- finally {
- WScript.Echo("outer finally " + i);
- }
- }
- WScript.Echo("done");
- }
- function earlyReturnFromNestedTFTC(num)
- {
- for (var i = 0; i < num; i++) {
- try {
- try {
- if (num > 5) return;
- }
- catch (e){
- WScript.Echo("inner catch " + i);
- }
- }
- finally {
- WScript.Echo("outer finally " + i);
- }
- }
- WScript.Echo("done");
- }
- function earlyBreakFromNestedTFTC(num)
- {
- for (var i = 0; i < num; i++) {
- try {
- try {
- if (num > 5) break;
- }
- catch (e){
- WScript.Echo("inner catch " + i);
- }
- }
- finally {
- WScript.Echo("outer finally " + i);
- }
- }
- WScript.Echo("done");
- }
- function earlyContinueFromNestedTFTC(num)
- {
- for (var i = 0; i < num; i++) {
- try {
- try {
- if (num > 5) continue;
- }
- catch (e){
- WScript.Echo("inner catch " + i);
- }
- }
- finally {
- WScript.Echo("outer finally " + i);
- }
- }
- WScript.Echo("done");
- }
- function earlyBreakLabelFromNestedTFTC(num)
- {
- outer:for (var x = 0; x < num; x++) {
- for (var i = 0; i < num; i++) {
- try {
- try {
- if (num > 5) break outer;
- }
- catch (e){
- WScript.Echo("inner catch " + i);
- }
- }
- finally {
- WScript.Echo("outer finally " + i);
- }
- }
- }
- WScript.Echo("done");
- }
- function earlyContinueLabelFromNestedTFTC(num)
- {
- outer:for (var x = 0; x < num; x++) {
- for (var i = 0; i < num; i++) {
- try {
- try {
- if (num > 5) continue outer;
- }
- catch (e){
- WScript.Echo("inner catch " + i);
- }
- }
- finally {
- WScript.Echo("outer finally " + i);
- }
- }
- }
- WScript.Echo("done");
- }
- function earlyReturnFromCatchInTryFinally(num)
- {
- for (var i = 0; i < num; i++) {
- try {
- try {
- throw "Err";
- }
- catch(e) {
- WScript.Echo("catch " + i);
- if (num > 5) {
- return;
- }
- }
- }
- finally {
- WScript.Echo("finally " + i);
- }
- }
- WScript.Echo("done");
- }
- function earlyReturnFromCatchInTryCatchTryFinally(num)
- {
- for (var i = 0; i < num; i++) {
- try {
- try {
- throw "Err";
- }
- catch(e) {
- WScript.Echo("catch " + i);
- if (num > 5) {
- return;
- }
- }
- }
- finally {
- WScript.Echo("finally " + i);
- }
- }
- WScript.Echo("done");
- }
- function earlyReturnFromFinallyInTryFinally(num)
- {
- for (var i = 0; i < num; i++) {
- try {
- try {
- WScript.Echo("try");
- }
- finally {
- WScript.Echo("inner finally " + i);
- return;
- }
- }
- finally {
- WScript.Echo("outer finally " + i);
- }
- }
- WScript.Echo("done");
- }
- function earlyReturnFromCatchInInfiniteLoop(num)
- {
- while (true) {
- try {
- try {
- throw "Err";
- }
- catch(e) {
- WScript.Echo("infinite loop catch");
- if (num > 5) {
- return;
- }
- }
- }
- finally {
- WScript.Echo("infinite loop finally");
- }
- }
- WScript.Echo("done");
- }
- function test0() {
- earlyReturn(7);
- WScript.Echo("Done earlyReturn");
- earlyBreak(7);
- WScript.Echo("Done earlyBreak");
- earlyContinue(7);
- WScript.Echo("Done earlyContinue");
- earlyReturnFromFinally(7);
- WScript.Echo("Done earlyReturnFromFinally");
- earlyReturnFromCatch(7);
- WScript.Echo("Done earlyReturnFromCatch");
- earlyReturnFromNestedFinally(7);
- WScript.Echo("Done earlyReturnFromNestedFinally");
- earlyReturnFromNestedTFTC(7);
- WScript.Echo("Done earlyReturnFromNestedTFTC");
- earlyBreakFromNestedTFTC(7);
- WScript.Echo("Done earlyBreakFromNestedTFTC");
- earlyContinueFromNestedTFTC(7);
- WScript.Echo("Done earlyContinueFromNestedTFTC");
- earlyBreakLabelFromNestedTFTC(7);
- WScript.Echo("Done earlyReturnFromNestedTFTC");
- earlyContinueLabelFromNestedTFTC(7);
- WScript.Echo("Done earlyReturnFromNestedTFTC");
- earlyReturnFromCatchInTryFinally(7);
- WScript.Echo("earlyReturnFromCatchInTryFinally");
- earlyReturnFromCatchInTryCatchTryFinally(7);
- WScript.Echo("earlyReturnFromCatchInTryCatchTryFinally");
- earlyReturnFromFinallyInTryFinally(7);
- WScript.Echo("Done earlyReturnFromFinallyInTryFinally");
- earlyReturn(7);
- earlyReturnFromCatchInInfiniteLoop(7);
- WScript.Echo("earlyReturnFromCatchInInfiniteLoop");
- }
- test0();
- test0();
- test0();
|