OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 | 4 |
5 import 'package:expect/expect.dart'; | 5 import 'package:expect/expect.dart'; |
6 | 6 |
7 // Tests a self-reference of a closure inside a try/catch. | 7 // Tests a self-reference of a closure inside a try/catch. |
8 // Dart2js must not try to box the closure-reference. | 8 // Dart2js must not try to box the closure-reference. |
9 | 9 |
10 main() { | 10 main() { |
11 var counter = 0; | 11 var counter = 0; |
12 inner(value) { | 12 inner(value) { |
13 if (value == 0) return 0; | 13 if (value == 0) return 0; |
14 try { | 14 try { |
15 return inner(value - 1); | 15 return inner(value - 1); |
16 } finally { | 16 } finally { |
17 counter++; | 17 counter++; |
18 } | 18 } |
19 } | 19 } |
20 | 20 |
21 Expect.equals(0, inner(199)); | 21 Expect.equals(0, inner(199)); |
22 Expect.equals(199, counter); | 22 Expect.equals(199, counter); |
23 } | 23 } |
OLD | NEW |