| fun unsupportedEx() { |
| if (true) throw UnsupportedOperationException() |
| } |
| |
| fun runtimeEx() { |
| if (true) throw RuntimeException() |
| } |
| |
| fun test1WithFinally() : String { |
| var s = ""; |
| try { |
| try { |
| s += "Try"; |
| unsupportedEx() |
| } finally { |
| s += "Finally" |
| } |
| } catch (x : RuntimeException) { |
| return s |
| } |
| return s + "Failed" |
| } |
| |
| |
| fun test2WithFinally() : String { |
| var s = ""; |
| try { |
| try { |
| s += "Try"; |
| unsupportedEx() |
| return s |
| } finally { |
| s += "Finally" |
| } |
| } catch (x : RuntimeException) { |
| return s |
| } |
| } |
| |
| fun box() : String { |
| if (test1WithFinally() != "TryFinally") return "fail2: ${test1WithFinally()}" |
| |
| if (test2WithFinally() != "TryFinally") return "fail4: ${test2WithFinally()}" |
| return "OK" |
| } |