Files
sdk/tests/language/rethrow_test.dart
T
hausner@google.com 54dde7ce89 Implement rethrow statement
Or: how to turn a 5 minute task into a 2 hour ordeal.

The actual business of the change is one line in token.h and one line in parser.cc.
Review URL: https://codereview.chromium.org//14012005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21371 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-12 16:32:37 +00:00

64 lines
1.5 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.
// Dart test program for testing throw statement
import "package:expect/expect.dart";
class MyException {
const MyException();
}
class OtherException {
const OtherException();
}
class RethrowTest {
MyException currentException;
void throwException() {
currentException = new MyException();
throw currentException;
}
void testRethrowPastUncaught() {
try {
try {
try {
throwException();
Expect.fail("Should have thrown an exception");
} catch (e) {
Expect.equals(true, identical(e, currentException));
rethrow;
Expect.fail("Should have thrown an exception");
}
} on OtherException catch (e) {
Expect.fail("Should not have caught OtherException");
}
} catch (e) {
Expect.equals(true, identical(e, currentException));
}
}
void testRethrow() {
try {
try {
throwException();
Expect.fail("Should have thrown an exception");
} catch (e) {
Expect.equals(true, identical(e, currentException));
rethrow;
Expect.fail("Should have thrown an exception");
}
} catch (e) {
Expect.equals(true, identical(e, currentException));
}
}
}
main() {
RethrowTest t = new RethrowTest();
t.testRethrow();
t.testRethrowPastUncaught();
}