| OLD | NEW | 
|---|
| 1 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 // Regression test for dart2js that used to not treat the finally | 5 // Regression test for dart2js that used to not treat the finally | 
| 6 // block as a successor of a nested try block. | 6 // block as a successor of a nested try block. | 
| 7 | 7 | 
| 8 import "package:expect/expect.dart"; | 8 import "package:expect/expect.dart"; | 
| 9 | 9 | 
| 10 class A { | 10 class A { | 
| 11   var field; | 11   var field; | 
| 12   start() {} | 12   start() {} | 
| 13   stop() { field = 42; } | 13   stop() { | 
|  | 14     field = 42; | 
|  | 15   } | 
| 14 } | 16 } | 
| 15 | 17 | 
| 16 class B { | 18 class B { | 
| 17   var totalCompileTime = new A(); | 19   var totalCompileTime = new A(); | 
| 18   var runCompiler = new Object(); | 20   var runCompiler = new Object(); | 
| 19 | 21 | 
| 20   run() { | 22   run() { | 
| 21     totalCompileTime.start(); | 23     totalCompileTime.start(); | 
| 22     try { | 24     try { | 
| 23       throw 'foo'; | 25       throw 'foo'; | 
| 24     } catch (exception) { | 26     } catch (exception) { | 
| 25       try { | 27       try { | 
| 26         // Use [runCompiler] twice to ensure it will have a local | 28         // Use [runCompiler] twice to ensure it will have a local | 
| 27         // variable. | 29         // variable. | 
| 28         runCompiler.toString(); | 30         runCompiler.toString(); | 
| 29         runCompiler.toString(); | 31         runCompiler.toString(); | 
| 30       } catch (exception) { | 32       } catch (exception) {} | 
| 31       } |  | 
| 32       rethrow; | 33       rethrow; | 
| 33     } finally { | 34     } finally { | 
| 34       totalCompileTime.stop(); | 35       totalCompileTime.stop(); | 
| 35     } | 36     } | 
| 36   } | 37   } | 
| 37 } | 38 } | 
| 38 | 39 | 
| 39 main() { | 40 main() { | 
| 40   var b = new B(); | 41   var b = new B(); | 
| 41   try { | 42   try { | 
| 42     b.run(); | 43     b.run(); | 
| 43     throw 'Expected exception'; | 44     throw 'Expected exception'; | 
| 44   } catch (exception) { | 45   } catch (exception) { | 
| 45     // Expected exception. | 46     // Expected exception. | 
| 46   } | 47   } | 
| 47 | 48 | 
| 48   Expect.equals(42, b.totalCompileTime.field); | 49   Expect.equals(42, b.totalCompileTime.field); | 
| 49 } | 50 } | 
| OLD | NEW | 
|---|