Index: sdk/lib/core/errors.dart |
diff --git a/sdk/lib/core/errors.dart b/sdk/lib/core/errors.dart |
index 941e1cd818001c79f6692b9cb127fa84ea25065d..060eba7c5a82d39a742a65b07a8f4896ab5ea331 100644 |
--- a/sdk/lib/core/errors.dart |
+++ b/sdk/lib/core/errors.dart |
@@ -5,9 +5,7 @@ |
part of dart.core; |
class Error { |
- final StackTrace stackTrace; |
- |
- Error() : stackTrace = ((){ try { throw 0; } catch (e, s) { return s; } })(); |
+ const Error(); |
/** |
* Safely convert a value to a [String] description. |
@@ -40,24 +38,18 @@ class Error { |
* Error thrown by the runtime system when an assert statement fails. |
*/ |
class AssertionError implements Error { |
- /** Assertion errors don't capture stack traces. */ |
- StackTrace get stackTrace => null; |
} |
/** |
* Error thrown by the runtime system when a type assertion fails. |
*/ |
class TypeError implements AssertionError { |
- /** Type errors don't capture stack traces. */ |
- StackTrace get stackTrace => null; |
} |
/** |
* Error thrown by the runtime system when a cast operation fails. |
*/ |
class CastError implements Error { |
- /** Cast errors don't capture stack traces. */ |
- StackTrace get stackTrace => null; |
} |
/** |
@@ -65,15 +57,13 @@ class CastError implements Error { |
*/ |
class NullThrownError implements Error { |
const NullThrownError(); |
- /** NullThrown errors don't capture stack traces. */ |
- StackTrace get stackTrace => null; |
String toString() => "Throw of null."; |
} |
/** |
* Error thrown when a function is passed an unacceptable argument. |
*/ |
-class ArgumentError extends Error { |
+class ArgumentError implements Error { |
final message; |
/** The [message] describes the erroneous argument. */ |
@@ -122,19 +112,15 @@ class RangeError extends ArgumentError { |
*/ |
class FallThroughError implements Error { |
const FallThroughError(); |
- StackTrace get stackTrace => null; |
} |
-// TODO(lrn): Class description. Ensure that this is the class thrown by |
-// both implementations, or move it to the one that uses it. |
+ |
class AbstractClassInstantiationError implements Error { |
final String _className; |
const AbstractClassInstantiationError(String this._className); |
- StackTrace get stackTrace => null; |
String toString() => "Cannot instantiate abstract class: '$_className'"; |
} |
- |
/** |
* Error thrown by the default implementation of [:noSuchMethod:] on [Object]. |
*/ |
@@ -159,15 +145,13 @@ class NoSuchMethodError implements Error { |
* method with the same name on the receiver, if available. This is |
* the method that would have been called if the parameters had matched. |
*/ |
- NoSuchMethodError(Object this._receiver, |
+ const NoSuchMethodError(Object this._receiver, |
String this._memberName, |
List this._arguments, |
Map<String,dynamic> this._namedArguments, |
[List existingArgumentNames = null]) |
: this._existingArgumentNames = existingArgumentNames; |
- StackTrace get stackTrace => null; |
- |
external String toString(); |
} |
@@ -178,7 +162,7 @@ class NoSuchMethodError implements Error { |
* This [Error] is thrown when an instance cannot implement one of the methods |
* in its signature. |
*/ |
-class UnsupportedError extends Error { |
+class UnsupportedError implements Error { |
final String message; |
UnsupportedError(this.message); |
String toString() => "Unsupported operation: $message"; |
@@ -195,8 +179,9 @@ class UnsupportedError extends Error { |
* an [UnsupportedError] instead. This error is only intended for |
* use during development. |
*/ |
-class UnimplementedError extends UnsupportedError { |
- UnimplementedError([String message]) : super(message); |
+class UnimplementedError implements UnsupportedError { |
+ final String message; |
+ UnimplementedError([String this.message]); |
String toString() => (this.message != null |
? "UnimplementedError: $message" |
: "UnimplementedError"); |
@@ -209,7 +194,7 @@ class UnimplementedError extends UnsupportedError { |
* This is a generic error used for a variety of different erroneous |
* actions. The message should be descriptive. |
*/ |
-class StateError extends Error { |
+class StateError implements Error { |
final String message; |
StateError(this.message); |
String toString() => "Bad state: $message"; |
@@ -223,11 +208,11 @@ class StateError extends Error { |
* ([Iterable] or similar collection of values) should declare which operations |
* are allowed during an iteration. |
*/ |
-class ConcurrentModificationError extends Error { |
+class ConcurrentModificationError implements Error { |
/** The object that was modified in an incompatible way. */ |
final Object modifiedObject; |
- ConcurrentModificationError([this.modifiedObject]); |
+ const ConcurrentModificationError([this.modifiedObject]); |
String toString() { |
if (modifiedObject == null) { |
@@ -241,14 +226,12 @@ class ConcurrentModificationError extends Error { |
class OutOfMemoryError implements Error { |
const OutOfMemoryError(); |
- StackTrace get stackTrace => null; |
String toString() => "Out of Memory"; |
} |
class StackOverflowError implements Error { |
const StackOverflowError(); |
- StackTrace get stackTrace => null; |
String toString() => "Stack Overflow"; |
} |
@@ -262,7 +245,6 @@ class StackOverflowError implements Error { |
class CyclicInitializationError implements Error { |
final String variableName; |
const CyclicInitializationError([this.variableName]); |
- StackTrace get stackTrace => null; |
String toString() => variableName == null |
? "Reading static variable during its initialization" |
: "Reading static variable '$variableName' during its initialization"; |