dart-sdk/tests/language_2/execute_finally9_test.dart
Ben Konyi b69a1f60ba Migrated test block 61 to Dart 2.0.
No changes made to this block.

Bug:
Change-Id: I4e627bdf2f407894bd1f6ae3353e24709f9c8f70
Reviewed-on: https://dart-review.googlesource.com/8100
Reviewed-by: Phil Quitslund <pquitslund@google.com>
Reviewed-by: Erik Ernst <eernst@google.com>
2017-09-27 14:16:35 +00:00

69 lines
1.2 KiB
Dart

// Copyright (c) 2011, 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.
// This test ensures that the finally block executes correctly when
// there are throw, break and return statements in the finally block.
import "package:expect/expect.dart";
class Hello {
static var sum;
static foo() {
sum = 0;
try {
sum += 1;
return 'hi';
} catch (e) {
sum += 1;
throw 'ball';
sum += 1;
} finally {
sum += 1;
throw 'ball';
sum += 1;
}
}
static foo1() {
bool loop = true;
sum = 0;
L:
while (loop) {
try {
sum += 1;
return 'hi';
} catch (ex) {
sum += 1;
} finally {
try {
L1:
while (loop) {
sum += 1;
break L;
sum += 1;
}
} catch (ex) {
sum += 1;
} finally {
sum += 1;
}
}
}
}
static void main() {
foo1();
Expect.equals(3, sum);
try {
foo();
} catch (e) {
// Ignore.
}
Expect.equals(2, sum);
}
}
main() {
Hello.main();
}