| //------------------------------------------------------------------------------------------------------- |
| // 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"); |
| } |