dart-sdk/tests/kernel/unsorted/rethrow_test.dart

67 lines
1.1 KiB
Dart

// Copyright (c) 2016, 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.
import 'package:expect/expect.dart';
testNormalRethrow() {
var x = 0;
try {
try {
throw x++;
} catch (e) {
Expect.isTrue(e == 0);
x++;
rethrow;
}
} catch (e) {
Expect.isTrue(e == 0);
x++;
}
Expect.isTrue(x == 3);
}
testNormalRethrow2() {
var x = 0;
try {
try {
throw x++;
} on int catch (e) {
Expect.isTrue(e == 0);
x++;
rethrow;
}
} catch (e) {
Expect.isTrue(e == 0);
x++;
}
Expect.isTrue(x == 3);
}
testRethrowWithinTryRethrow() {
var x = 0;
try {
try {
throw x++;
} on int catch (e) {
Expect.isTrue(e == 0);
x++;
try {
x++;
rethrow;
} finally {
x++;
}
}
} catch (e) {
Expect.isTrue(e == 0);
x++;
}
Expect.isTrue(x == 5);
}
main() {
testNormalRethrow();
testNormalRethrow2();
testRethrowWithinTryRethrow();
}