| Index: test/codegen/corelib/error_stack_trace_test.dart
|
| diff --git a/test/codegen/corelib/error_stack_trace_test.dart b/test/codegen/corelib/error_stack_trace_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..55be1d3bacc0dbb44710313f1bbc91ef75c2795e
|
| --- /dev/null
|
| +++ b/test/codegen/corelib/error_stack_trace_test.dart
|
| @@ -0,0 +1,75 @@
|
| +// 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.
|
| +
|
| +import "package:expect/expect.dart";
|
| +
|
| +void argument() {
|
| + throw new ArgumentError(499);
|
| +}
|
| +
|
| +void noSuchMethod() {
|
| + (499).doesNotExist();
|
| +}
|
| +
|
| +void nullThrown() {
|
| + throw null;
|
| +}
|
| +
|
| +void range() {
|
| + throw new RangeError.range(0, 1, 2);
|
| +}
|
| +
|
| +void fallThrough() {
|
| + nested() {}
|
| +
|
| + switch (5) {
|
| + case 5:
|
| + nested();
|
| + default:
|
| + Expect.fail("Should not reach");
|
| + }
|
| +}
|
| +
|
| +abstract class A {
|
| + foo();
|
| +}
|
| +
|
| +void abstractClassInstantiation() {
|
| + new A();
|
| +}
|
| +
|
| +void unsupported() {
|
| + throw new UnsupportedError("unsupported");
|
| +}
|
| +
|
| +void unimplemented() {
|
| + throw new UnimplementedError("unimplemented");
|
| +}
|
| +
|
| +void state() {
|
| + return [1, 2].single;
|
| +}
|
| +
|
| +void type() {
|
| + return 1 + "string";
|
| +}
|
| +
|
| +main() {
|
| + List<Function> errorFunctions = [
|
| + argument, noSuchMethod, nullThrown, range, fallThrough,
|
| + abstractClassInstantiation, unsupported, unimplemented, state,
|
| + type ];
|
| +
|
| + for (var f in errorFunctions) {
|
| + bool hasThrown = false;
|
| + try {
|
| + f();
|
| + } catch(e) {
|
| + hasThrown = true;
|
| + Expect.isTrue(e.stackTrace is StackTrace,
|
| + "$e doesn't have a non-null stack trace");
|
| + }
|
| + Expect.isTrue(hasThrown);
|
| + }
|
| +}
|
|
|