Skip to content

Commit ac8fdb5

Browse files
jensjohacommit-bot@chromium.org
authored andcommitted
Add :controller_stream and call _asyncStarListenHelper
This changes how we step out of async* functions slightly to match how Dart1 behaves. Bug: dart-lang#29158 Change-Id: I8ee2df5eee8167fd1907a6e9f30c9dc7ab6939b1 Reviewed-on: https://dart-review.googlesource.com/63625 Commit-Queue: Jens Johansen <[email protected]> Reviewed-by: Vyacheslav Egorov <[email protected]>
1 parent 2e98da6 commit ac8fdb5

File tree

28 files changed

+146
-26
lines changed

28 files changed

+146
-26
lines changed

pkg/front_end/testcases/async_function.dart.direct.transformed.expect

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ static method syncStarString2() → core::Iterable<core::String> /* originally s
9696
}
9797
static method asyncStarString() → asy::Stream<core::String> /* originally async* */ {
9898
asy::_AsyncStarStreamController<core::String> :controller;
99+
dynamic :controller_stream;
99100
dynamic :async_stack_trace;
100101
dynamic :async_op_then;
101102
dynamic :async_op_error;
@@ -134,10 +135,12 @@ static method asyncStarString() → asy::Stream<core::String> /* originally asyn
134135
:async_op_then = asy::_asyncThenWrapperHelper(:async_op);
135136
:async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
136137
:controller = new asy::_AsyncStarStreamController::•<core::String>(:async_op);
137-
return :controller.{asy::_AsyncStarStreamController::stream};
138+
:controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
139+
return :controller_stream;
138140
}
139141
static method asyncStarString2() → asy::Stream<core::String> /* originally async* */ {
140142
asy::_AsyncStarStreamController<core::String> :controller;
143+
dynamic :controller_stream;
141144
dynamic :async_stack_trace;
142145
dynamic :async_op_then;
143146
dynamic :async_op_error;
@@ -167,7 +170,8 @@ static method asyncStarString2() → asy::Stream<core::String> /* originally asy
167170
:async_op_then = asy::_asyncThenWrapperHelper(:async_op);
168171
:async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
169172
:controller = new asy::_AsyncStarStreamController::•<core::String>(:async_op);
170-
return :controller.{asy::_AsyncStarStreamController::stream};
173+
:controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
174+
return :controller_stream;
171175
}
172176
static method main() → dynamic /* originally async */ {
173177
final asy::Completer<dynamic> :async_completer = asy::Completer::sync<dynamic>();

pkg/front_end/testcases/inference/block_bodied_lambdas_async_star.dart.direct.transformed.expect

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import "dart:core" as core;
66
static method test() → dynamic {
77
dynamic f = () → asy::Stream<dynamic> /* originally async* */ {
88
asy::_AsyncStarStreamController<dynamic> :controller;
9+
dynamic :controller_stream;
910
dynamic :async_stack_trace;
1011
dynamic :async_op_then;
1112
dynamic :async_op_error;
@@ -40,7 +41,8 @@ static method test() → dynamic {
4041
:async_op_then = asy::_asyncThenWrapperHelper(:async_op);
4142
:async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
4243
:controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
43-
return :controller.{asy::_AsyncStarStreamController::stream};
44+
:controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
45+
return :controller_stream;
4446
};
4547
asy::Stream<core::num> g = f.call();
4648
asy::Stream<core::int> h = f.call();

pkg/front_end/testcases/inference/block_bodied_lambdas_async_star.dart.strong.transformed.expect

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import "dart:core" as core;
66
static method test() → dynamic {
77
() → asy::Stream<core::num> f = () → asy::Stream<core::num> /* originally async* */ {
88
asy::_AsyncStarStreamController<core::num> :controller;
9+
dynamic :controller_stream;
910
dynamic :async_stack_trace;
1011
dynamic :async_op_then;
1112
dynamic :async_op_error;
@@ -40,7 +41,8 @@ static method test() → dynamic {
4041
:async_op_then = asy::_asyncThenWrapperHelper(:async_op);
4142
:async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
4243
:controller = new asy::_AsyncStarStreamController::•<core::num>(:async_op);
43-
return :controller.{asy::_AsyncStarStreamController::stream};
44+
:controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
45+
return :controller_stream;
4446
};
4547
asy::Stream<core::num> g = f.call();
4648
asy::Stream<core::int> h = f.call() as{TypeError} asy::Stream<core::int>;

pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.direct.transformed.expect

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ static method main() → dynamic /* originally async */ {
1818
{
1919
dynamic f = () → asy::Stream<dynamic> /* originally async* */ {
2020
asy::_AsyncStarStreamController<dynamic> :controller;
21+
dynamic :controller_stream;
2122
dynamic :async_stack_trace;
2223
dynamic :async_op_then;
2324
dynamic :async_op_error;
@@ -47,7 +48,8 @@ static method main() → dynamic /* originally async */ {
4748
:async_op_then = asy::_asyncThenWrapperHelper(:async_op);
4849
:async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
4950
:controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
50-
return :controller.{asy::_AsyncStarStreamController::stream};
51+
:controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
52+
return :controller_stream;
5153
};
5254
asy::Stream<dynamic> y = f.call();
5355
asy::Stream<core::String> z = f.call();

pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.strong.transformed.expect

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ static method main() → dynamic /* originally async */ {
1818
{
1919
() → asy::Stream<core::Null> f = () → asy::Stream<core::Null> /* originally async* */ {
2020
asy::_AsyncStarStreamController<core::Null> :controller;
21+
dynamic :controller_stream;
2122
dynamic :async_stack_trace;
2223
dynamic :async_op_then;
2324
dynamic :async_op_error;
@@ -47,7 +48,8 @@ static method main() → dynamic /* originally async */ {
4748
:async_op_then = asy::_asyncThenWrapperHelper(:async_op);
4849
:async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
4950
:controller = new asy::_AsyncStarStreamController::•<core::Null>(:async_op);
50-
return :controller.{asy::_AsyncStarStreamController::stream};
51+
:controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
52+
return :controller_stream;
5153
};
5254
asy::Stream<dynamic> y = f.call();
5355
asy::Stream<core::String> z = f.call();

pkg/front_end/testcases/inference/downwards_inference_for_each.dart.direct.transformed.expect

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ static method f() → asy::Future<dynamic> /* originally async */ {
4141
}
4242
{
4343
dynamic :stream = self::F<dynamic>();
44+
asy::_asyncStarListenHelper(:stream, :async_op);
4445
asy::_StreamIterator<dynamic> :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
4546
const core::bool :product-mode = const core::bool::fromEnvironment("dart.vm.product");
4647
try
@@ -63,6 +64,7 @@ static method f() → asy::Future<dynamic> /* originally async */ {
6364
}
6465
{
6566
dynamic :stream = self::F<dynamic>();
67+
asy::_asyncStarListenHelper(:stream, :async_op);
6668
asy::_StreamIterator<dynamic> :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
6769
const core::bool :product-mode = const core::bool::fromEnvironment("dart.vm.product");
6870
try
@@ -85,6 +87,7 @@ static method f() → asy::Future<dynamic> /* originally async */ {
8587
}
8688
{
8789
dynamic :stream = self::F<dynamic>();
90+
asy::_asyncStarListenHelper(:stream, :async_op);
8891
asy::_StreamIterator<core::Object> :for-iterator = new asy::_StreamIterator::•<core::Object>(:stream);
8992
const core::bool :product-mode = const core::bool::fromEnvironment("dart.vm.product");
9093
try
@@ -107,6 +110,7 @@ static method f() → asy::Future<dynamic> /* originally async */ {
107110
}
108111
{
109112
dynamic :stream = self::F<dynamic>();
113+
asy::_asyncStarListenHelper(:stream, :async_op);
110114
asy::_StreamIterator<dynamic> :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
111115
const core::bool :product-mode = const core::bool::fromEnvironment("dart.vm.product");
112116
try
@@ -131,6 +135,7 @@ static method f() → asy::Future<dynamic> /* originally async */ {
131135
}
132136
{
133137
dynamic :stream = self::F<dynamic>();
138+
asy::_asyncStarListenHelper(:stream, :async_op);
134139
asy::_StreamIterator<dynamic> :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
135140
const core::bool :product-mode = const core::bool::fromEnvironment("dart.vm.product");
136141
try
@@ -190,6 +195,7 @@ static method main() → asy::Future<dynamic> /* originally async */ {
190195
}
191196
{
192197
dynamic :stream = self::MyStream::•<dynamic>();
198+
asy::_asyncStarListenHelper(:stream, :async_op);
193199
asy::_StreamIterator<core::int> :for-iterator = new asy::_StreamIterator::•<core::int>(:stream);
194200
const core::bool :product-mode = const core::bool::fromEnvironment("dart.vm.product");
195201
try
@@ -212,6 +218,7 @@ static method main() → asy::Future<dynamic> /* originally async */ {
212218
}
213219
{
214220
dynamic :stream = self::MyStream::•<core::int>();
221+
asy::_asyncStarListenHelper(:stream, :async_op);
215222
asy::_StreamIterator<dynamic> :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
216223
const core::bool :product-mode = const core::bool::fromEnvironment("dart.vm.product");
217224
try

pkg/front_end/testcases/inference/downwards_inference_for_each.dart.strong.transformed.expect

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ static method f() → asy::Future<dynamic> /* originally async */ {
4141
}
4242
{
4343
dynamic :stream = self::F<asy::Stream<dynamic>>();
44+
asy::_asyncStarListenHelper(:stream, :async_op);
4445
asy::_StreamIterator<dynamic> :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
4546
const core::bool :product-mode = const core::bool::fromEnvironment("dart.vm.product");
4647
try
@@ -63,6 +64,7 @@ static method f() → asy::Future<dynamic> /* originally async */ {
6364
}
6465
{
6566
dynamic :stream = self::F<asy::Stream<dynamic>>();
67+
asy::_asyncStarListenHelper(:stream, :async_op);
6668
asy::_StreamIterator<dynamic> :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
6769
const core::bool :product-mode = const core::bool::fromEnvironment("dart.vm.product");
6870
try
@@ -85,6 +87,7 @@ static method f() → asy::Future<dynamic> /* originally async */ {
8587
}
8688
{
8789
dynamic :stream = self::F<asy::Stream<core::Object>>();
90+
asy::_asyncStarListenHelper(:stream, :async_op);
8891
asy::_StreamIterator<core::Object> :for-iterator = new asy::_StreamIterator::•<core::Object>(:stream);
8992
const core::bool :product-mode = const core::bool::fromEnvironment("dart.vm.product");
9093
try
@@ -107,6 +110,7 @@ static method f() → asy::Future<dynamic> /* originally async */ {
107110
}
108111
{
109112
dynamic :stream = self::F<asy::Stream<dynamic>>();
113+
asy::_asyncStarListenHelper(:stream, :async_op);
110114
asy::_StreamIterator<dynamic> :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
111115
const core::bool :product-mode = const core::bool::fromEnvironment("dart.vm.product");
112116
try
@@ -131,6 +135,7 @@ static method f() → asy::Future<dynamic> /* originally async */ {
131135
}
132136
{
133137
dynamic :stream = self::F<asy::Stream<core::Object>>();
138+
asy::_asyncStarListenHelper(:stream, :async_op);
134139
asy::_StreamIterator<core::Object> :for-iterator = new asy::_StreamIterator::•<core::Object>(:stream);
135140
const core::bool :product-mode = const core::bool::fromEnvironment("dart.vm.product");
136141
try
@@ -190,6 +195,7 @@ static method main() → asy::Future<dynamic> /* originally async */ {
190195
}
191196
{
192197
dynamic :stream = self::MyStream::•<core::int>();
198+
asy::_asyncStarListenHelper(:stream, :async_op);
193199
asy::_StreamIterator<core::int> :for-iterator = new asy::_StreamIterator::•<core::int>(:stream);
194200
const core::bool :product-mode = const core::bool::fromEnvironment("dart.vm.product");
195201
try
@@ -212,6 +218,7 @@ static method main() → asy::Future<dynamic> /* originally async */ {
212218
}
213219
{
214220
dynamic :stream = self::MyStream::•<core::int>();
221+
asy::_asyncStarListenHelper(:stream, :async_op);
215222
asy::_StreamIterator<core::int> :for-iterator = new asy::_StreamIterator::•<core::int>(:stream);
216223
const core::bool :product-mode = const core::bool::fromEnvironment("dart.vm.product");
217224
try

pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.direct.transformed.expect

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ abstract class MyStream<T extends core::Object = dynamic> extends asy::Stream<se
99
}
1010
static method foo() → asy::Stream<core::List<core::int>> /* originally async* */ {
1111
asy::_AsyncStarStreamController<core::List<core::int>> :controller;
12+
dynamic :controller_stream;
1213
dynamic :async_stack_trace;
1314
dynamic :async_op_then;
1415
dynamic :async_op_error;
@@ -50,7 +51,8 @@ static method foo() → asy::Stream<core::List<core::int>> /* originally async*
5051
:async_op_then = asy::_asyncThenWrapperHelper(:async_op);
5152
:async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
5253
:controller = new asy::_AsyncStarStreamController::•<core::List<core::int>>(:async_op);
53-
return :controller.{asy::_AsyncStarStreamController::stream};
54+
:controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
55+
return :controller_stream;
5456
}
5557
static method bar() → core::Iterable<core::Map<core::int, core::int>> /* originally sync* */ {
5658
dynamic :await_jump_var = 0;

pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.direct.transformed.expect

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ static method test() → dynamic /* originally async */ {
2424
}
2525
{
2626
dynamic :stream = o;
27+
asy::_asyncStarListenHelper(:stream, :async_op);
2728
asy::_StreamIterator<dynamic> :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
2829
const core::bool :product-mode = const core::bool::fromEnvironment("dart.vm.product");
2930
try
@@ -50,6 +51,7 @@ static method test() → dynamic /* originally async */ {
5051
}
5152
{
5253
dynamic :stream = o;
54+
asy::_asyncStarListenHelper(:stream, :async_op);
5355
asy::_StreamIterator<dynamic> :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
5456
const core::bool :product-mode = const core::bool::fromEnvironment("dart.vm.product");
5557
try

pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.strong.transformed.expect

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ static method test() → dynamic /* originally async */ {
2424
}
2525
{
2626
dynamic :stream = o as{TypeError} asy::Stream<dynamic>;
27+
asy::_asyncStarListenHelper(:stream, :async_op);
2728
asy::_StreamIterator<dynamic> :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
2829
const core::bool :product-mode = const core::bool::fromEnvironment("dart.vm.product");
2930
try
@@ -50,6 +51,7 @@ static method test() → dynamic /* originally async */ {
5051
}
5152
{
5253
dynamic :stream = o as{TypeError} asy::Stream<dynamic>;
54+
asy::_asyncStarListenHelper(:stream, :async_op);
5355
asy::_StreamIterator<dynamic> :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
5456
const core::bool :product-mode = const core::bool::fromEnvironment("dart.vm.product");
5557
try

0 commit comments

Comments
 (0)