Index: tests/corelib/error_stack_trace_test.dart |
diff --git a/tests/corelib/error_stack_trace_test.dart b/tests/corelib/error_stack_trace_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..55be1d3bacc0dbb44710313f1bbc91ef75c2795e |
--- /dev/null |
+++ b/tests/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); |
+ } |
+} |