| //------------------------------------------------------------------------------------------------------- | |
| // Copyright (C) Microsoft. All rights reserved. | |
| // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. | |
| //------------------------------------------------------------------------------------------------------- | |
| function echo(str) | |
| { | |
| if(typeof(WScript) == "undefined") | |
| { | |
| print(str); | |
| } | |
| else | |
| { | |
| WScript.Echo(str); | |
| } | |
| } | |
| function f() { f(); } | |
| var finally_ = 0; | |
| try { | |
| try { | |
| try { | |
| f(); /* first SO */ | |
| } finally { | |
| finally_++; | |
| try { | |
| f(); /* nested SO. This finally block is ignored. */ | |
| } finally { | |
| finally_++; | |
| } | |
| } | |
| } catch (ex) { | |
| /* we should be able to raise 2 more SOs from here */ | |
| try { | |
| f(); /* first SO */ | |
| } finally { | |
| finally_++; | |
| try { | |
| f(); /* second SO. This finally block is ignored. */ | |
| } finally { | |
| finally_++; | |
| } | |
| } | |
| } | |
| } catch (ex) { | |
| echo(finally_ == 4 ? "PASS" : "FAIL"); | |
| } |