// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. // Regression test for dart2js that used to not treat the finally // block as a successor of a nested try block. import "package:expect/expect.dart"; class A { var field; start() {} stop() { field = 42; } } class B { var totalCompileTime = new A(); var runCompiler = new Object(); run() { totalCompileTime.start(); try { throw 'foo'; } catch (exception) { try { // Use [runCompiler] twice to ensure it will have a local // variable. runCompiler.toString(); runCompiler.toString(); } catch (exception) {} rethrow; } finally { totalCompileTime.stop(); } } } main() { var b = new B(); try { b.run(); throw 'Expected exception'; } catch (exception) { // Expected exception. } Expect.equals(42, b.totalCompileTime.field); }