| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file |  | 
| 2 // for details. All rights reserved. Use of this source code is governed by a |  | 
| 3 // BSD-style license that can be found in the LICENSE file. |  | 
| 4 |  | 
| 5 part of dart.async; |  | 
| 6 |  | 
| 7 _invokeErrorHandler(Function errorHandler, |  | 
| 8                     Object error, StackTrace stackTrace) { |  | 
| 9   if (errorHandler is ZoneBinaryCallback) { |  | 
| 10     return errorHandler(error, stackTrace); |  | 
| 11   } else { |  | 
| 12     ZoneUnaryCallback unaryErrorHandler = errorHandler; |  | 
| 13     return unaryErrorHandler(error); |  | 
| 14   } |  | 
| 15 } |  | 
| 16 |  | 
| 17 Function _registerErrorHandler/*<R>*/(Function errorHandler, Zone zone) { |  | 
| 18   if (errorHandler is ZoneBinaryCallback) { |  | 
| 19     // TODO(leafp): These are commented out, because the async libraries |  | 
| 20     // pass a (...) -> void into this function which fails whenever R |  | 
| 21     // is something interesting.  This needs to be sorted out in the main |  | 
| 22     // SDK as to what the intent is here: if this is really supposed to |  | 
| 23     // return an R, then the function that gets passed in is wrong.  If not, |  | 
| 24     // then this code doesn't need to track the return type at all. |  | 
| 25     //    return zone.registerBinaryCallback/*<R, dynamic, StackTrace>*/( |  | 
| 26     //        errorHandler as dynamic/*=ZoneBinaryCallback<R, dynamic, StackTrac
    e>*/); |  | 
| 27     return zone.registerBinaryCallback/*<dynamic, dynamic, StackTrace>*/( |  | 
| 28         errorHandler as dynamic/*=ZoneBinaryCallback<dynamic, dynamic, StackTrac
    e>*/); |  | 
| 29   } else { |  | 
| 30     //    return zone.registerUnaryCallback/*<R, dynamic>*/( |  | 
| 31     //        errorHandler as dynamic/*=ZoneUnaryCallback<R, dynamic>*/); |  | 
| 32     return zone.registerUnaryCallback/*<dynamic, dynamic>*/( |  | 
| 33         errorHandler as dynamic/*=ZoneUnaryCallback<dynamic, dynamic>*/); |  | 
| 34   } |  | 
| 35 } |  | 
| 36 |  | 
| 37 class _UncaughtAsyncError extends AsyncError { |  | 
| 38   _UncaughtAsyncError(error, StackTrace stackTrace) |  | 
| 39       : super(error, _getBestStackTrace(error, stackTrace)); |  | 
| 40 |  | 
| 41   static StackTrace _getBestStackTrace(error, StackTrace stackTrace) { |  | 
| 42     if (stackTrace != null) return stackTrace; |  | 
| 43     if (error is Error) { |  | 
| 44       return error.stackTrace; |  | 
| 45     } |  | 
| 46     return null; |  | 
| 47   } |  | 
| 48 |  | 
| 49   String toString() { |  | 
| 50     String result = "Uncaught Error: ${error}"; |  | 
| 51 |  | 
| 52     if (stackTrace != null) { |  | 
| 53       result += "\nStack Trace:\n$stackTrace"; |  | 
| 54     } |  | 
| 55     return result; |  | 
| 56   } |  | 
| 57 } |  | 
| OLD | NEW | 
|---|