| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library utils; | 5 library utils; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 | 8 |
| 9 import 'package:stack_trace/stack_trace.dart'; | 9 import 'package:stack_trace/stack_trace.dart'; |
| 10 | 10 |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 } catch (_, thrownStackTrace) { | 100 } catch (_, thrownStackTrace) { |
| 101 stackTrace = thrownStackTrace; | 101 stackTrace = thrownStackTrace; |
| 102 } | 102 } |
| 103 | 103 |
| 104 var completer = new Completer(); | 104 var completer = new Completer(); |
| 105 var subscription; | 105 var subscription; |
| 106 subscription = stream.listen((value) { | 106 subscription = stream.listen((value) { |
| 107 subscription.cancel(); | 107 subscription.cancel(); |
| 108 completer.complete(value); | 108 completer.complete(value); |
| 109 }, onError: (e) { | 109 }, onError: (e) { |
| 110 completer.completeError(e.error, e.stackTrace); | 110 completer.completeError(e); |
| 111 }, onDone: () { | 111 }, onDone: () { |
| 112 completer.completeError(new StateError("No elements"), stackTrace); | 112 completer.completeError(new StateError("No elements"), stackTrace); |
| 113 }, cancelOnError: true); | 113 }, cancelOnError: true); |
| 114 return completer.future; | 114 return completer.future; |
| 115 } | 115 } |
| 116 | 116 |
| 117 /// A function that can be called to cancel a [Stream] and send a done message. | 117 /// A function that can be called to cancel a [Stream] and send a done message. |
| 118 typedef void StreamCanceller(); | 118 typedef void StreamCanceller(); |
| 119 | 119 |
| 120 // TODO(nweiz): use a StreamSubscription when issue 9026 is fixed. | 120 // TODO(nweiz): use a StreamSubscription when issue 9026 is fixed. |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 186 } | 186 } |
| 187 | 187 |
| 188 /// Returns a string representation of [trace] that has the core and test frames | 188 /// Returns a string representation of [trace] that has the core and test frames |
| 189 /// folded together. | 189 /// folded together. |
| 190 String terseTraceString(StackTrace trace) { | 190 String terseTraceString(StackTrace trace) { |
| 191 return new Trace.from(trace).terse.foldFrames((frame) { | 191 return new Trace.from(trace).terse.foldFrames((frame) { |
| 192 return frame.package == 'scheduled_test' || frame.package == 'unittest' || | 192 return frame.package == 'scheduled_test' || frame.package == 'unittest' || |
| 193 frame.isCore; | 193 frame.isCore; |
| 194 }).toString().trim(); | 194 }).toString().trim(); |
| 195 } | 195 } |
| OLD | NEW |