OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 // This test ensures that the finally block executes correctly when | 4 // This test ensures that the finally block executes correctly when |
5 // there are throw, break and return statements in the finally block. | 5 // there are throw, break and return statements in the finally block. |
6 | 6 |
7 class Hello { | 7 class Hello { |
8 static var sum; | 8 static var sum; |
9 | 9 |
10 static foo() { | 10 static foo() { |
11 sum = 0; | 11 sum = 0; |
12 try { | 12 try { |
13 sum += 1; | 13 sum += 1; |
14 return 'hi'; | 14 return 'hi'; |
15 } catch (var e) { | 15 } catch (e) { |
16 sum += 1; | 16 sum += 1; |
17 throw 'ball'; | 17 throw 'ball'; |
18 sum += 1; | 18 sum += 1; |
19 } finally { | 19 } finally { |
20 sum += 1; | 20 sum += 1; |
21 throw 'ball'; | 21 throw 'ball'; |
22 sum += 1; | 22 sum += 1; |
23 } | 23 } |
24 } | 24 } |
25 | 25 |
26 static foo1() { | 26 static foo1() { |
27 bool loop = true; | 27 bool loop = true; |
28 sum = 0; | 28 sum = 0; |
29 L:while (loop) { | 29 L:while (loop) { |
30 try { | 30 try { |
31 sum += 1; | 31 sum += 1; |
32 return 'hi'; | 32 return 'hi'; |
33 } catch (var ex) { | 33 } catch (ex) { |
34 sum += 1; | 34 sum += 1; |
35 } finally { | 35 } finally { |
36 try { | 36 try { |
37 L1:while (loop) { | 37 L1:while (loop) { |
38 sum += 1; | 38 sum += 1; |
39 break L; | 39 break L; |
40 sum += 1; | 40 sum += 1; |
41 } | 41 } |
42 } catch (var ex) { | 42 } catch (ex) { |
43 sum += 1; | 43 sum += 1; |
44 } finally { | 44 } finally { |
45 sum += 1; | 45 sum += 1; |
46 } | 46 } |
47 } | 47 } |
48 } | 48 } |
49 } | 49 } |
50 | 50 |
51 static void main() { | 51 static void main() { |
52 foo1(); | 52 foo1(); |
53 Expect.equals(3, sum); | 53 Expect.equals(3, sum); |
54 try { | 54 try { |
55 foo(); | 55 foo(); |
56 } catch (var e) { | 56 } catch (e) { |
| 57 // Ignore. |
57 } | 58 } |
58 Expect.equals(2, sum); | 59 Expect.equals(2, sum); |
59 } | 60 } |
60 | 61 |
61 } | 62 } |
62 | 63 |
63 main() { | 64 main() { |
64 Hello.main(); | 65 Hello.main(); |
65 } | 66 } |
OLD | NEW |