| fun test1() : Boolean { | |
| try { | |
| return true | |
| } finally { | |
| if(true) // otherwise we wisely have unreachable code | |
| return false | |
| } | |
| } | |
| var x = true | |
| fun test2() : Boolean { | |
| try { | |
| } finally { | |
| x = false; | |
| } | |
| return x | |
| } | |
| fun test3() : Int { | |
| var y = 0 | |
| try { | |
| ++y | |
| } finally { | |
| ++y | |
| } | |
| return y | |
| } | |
| var z = 0 | |
| fun test4() : Int { | |
| z = 0 | |
| return try { | |
| try { | |
| z++ | |
| } | |
| finally { | |
| z++ | |
| } | |
| } finally { | |
| ++z | |
| } | |
| } | |
| fun test5() : Int { | |
| var x = 0 | |
| while(true) { | |
| try { | |
| if(x < 10) | |
| x++ | |
| else | |
| break | |
| } | |
| finally { | |
| x++ | |
| } | |
| } | |
| return x | |
| } | |
| fun test6() : Int { | |
| var x = 0 | |
| while(x < 10) { | |
| try { | |
| x++ | |
| continue | |
| } | |
| finally { | |
| x++ | |
| } | |
| } | |
| return x | |
| } | |
| fun box() : String { | |
| if(test1()) return "test1 failed" | |
| if(test2()) return "test2 failed" | |
| if(test3() != 2) return "test3 failed" | |
| if(test4() != 0) return "test4 failed" | |
| if(test5() != 11) return "test5 failed" | |
| if(test6() != 10) return "test6 failed" | |
| return "OK" | |
| } |