| Index: sdk/lib/async/async_error.dart
|
| diff --git a/sdk/lib/async/async_error.dart b/sdk/lib/async/async_error.dart
|
| index fa90e8779b1042a31981f5ee19ed926be0b36df3..161b9ef4abfd924b1564fa32c5185b1abc7116c5 100644
|
| --- a/sdk/lib/async/async_error.dart
|
| +++ b/sdk/lib/async/async_error.dart
|
| @@ -4,70 +4,14 @@
|
|
|
| part of dart.async;
|
|
|
| -/**
|
| - * Error result of an asynchronous computation.
|
| - */
|
| -class AsyncError {
|
| - /** The actual error thrown by the computation. */
|
| - final error;
|
| - /** Stack trace corresponding to the error, if available. */
|
| - final Object stackTrace;
|
| - /** Asynchronous error leading to this error, if error handling fails. */
|
| - final AsyncError cause;
|
| +final Expando _stackTraceExpando = new Expando("asynchronous error");
|
|
|
| - // TODO(lrn): When possible, combine into one constructor with both optional
|
| - // positional and named arguments.
|
| - AsyncError(this.error, [this.stackTrace]): cause = null;
|
| - AsyncError.withCause(this.error, this.stackTrace, this.cause);
|
| -
|
| - void _writeOn(StringSink buffer) {
|
| - buffer.write("'");
|
| - String message;
|
| - try {
|
| - message = error.toString();
|
| - } catch (e) {
|
| - message = Error.safeToString(error);
|
| - }
|
| - buffer.write(message);
|
| - buffer.write("'\n");
|
| - if (stackTrace != null) {
|
| - buffer.write("Stack trace:\n");
|
| - buffer.writeln(stackTrace.toString());
|
| - }
|
| - }
|
| -
|
| - String toString() {
|
| - StringBuffer buffer = new StringBuffer();
|
| - buffer.write("AsyncError: ");
|
| - _writeOn(buffer);
|
| - AsyncError cause = this.cause;
|
| - while (cause != null) {
|
| - buffer.write("Caused by: ");
|
| - cause._writeOn(buffer);
|
| - cause = cause.cause;
|
| - }
|
| - return buffer.toString();
|
| - }
|
| -
|
| - throwDelayed() {
|
| - reportError() {
|
| - print("Uncaught Error: $error");
|
| - if (stackTrace != null) {
|
| - print("Stack Trace:\n$stackTrace\n");
|
| - }
|
| - }
|
| -
|
| - try {
|
| - Timer.run(() {
|
| - reportError();
|
| - // TODO(floitsch): we potentially want to call the global error handler
|
| - // directly so that we can pass the stack trace.
|
| - throw error;
|
| - });
|
| - } catch (e) {
|
| - // Unfortunately there is not much more we can do...
|
| - reportError();
|
| - }
|
| - }
|
| +void _attachStackTrace(o, st) {
|
| + if (o == null || o is bool || o is num || o is String) return;
|
| + _stackTraceExpando[o] = st;
|
| }
|
|
|
| +getAttachedStackTrace(o) {
|
| + if (o == null || o is bool || o is num || o is String) return null;
|
| + return _stackTraceExpando[o];
|
| +}
|
|
|