Skip to content

Commit 348ed30

Browse files
mralephcommit-bot@chromium.org
authored andcommitted
[vm/kernel] In async transformation check if strongMode is on.
It seems we are still using non-strong mode targets in few places (e.g. when training front-end server we by accident train it in legacy mode). A separate bug is filed to clean that up #34468 For now to unbreak the build we simply check if we are in the legacy mode and then avoid using getStaticType in async transformation. This is followup to eec96f9. Bug: #34463 Change-Id: Ib693fddfb9abbf89599ae646cb408d4a9c93f1b6 Reviewed-on: https://dart-review.googlesource.com/75061 Commit-Queue: Vyacheslav Egorov <vegorov@google.com> Reviewed-by: Alexander Markov <alexmarkov@google.com>
1 parent c6c4748 commit 348ed30

23 files changed

+75
-89
lines changed

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ library;
22
import self as self;
33
import "dart:async" as asy;
44
import "dart:core" as core;
5-
import "dart:_internal" as _in;
65

76
static field core::List<core::String> stringList = <dynamic>["bar"];
87
static method asyncString() → asy::Future<core::String> /* originally async */ {
@@ -119,7 +118,7 @@ static method asyncStarString() → asy::Stream<core::String> /* originally asyn
119118
else
120119
[yield] null;
121120
[yield] let dynamic #t1 = asy::_awaitHelper(self::asyncString(), :async_op_then, :async_op_error, :async_op) in null;
122-
if(:controller.{asy::_AsyncStarStreamController::add}(_in::unsafeCast<core::String>(:result)))
121+
if(:controller.{asy::_AsyncStarStreamController::add}(:result))
123122
return null;
124123
else
125124
[yield] null;
@@ -188,7 +187,7 @@ static method main() → dynamic /* originally async */ {
188187
#L5:
189188
{
190189
[yield] let dynamic #t2 = asy::_awaitHelper(self::asyncString(), :async_op_then, :async_op_error, :async_op) in null;
191-
core::String str = _in::unsafeCast<core::String>(:result);
190+
core::String str = :result;
192191
}
193192
asy::_completeOnAsyncReturn(:async_completer, :return_value);
194193
return;

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ library;
22
import self as self;
33
import "dart:core" as core;
44
import "dart:async" as asy;
5-
import "dart:_internal" as _in;
65

76
class Node extends core::Object {
87
final field core::List<self::Node> nested;
@@ -44,7 +43,7 @@ static method main() → void /* originally async */ {
4443
[yield] let dynamic #t9 = asy::_awaitHelper(asy::Future::value<dynamic>(new self::Node::•("3", <dynamic>[:result])), :async_op_then, :async_op_error, :async_op) in null;
4544
:async_temporary_0 = :result;
4645
[yield] let dynamic #t10 = asy::_awaitHelper(asy::Future::value<dynamic>(new self::Node::•("10", <dynamic>[])), :async_op_then, :async_op_error, :async_op) in null;
47-
self::Node node = new self::Node::•("1", <dynamic>[_in::unsafeCast<self::Node>(:async_temporary_2), :async_temporary_0, :result]);
46+
self::Node node = new self::Node::•("1", <dynamic>[:async_temporary_2, :async_temporary_0, :result]);
4847
core::String actual = node.toSimpleString();
4948
core::print(actual);
5049
if(!actual.==(expected)) {

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ library;
22
import self as self;
33
import "dart:async" as asy;
44
import "dart:core" as core;
5-
import "dart:_internal" as _in;
65

76
static method main() → dynamic /* originally async */ {
87
final asy::Completer<dynamic> :async_completer = asy::Completer::sync<dynamic>();
@@ -18,7 +17,7 @@ static method main() → dynamic /* originally async */ {
1817
#L1:
1918
{
2019
[yield] let dynamic #t1 = asy::_awaitHelper("Hello, World!", :async_op_then, :async_op_error, :async_op) in null;
21-
core::print(_in::unsafeCast<core::String>(:result));
20+
core::print(:result);
2221
}
2322
asy::_completeOnAsyncReturn(:async_completer, :return_value);
2423
return;

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ library;
22
import self as self;
33
import "dart:core" as core;
44
import "dart:async" as asy;
5-
import "dart:_internal" as _in;
65

76
class X extends core::Object {
87
final field dynamic x;
@@ -90,10 +89,10 @@ static method foo() → asy::Future<self::X> /* originally async */ {
9089
{
9190
final dynamic #t1 = new self::Y::•();
9291
[yield] let dynamic #t2 = asy::_awaitHelper(self::f1(), :async_op_then, :async_op_error, :async_op) in null;
93-
final dynamic #t3 = #t1.f(_in::unsafeCast<core::List<core::Object>>(:result));
92+
final dynamic #t3 = #t1.f(:result);
9493
final dynamic #t4 = #t1.f(self::f2());
9594
[yield] let dynamic #t5 = asy::_awaitHelper(self::f3(), :async_op_then, :async_op_error, :async_op) in null;
96-
:return_value = new self::X::•(#t1, _in::unsafeCast<core::Object>(:result));
95+
:return_value = new self::X::•(#t1, :result);
9796
break #L3;
9897
}
9998
asy::_completeOnAsyncReturn(:async_completer, :return_value);
@@ -122,7 +121,7 @@ static method main() → asy::Future<void> /* originally async */ {
122121
#L4:
123122
{
124123
[yield] let dynamic #t6 = asy::_awaitHelper(self::foo(), :async_op_then, :async_op_error, :async_op) in null;
125-
core::print(_in::unsafeCast<self::X>(:result));
124+
core::print(:result);
126125
}
127126
asy::_completeOnAsyncReturn(:async_completer, :return_value);
128127
return;

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

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ library test;
22
import self as self;
33
import "dart:core" as core;
44
import "dart:async" as asy;
5-
import "dart:_internal" as _in;
65

76
abstract class MyFuture extends core::Object implements asy::Future<core::int> {
87
synthetic constructor •() → void
@@ -303,25 +302,25 @@ static method test() → void /* originally async */ {
303302
return :async_completer.{asy::Completer::future};
304303
}
305304
[yield] let dynamic #t1 = asy::_awaitHelper(x0, :async_op_then, :async_op_error, :async_op) in null;
306-
dynamic y0 = _in::unsafeCast<core::int>(:result);
305+
dynamic y0 = :result;
307306
[yield] let dynamic #t2 = asy::_awaitHelper(x1, :async_op_then, :async_op_error, :async_op) in null;
308-
dynamic y1 = _in::unsafeCast<core::int>(:result);
307+
dynamic y1 = :result;
309308
[yield] let dynamic #t3 = asy::_awaitHelper(x2, :async_op_then, :async_op_error, :async_op) in null;
310-
dynamic y2 = _in::unsafeCast<asy::Future<core::int>>(:result);
309+
dynamic y2 = :result;
311310
[yield] let dynamic #t4 = asy::_awaitHelper(x3, :async_op_then, :async_op_error, :async_op) in null;
312-
dynamic y3 = _in::unsafeCast<asy::FutureOr<core::int>>(:result);
311+
dynamic y3 = :result;
313312
[yield] let dynamic #t5 = asy::_awaitHelper(x4, :async_op_then, :async_op_error, :async_op) in null;
314-
dynamic y4 = _in::unsafeCast<self::MyFuture>(:result);
313+
dynamic y4 = :result;
315314
[yield] let dynamic #t6 = asy::_awaitHelper(x5, :async_op_then, :async_op_error, :async_op) in null;
316-
dynamic y5 = _in::unsafeCast<core::int>(:result);
315+
dynamic y5 = :result;
317316
[yield] let dynamic #t7 = asy::_awaitHelper(x6, :async_op_then, :async_op_error, :async_op) in null;
318-
dynamic y6 = _in::unsafeCast<asy::Future<core::int>>(:result);
317+
dynamic y6 = :result;
319318
[yield] let dynamic #t8 = asy::_awaitHelper(x7, :async_op_then, :async_op_error, :async_op) in null;
320-
dynamic y7 = _in::unsafeCast<asy::FutureOr<core::int>>(:result);
319+
dynamic y7 = :result;
321320
[yield] let dynamic #t9 = asy::_awaitHelper(x8, :async_op_then, :async_op_error, :async_op) in null;
322-
dynamic y8 = _in::unsafeCast<self::MyFuture>(:result);
321+
dynamic y8 = :result;
323322
[yield] let dynamic #t10 = asy::_awaitHelper(x9, :async_op_then, :async_op_error, :async_op) in null;
324-
dynamic y9 = _in::unsafeCast<core::int>(:result);
323+
dynamic y9 = :result;
325324
}
326325
asy::_completeOnAsyncReturn(:async_completer, :return_value);
327326
return;

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ library test;
22
import self as self;
33
import "dart:async" as asy;
44
import "dart:core" as core;
5-
import "dart:_internal" as _in;
65

76
static method main() → asy::Future<dynamic> /* originally async */ {
87
final asy::Completer<dynamic> :async_completer = asy::Completer::sync<dynamic>();
@@ -19,7 +18,7 @@ static method main() → asy::Future<dynamic> /* originally async */ {
1918
{
2019
dynamic d;
2120
[yield] let dynamic #t1 = asy::_awaitHelper(<dynamic>[d], :async_op_then, :async_op_error, :async_op) in null;
22-
core::List<core::int> l0 = _in::unsafeCast<core::List<dynamic>>(:result);
21+
core::List<core::int> l0 = :result;
2322
[yield] let dynamic #t2 = asy::_awaitHelper(asy::Future::value<dynamic>(<dynamic>[d]), :async_op_then, :async_op_error, :async_op) in null;
2423
core::List<core::int> l1 = :result;
2524
}

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

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ library test;
22
import self as self;
33
import "dart:core" as core;
44
import "dart:async" as asy;
5-
import "dart:_internal" as _in;
65

76
abstract class MyStream<T extends core::Object = dynamic> extends asy::Stream<self::MyStream::T> {
87
static factory •<T extends core::Object = dynamic>() → self::MyStream<self::MyStream::•::T>
@@ -50,7 +49,7 @@ static method f() → asy::Future<dynamic> /* originally async */ {
5049
while (true) {
5150
dynamic #t3 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
5251
[yield] let dynamic #t4 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
53-
if(_in::unsafeCast<core::bool>(:result)) {
52+
if(:result) {
5453
dynamic x = :for-iterator.{asy::_StreamIterator::current};
5554
{}
5655
}
@@ -73,7 +72,7 @@ static method f() → asy::Future<dynamic> /* originally async */ {
7372
while (true) {
7473
dynamic #t6 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
7574
[yield] let dynamic #t7 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
76-
if(_in::unsafeCast<core::bool>(:result)) {
75+
if(:result) {
7776
dynamic x = :for-iterator.{asy::_StreamIterator::current};
7877
{}
7978
}
@@ -96,7 +95,7 @@ static method f() → asy::Future<dynamic> /* originally async */ {
9695
while (true) {
9796
dynamic #t9 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
9897
[yield] let dynamic #t10 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
99-
if(_in::unsafeCast<core::bool>(:result)) {
98+
if(:result) {
10099
core::Object x = :for-iterator.{asy::_StreamIterator::current};
101100
{}
102101
}
@@ -119,7 +118,7 @@ static method f() → asy::Future<dynamic> /* originally async */ {
119118
while (true) {
120119
dynamic #t12 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
121120
[yield] let dynamic #t13 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
122-
if(_in::unsafeCast<core::bool>(:result)) {
121+
if(:result) {
123122
final dynamic #t14 = :for-iterator.{asy::_StreamIterator::current};
124123
{
125124
d = #t14;
@@ -144,7 +143,7 @@ static method f() → asy::Future<dynamic> /* originally async */ {
144143
while (true) {
145144
dynamic #t16 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
146145
[yield] let dynamic #t17 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
147-
if(_in::unsafeCast<core::bool>(:result)) {
146+
if(:result) {
148147
final dynamic #t18 = :for-iterator.{asy::_StreamIterator::current};
149148
{
150149
o = #t18;
@@ -204,7 +203,7 @@ static method main() → asy::Future<dynamic> /* originally async */ {
204203
while (true) {
205204
dynamic #t20 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
206205
[yield] let dynamic #t21 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
207-
if(_in::unsafeCast<core::bool>(:result)) {
206+
if(:result) {
208207
core::int x = :for-iterator.{asy::_StreamIterator::current};
209208
{}
210209
}
@@ -227,7 +226,7 @@ static method main() → asy::Future<dynamic> /* originally async */ {
227226
while (true) {
228227
dynamic #t23 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
229228
[yield] let dynamic #t24 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
230-
if(_in::unsafeCast<core::bool>(:result)) {
229+
if(:result) {
231230
dynamic x = :for-iterator.{asy::_StreamIterator::current};
232231
{}
233232
}

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ library test;
22
import self as self;
33
import "dart:async" as asy;
44
import "dart:core" as core;
5-
import "dart:_internal" as _in;
65

76
static method test() → dynamic /* originally async */ {
87
final asy::Completer<dynamic> :async_completer = asy::Completer::sync<dynamic>();
@@ -33,7 +32,7 @@ static method test() → dynamic /* originally async */ {
3332
while (true) {
3433
dynamic #t1 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
3534
[yield] let dynamic #t2 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
36-
if(_in::unsafeCast<core::bool>(:result)) {
35+
if(:result) {
3736
dynamic x = :for-iterator.{asy::_StreamIterator::current};
3837
{}
3938
}
@@ -60,7 +59,7 @@ static method test() → dynamic /* originally async */ {
6059
while (true) {
6160
dynamic #t5 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
6261
[yield] let dynamic #t6 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
63-
if(_in::unsafeCast<core::bool>(:result)) {
62+
if(:result) {
6463
final dynamic #t7 = :for-iterator.{asy::_StreamIterator::current};
6564
{
6665
y = #t7;

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ library test;
22
import self as self;
33
import "dart:core" as core;
44
import "dart:async" as asy;
5-
import "dart:_internal" as _in;
65

76
class MyFuture<T extends core::Object = dynamic> extends core::Object implements asy::Future<self::MyFuture::T> {
87
constructor •() → void
@@ -38,7 +37,7 @@ static method test() → void {
3837
#L1:
3938
{
4039
[yield] let dynamic #t1 = asy::_awaitHelper(asy::Future::value<core::int>(3), :async_op_then, :async_op_error, :async_op) in null;
41-
:return_value = _in::unsafeCast<core::int>(:result);
40+
:return_value = :result;
4241
break #L1;
4342
}
4443
asy::_completeOnAsyncReturn(:async_completer, :return_value);
@@ -67,7 +66,7 @@ static method test() → void {
6766
#L2:
6867
{
6968
[yield] let dynamic #t2 = asy::_awaitHelper(asy::Future::value<core::int>(3), :async_op_then, :async_op_error, :async_op) in null;
70-
:return_value = _in::unsafeCast<core::int>(:result);
69+
:return_value = :result;
7170
break #L2;
7271
}
7372
asy::_completeOnAsyncReturn(:async_completer, :return_value);

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ library test;
22
import self as self;
33
import "dart:core" as core;
44
import "dart:async" as asy;
5-
import "dart:_internal" as _in;
65

76
class MyFuture<T extends core::Object = dynamic> extends core::Object implements asy::Future<self::MyFuture::T> {
87
constructor •() → void
@@ -38,7 +37,7 @@ static method test() → void {
3837
#L1:
3938
{
4039
[yield] let dynamic #t1 = asy::_awaitHelper(new self::MyFuture::value<core::int>(3), :async_op_then, :async_op_error, :async_op) in null;
41-
:return_value = _in::unsafeCast<core::int>(:result);
40+
:return_value = :result;
4241
break #L1;
4342
}
4443
asy::_completeOnAsyncReturn(:async_completer, :return_value);
@@ -67,7 +66,7 @@ static method test() → void {
6766
#L2:
6867
{
6968
[yield] let dynamic #t2 = asy::_awaitHelper(new self::MyFuture::value<core::int>(3), :async_op_then, :async_op_error, :async_op) in null;
70-
:return_value = _in::unsafeCast<core::int>(:result);
69+
:return_value = :result;
7170
break #L2;
7271
}
7372
asy::_completeOnAsyncReturn(:async_completer, :return_value);

0 commit comments

Comments
 (0)