File tree 3 files changed +20
-2
lines changed
3 files changed +20
-2
lines changed Original file line number Diff line number Diff line change @@ -1994,4 +1994,4 @@ refs/tags/2.14.0-96.0.dev: 1eee24e50fc3028754d9a8e98852b949c04da4e4
1994
1994
refs/tags/2.14.0-97.0.dev: ba9c1636e87fbdcc02b8bc4a584455c32f8378b4
1995
1995
refs/tags/2.14.0-98.0.dev: f2d370c93582bbf4da42b5dd4c906d6145b01ea9
1996
1996
refs/tags/2.14.0-99.0.dev: e722f62b48fb382534efc1f20735def68848006f
1997
- refs/heads/main: 5cb6cb0fa345d0f538811a65c2aaad69b34f7422
1997
+ refs/heads/main: 2374654f1fdffd404ca9dc595e698c62f72fea90
Original file line number Diff line number Diff line change @@ -235,7 +235,11 @@ class _FutureImpl<T> implements Future<T> {
235
235
completer.complete (result);
236
236
}
237
237
} catch (innerException, stackTrace) {
238
- completer.completeException (innerException, stackTrace);
238
+ if (identical (ex, innerException)) {
239
+ completer.completeException (innerException, this .stackTrace);
240
+ } else {
241
+ completer.completeException (innerException, stackTrace);
242
+ }
239
243
}
240
244
return false ;
241
245
});
Original file line number Diff line number Diff line change @@ -351,6 +351,19 @@ testCallStackIsCapturedIfChainCallbackThrows() {
351
351
Expect .isNotNull (chained.stackTrace);
352
352
}
353
353
354
+ testCallStackIsPreservedIfExceptionIsRethrownInTransformException () {
355
+ final completer = new Completer ();
356
+ var chained = completer.future.chain ((_) {
357
+ throw 'whoops!' ;
358
+ });
359
+ var transformed = chained.transformException ((e) {
360
+ throw e;
361
+ });
362
+
363
+ completer.complete ('blah' );
364
+ Expect .equals (transformed.stackTrace, chained.stackTrace);
365
+ }
366
+
354
367
// Tests for mixed usage of [onComplete], [then], and [handleException]
355
368
356
369
testCompleteWithCompletionAndSuccessHandlers () {
@@ -677,6 +690,7 @@ main() {
677
690
testCallStackReturnsCallstackPassedToCompleteException ();
678
691
testCallStackIsCapturedIfTransformCallbackThrows ();
679
692
testCallStackIsCapturedIfChainCallbackThrows ();
693
+ testCallStackIsPreservedIfExceptionIsRethrownInTransformException ();
680
694
testCompleteWithCompletionAndSuccessHandlers ();
681
695
testExceptionWithCompletionAndSuccessHandlers ();
682
696
testExceptionWithCompletionAndSuccessAndExceptionHandlers ();
You can’t perform that action at this time.
0 commit comments