diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart index 305edab0934..ff5247a8531 100644 --- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart +++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart @@ -1294,6 +1294,10 @@ class BodyBuilder extends StackListenerImpl body); body = inferredFunctionBody.body; builder.function.futureValueType = inferredFunctionBody.futureValueType; + assert( + !(builder.function.asyncMarker == AsyncMarker.Async && + builder.function.futureValueType == null), + "No future value type computed."); libraryBuilder.loader.transformPostInference(body, transformSetLiterals, transformCollections, libraryBuilder.library); } diff --git a/pkg/front_end/lib/src/fasta/type_inference/closure_context.dart b/pkg/front_end/lib/src/fasta/type_inference/closure_context.dart index b6e02884fef..4d4607250a6 100644 --- a/pkg/front_end/lib/src/fasta/type_inference/closure_context.dart +++ b/pkg/front_end/lib/src/fasta/type_inference/closure_context.dart @@ -65,8 +65,12 @@ abstract class ClosureContext { computeFutureValueType(inferrer.coreTypes, declaredReturnType); } } else { - returnContext = inferrer.wrapFutureOrType( - inferrer.typeSchemaEnvironment.flatten(returnContext)); + DartType flattenedType = + inferrer.typeSchemaEnvironment.flatten(returnContext); + returnContext = inferrer.wrapFutureOrType(flattenedType); + if (!needToInferReturnType) { + futureValueType = flattenedType; + } } return new _AsyncClosureContext(returnContext, declaredReturnType, needToInferReturnType, futureValueType); @@ -815,6 +819,8 @@ class _AsyncClosureContext implements ClosureContext { if (inferrer.isNonNullableByDefault) { futureValueType = computeFutureValueType(inferrer.coreTypes, inferredType); + } else { + futureValueType = inferrer.typeSchemaEnvironment.flatten(inferredType); } if (!inferrer.isTopLevel) { for (int i = 0; i < _returnStatements!.length; ++i) { diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart index 69e37784457..1f1f6b29533 100644 --- a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart +++ b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart @@ -2105,10 +2105,7 @@ class TypeInferrerImpl implements TypeInferrer { result = closureContext!.handleImplicitReturn(this, body, result, fileOffset); DartType? futureValueType = closureContext!.futureValueType; - assert( - !(isNonNullableByDefault && - asyncMarker == AsyncMarker.Async && - futureValueType == null), + assert(!(asyncMarker == AsyncMarker.Async && futureValueType == null), "No future value type computed."); closureContext = null; this.helper = null; @@ -2863,8 +2860,7 @@ class TypeInferrerImpl implements TypeInferrer { this, function.body!, bodyResult, fileOffset); function.futureValueType = closureContext.futureValueType; assert( - !(isNonNullableByDefault && - function.asyncMarker == AsyncMarker.Async && + !(function.asyncMarker == AsyncMarker.Async && function.futureValueType == null), "No future value type computed."); diff --git a/pkg/front_end/test/static_types/data/for_in.dart b/pkg/front_end/test/static_types/data/for_in.dart index 922bee59d78..6974c3c122f 100644 --- a/pkg/front_end/test/static_types/data/for_in.dart +++ b/pkg/front_end/test/static_types/data/for_in.dart @@ -48,7 +48,7 @@ forInIntToNum(List list) { } } -/*cfe:nnbd.member: asyncForInDynamicStream:futureValueType=dynamic*/ +/*member: asyncForInDynamicStream:futureValueType=dynamic*/ asyncForInDynamicStream(dynamic stream) async { /*current: dynamic*/ await for (var e in @@ -59,7 +59,7 @@ asyncForInDynamicStream(dynamic stream) async { } } -/*cfe:nnbd.member: asyncForInDynamic:futureValueType=dynamic*/ +/*member: asyncForInDynamic:futureValueType=dynamic*/ asyncForInDynamic(Stream stream) async { /*current: dynamic*/ await for (var e in @@ -70,7 +70,7 @@ asyncForInDynamic(Stream stream) async { } } -/*cfe:nnbd.member: asyncForInInt:futureValueType=dynamic*/ +/*member: asyncForInInt:futureValueType=dynamic*/ asyncForInInt(Stream stream) async { /*cfe.current: int*/ /*cfe:nnbd.current: int!*/ @@ -84,7 +84,7 @@ asyncForInInt(Stream stream) async { } } -/*cfe:nnbd.member: asyncForInIntToNum:futureValueType=dynamic*/ +/*member: asyncForInIntToNum:futureValueType=dynamic*/ asyncForInIntToNum(Stream stream) async { /*cfe.current: int*/ /*cfe:nnbd.current: int!*/ @@ -119,7 +119,7 @@ abstract class CustomStream implements Stream { Iterator get iterator; } -/*cfe:nnbd.member: customStream:futureValueType=dynamic*/ +/*member: customStream:futureValueType=dynamic*/ customStream(CustomStream stream) async { /*cfe.current: num*/ /*cfe:nnbd.current: num!*/ @@ -158,7 +158,7 @@ abstract class StreamWithCustomIterator implements Stream { CustomIterator get iterator; } -/*cfe:nnbd.member: customStreamIterator:futureValueType=dynamic*/ +/*member: customStreamIterator:futureValueType=dynamic*/ customStreamIterator(StreamWithCustomIterator stream) async { /*cfe.current: num*/ /*cfe:nnbd.current: num!*/ @@ -183,7 +183,7 @@ void genericIterable>(T x) { } } -/*cfe:nnbd.member: genericStream:futureValueType=void*/ +/*member: genericStream:futureValueType=void*/ void genericStream>(T x) async { /*cfe.current: T*/ /*cfe:nnbd.current: T!*/ diff --git a/pkg/front_end/test/static_types/data/future_value_type.dart b/pkg/front_end/test/static_types/data/future_value_type.dart index f9ba6842532..ca6cc92f9ed 100644 --- a/pkg/front_end/test/static_types/data/future_value_type.dart +++ b/pkg/front_end/test/static_types/data/future_value_type.dart @@ -9,50 +9,53 @@ import 'dart:async'; /*cfe:nnbd.member: declaredFutureInt:futureValueType=int!*/ +/*cfe.member: declaredFutureInt:futureValueType=int*/ Future declaredFutureInt() async { return /*cfe.int*/ /*cfe:nnbd.int!*/ 0; } /*cfe:nnbd.member: declaredFutureOrInt:futureValueType=int!*/ +/*cfe.member: declaredFutureOrInt:futureValueType=int*/ FutureOr declaredFutureOrInt() async { return /*cfe.int*/ /*cfe:nnbd.int!*/ 0; } /*cfe:nnbd.member: declaredObject:futureValueType=Object?*/ +/*cfe.member: declaredObject:futureValueType=Object*/ Object declaredObject() async { return /*cfe.int*/ /*cfe:nnbd.int!*/ 0; } -/*cfe:nnbd.member: omitted:futureValueType=dynamic*/ +/*member: omitted:futureValueType=dynamic*/ omitted() async {} -/*cfe:nnbd.member: method:futureValueType=dynamic*/ +/*member: method:futureValueType=dynamic*/ method() async { /*cfe:nnbd.futureValueType=int!*/ - Future declaredLocalFutureInt() async { + /*cfe.futureValueType=int*/Future declaredLocalFutureInt() async { return /*cfe.int*/ /*cfe:nnbd.int!*/ 0; } /*cfe:nnbd.futureValueType=int!*/ - FutureOr declaredLocalFutureOrInt() async { + /*cfe.futureValueType=int*/FutureOr declaredLocalFutureOrInt() async { return /*cfe.int*/ /*cfe:nnbd.int!*/ 0; } /*cfe:nnbd.futureValueType=Object?*/ - Object declaredLocalObject() async { + /*cfe.futureValueType=Object*/Object declaredLocalObject() async { return /*cfe.int*/ /*cfe:nnbd.int!*/ 0; } - /*cfe:nnbd.futureValueType=Null*/ omittedLocal() async {} + /*futureValueType=Null*/omittedLocal() async {} Future inferredCalledFutureInt = - /*cfe.Future Function()*/ + /*cfe.Future Function(),futureValueType=int*/ /*cfe:nnbd.Future! Function()!,futureValueType=int!*/ () async { return @@ -63,7 +66,7 @@ method() async { (); FutureOr inferredCalledFutureOrInt = - /*cfe.Future Function()*/ + /*cfe.Future Function(),futureValueType=int*/ /*cfe:nnbd.Future! Function()!,futureValueType=int!*/ () async { return @@ -74,7 +77,7 @@ method() async { (); Future Function() inferredFutureInt = - /*cfe.Future Function()*/ + /*cfe.Future Function(),futureValueType=int*/ /*cfe:nnbd.Future! Function()!,futureValueType=int!*/ () async { return @@ -82,7 +85,7 @@ method() async { }; FutureOr Function() inferredFutureOrInt = - /*cfe.Future Function()*/ + /*cfe.Future Function(),futureValueType=int*/ /*cfe:nnbd.Future! Function()!,futureValueType=int!*/ () async { return @@ -90,7 +93,7 @@ method() async { }; Object Function() inferredInt = - /*cfe.Future Function()*/ + /*cfe.Future Function(),futureValueType=int*/ /*cfe:nnbd.Future! Function()!,futureValueType=int!*/ () async { return @@ -98,7 +101,7 @@ method() async { }; Object Function() inferredNull = - /*cfe.Future Function()*/ + /*cfe.Future Function(),futureValueType=Null*/ /*cfe:nnbd.Future! Function()!,futureValueType=Null*/ () async { return @@ -106,7 +109,7 @@ method() async { }; Object Function() inferredEmpty = - /*cfe.Future Function()*/ + /*cfe.Future Function(),futureValueType=Null*/ /*cfe:nnbd.Future! Function()!,futureValueType=Null*/ () async {}; } diff --git a/pkg/front_end/testcases/extensions/async_extensions.dart.weak.expect b/pkg/front_end/testcases/extensions/async_extensions.dart.weak.expect index f053e583141..1cd81f52b78 100644 --- a/pkg/front_end/testcases/extensions/async_extensions.dart.weak.expect +++ b/pkg/front_end/testcases/extensions/async_extensions.dart.weak.expect @@ -13,7 +13,7 @@ extension Extension on core::int* { static method Extension|syncStarMethod(lowered final core::int* #this) → dynamic sync* {} static method Extension|get#syncStarMethod(lowered final core::int* #this) → () →* dynamic return () → dynamic => self::Extension|syncStarMethod(#this); -static method Extension|asyncMethod(lowered final core::int* #this) → dynamic async {} +static method Extension|asyncMethod(lowered final core::int* #this) → dynamic async /* futureValueType= dynamic */ {} static method Extension|get#asyncMethod(lowered final core::int* #this) → () →* dynamic return () → dynamic => self::Extension|asyncMethod(#this); static method Extension|asyncStarMethod(lowered final core::int* #this) → dynamic async* {} diff --git a/pkg/front_end/testcases/extensions/async_extensions.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/async_extensions.dart.weak.modular.expect index f053e583141..1cd81f52b78 100644 --- a/pkg/front_end/testcases/extensions/async_extensions.dart.weak.modular.expect +++ b/pkg/front_end/testcases/extensions/async_extensions.dart.weak.modular.expect @@ -13,7 +13,7 @@ extension Extension on core::int* { static method Extension|syncStarMethod(lowered final core::int* #this) → dynamic sync* {} static method Extension|get#syncStarMethod(lowered final core::int* #this) → () →* dynamic return () → dynamic => self::Extension|syncStarMethod(#this); -static method Extension|asyncMethod(lowered final core::int* #this) → dynamic async {} +static method Extension|asyncMethod(lowered final core::int* #this) → dynamic async /* futureValueType= dynamic */ {} static method Extension|get#asyncMethod(lowered final core::int* #this) → () →* dynamic return () → dynamic => self::Extension|asyncMethod(#this); static method Extension|asyncStarMethod(lowered final core::int* #this) → dynamic async* {} diff --git a/pkg/front_end/testcases/extensions/async_extensions.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/async_extensions.dart.weak.transformed.expect index 739da7f0d16..c9d8f911d31 100644 --- a/pkg/front_end/testcases/extensions/async_extensions.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/extensions/async_extensions.dart.weak.transformed.expect @@ -25,7 +25,7 @@ static method Extension|syncStarMethod(lowered final core::int* #this) → dynam } static method Extension|get#syncStarMethod(lowered final core::int* #this) → () →* dynamic return () → dynamic => self::Extension|syncStarMethod(#this); -static method Extension|asyncMethod(lowered final core::int* #this) → dynamic /* originally async */ { +static method Extension|asyncMethod(lowered final core::int* #this) → dynamic /* futureValueType= dynamic */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; dynamic :return_value; diff --git a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.expect b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.expect index a3e0d9a38d6..e5d181d3f87 100644 --- a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.expect +++ b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.expect @@ -13,7 +13,7 @@ import "dart:core" as core; import "org-dartlang-testcase:///deferred_explicit_access_lib.dart" deferred as prefix; -static method main() → dynamic async { +static method main() → dynamic async /* futureValueType= dynamic */ { await LoadLibrary(prefix); self::expect(0, let final dynamic #t1 = CheckLibraryIsLoaded(prefix) in def::Extension|staticField); self::expect(0, let final dynamic #t2 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(0)); diff --git a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.modular.expect index a3e0d9a38d6..e5d181d3f87 100644 --- a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.modular.expect +++ b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.modular.expect @@ -13,7 +13,7 @@ import "dart:core" as core; import "org-dartlang-testcase:///deferred_explicit_access_lib.dart" deferred as prefix; -static method main() → dynamic async { +static method main() → dynamic async /* futureValueType= dynamic */ { await LoadLibrary(prefix); self::expect(0, let final dynamic #t1 = CheckLibraryIsLoaded(prefix) in def::Extension|staticField); self::expect(0, let final dynamic #t2 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(0)); diff --git a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.transformed.expect index 2aa57c8b355..612662d9fda 100644 --- a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.transformed.expect @@ -14,7 +14,7 @@ import "deferred_explicit_access_lib.dart" as def; import "org-dartlang-testcase:///deferred_explicit_access_lib.dart" deferred as prefix; -static method main() → dynamic /* originally async */ { +static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; dynamic :return_value; diff --git a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.expect b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.expect index ddd41d6a007..0b080b319bc 100644 --- a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.expect +++ b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.expect @@ -5,7 +5,7 @@ import "dart:core" as core; import "org-dartlang-testcase:///deferred_explicit_access_lib.dart" deferred as prefix hide Extension; -static method main() → dynamic async { +static method main() → dynamic async /* futureValueType= dynamic */ { await LoadLibrary(prefix); self::expect(0, let final dynamic #t1 = CheckLibraryIsLoaded(prefix) in def::topLevelField); self::expect(42, let final dynamic #t2 = CheckLibraryIsLoaded(prefix) in def::topLevelField = 42); diff --git a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.modular.expect index ddd41d6a007..0b080b319bc 100644 --- a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.modular.expect +++ b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.modular.expect @@ -5,7 +5,7 @@ import "dart:core" as core; import "org-dartlang-testcase:///deferred_explicit_access_lib.dart" deferred as prefix hide Extension; -static method main() → dynamic async { +static method main() → dynamic async /* futureValueType= dynamic */ { await LoadLibrary(prefix); self::expect(0, let final dynamic #t1 = CheckLibraryIsLoaded(prefix) in def::topLevelField); self::expect(42, let final dynamic #t2 = CheckLibraryIsLoaded(prefix) in def::topLevelField = 42); diff --git a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.transformed.expect index f4d6fd73bba..bc5853f3357 100644 --- a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.transformed.expect @@ -6,7 +6,7 @@ import "deferred_explicit_access_lib.dart" as def; import "org-dartlang-testcase:///deferred_explicit_access_lib.dart" deferred as prefix hide Extension; -static method main() → dynamic /* originally async */ { +static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; dynamic :return_value; diff --git a/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.expect b/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.expect index d4a4508ee7c..52401e8f064 100644 --- a/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.expect +++ b/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.expect @@ -1758,7 +1758,7 @@ static method testForElement(dynamic dynVar, core::List* listInt, co #t235.{core::Map::[]=}{Invariant}(i, i){(core::int*, core::int*) →* void}; } =>#t235; } -static method testForElementErrors(core::Map* map, core::List* list) → dynamic async { +static method testForElementErrors(core::Map* map, core::List* list) → dynamic async /* futureValueType= dynamic */ { block { final core::List* #t236 = []; for (core::int* i = 0; self::oracle("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) diff --git a/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.modular.expect b/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.modular.expect index d4a4508ee7c..52401e8f064 100644 --- a/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.modular.expect +++ b/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.modular.expect @@ -1758,7 +1758,7 @@ static method testForElement(dynamic dynVar, core::List* listInt, co #t235.{core::Map::[]=}{Invariant}(i, i){(core::int*, core::int*) →* void}; } =>#t235; } -static method testForElementErrors(core::Map* map, core::List* list) → dynamic async { +static method testForElementErrors(core::Map* map, core::List* list) → dynamic async /* futureValueType= dynamic */ { block { final core::List* #t236 = []; for (core::int* i = 0; self::oracle("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) diff --git a/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.transformed.expect b/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.transformed.expect index dad114df118..aa93492b643 100644 --- a/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.transformed.expect @@ -1943,7 +1943,7 @@ static method testForElement(dynamic dynVar, core::List* listInt, co #t235.{core::Map::[]=}{Invariant}(i, i){(core::int*, core::int*) →* void}; } =>#t235; } -static method testForElementErrors(core::Map* map, core::List* list) → dynamic /* originally async */ { +static method testForElementErrors(core::Map* map, core::List* list) → dynamic /* futureValueType= dynamic */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; dynamic :return_value; diff --git a/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.expect b/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.expect index 5cfbd7c4b09..b2bc5d71fbf 100644 --- a/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.expect +++ b/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.expect @@ -4,7 +4,7 @@ import "dart:core" as core; import "dart:async" as asy; abstract class TestMixin extends core::Object /*isMixinDeclaration*/ { - method test(covariant-by-class asy::Future* fetch) → asy::Future* async { + method test(covariant-by-class asy::Future* fetch) → asy::Future* async /* futureValueType= self::TestMixin::T* */ { final self::TestMixin::R* response = await fetch; self::TestMixin::T* result; if(response is self::Response*) { diff --git a/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.modular.expect b/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.modular.expect index 5cfbd7c4b09..b2bc5d71fbf 100644 --- a/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.modular.expect +++ b/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.modular.expect @@ -4,7 +4,7 @@ import "dart:core" as core; import "dart:async" as asy; abstract class TestMixin extends core::Object /*isMixinDeclaration*/ { - method test(covariant-by-class asy::Future* fetch) → asy::Future* async { + method test(covariant-by-class asy::Future* fetch) → asy::Future* async /* futureValueType= self::TestMixin::T* */ { final self::TestMixin::R* response = await fetch; self::TestMixin::T* result; if(response is self::Response*) { diff --git a/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.transformed.expect b/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.transformed.expect index 0dcf16eccf2..081530b1539 100644 --- a/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.transformed.expect @@ -5,7 +5,7 @@ import "dart:async" as asy; import "dart:_internal" as _in; abstract class TestMixin extends core::Object /*isMixinDeclaration*/ { - method test(covariant-by-class asy::Future* fetch) → asy::Future* /* originally async */ { + method test(covariant-by-class asy::Future* fetch) → asy::Future* /* futureValueType= self::TestMixin::T* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; diff --git a/pkg/front_end/testcases/general/future_or_test.dart.weak.expect b/pkg/front_end/testcases/general/future_or_test.dart.weak.expect index cc061fbc447..2aa86e0de5a 100644 --- a/pkg/front_end/testcases/general/future_or_test.dart.weak.expect +++ b/pkg/front_end/testcases/general/future_or_test.dart.weak.expect @@ -27,7 +27,7 @@ class B extends core::Object { synthetic constructor •() → self::B* : super core::Object::•() ; - method bar() → asy::Future* async + method bar() → asy::Future* async /* futureValueType= dynamic */ return this.{self::B::a}{self::A*}.{self::A::foo}(){() →* dynamic}; abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf @@ -45,7 +45,7 @@ class C extends core::Object { synthetic constructor •() → self::C* : super core::Object::•() ; - method baz() → asy::Future* async + method baz() → asy::Future* async /* futureValueType= core::int* */ return this.{self::C::b}{self::B*}.{self::B::bar}(){() →* asy::Future*} as{TypeError} FutureOr*; abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf diff --git a/pkg/front_end/testcases/general/future_or_test.dart.weak.modular.expect b/pkg/front_end/testcases/general/future_or_test.dart.weak.modular.expect index cc061fbc447..2aa86e0de5a 100644 --- a/pkg/front_end/testcases/general/future_or_test.dart.weak.modular.expect +++ b/pkg/front_end/testcases/general/future_or_test.dart.weak.modular.expect @@ -27,7 +27,7 @@ class B extends core::Object { synthetic constructor •() → self::B* : super core::Object::•() ; - method bar() → asy::Future* async + method bar() → asy::Future* async /* futureValueType= dynamic */ return this.{self::B::a}{self::A*}.{self::A::foo}(){() →* dynamic}; abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf @@ -45,7 +45,7 @@ class C extends core::Object { synthetic constructor •() → self::C* : super core::Object::•() ; - method baz() → asy::Future* async + method baz() → asy::Future* async /* futureValueType= core::int* */ return this.{self::C::b}{self::B*}.{self::B::bar}(){() →* asy::Future*} as{TypeError} FutureOr*; abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf diff --git a/pkg/front_end/testcases/general/future_or_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general/future_or_test.dart.weak.transformed.expect index f83341ff799..ffa200731ea 100644 --- a/pkg/front_end/testcases/general/future_or_test.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/general/future_or_test.dart.weak.transformed.expect @@ -27,7 +27,7 @@ class B extends core::Object { synthetic constructor •() → self::B* : super core::Object::•() ; - method bar() → asy::Future* /* originally async */ { + method bar() → asy::Future* /* futureValueType= dynamic */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; @@ -70,7 +70,7 @@ class C extends core::Object { synthetic constructor •() → self::C* : super core::Object::•() ; - method baz() → asy::Future* /* originally async */ { + method baz() → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; diff --git a/pkg/front_end/testcases/general/issue40662.dart.weak.expect b/pkg/front_end/testcases/general/issue40662.dart.weak.expect index dc6a6d8e1ff..d376a6f5cbd 100644 --- a/pkg/front_end/testcases/general/issue40662.dart.weak.expect +++ b/pkg/front_end/testcases/general/issue40662.dart.weak.expect @@ -6,9 +6,9 @@ static method bar(core::int* a, core::List* b) → dynamic { self::expect(1.{core::int::unary-}(){() →* core::int*}, a); self::expect(1.{core::int::unary-}(){() →* core::int*}, b.{core::List::[]}(0){(core::int*) →* core::int*}.{core::num::-}(2){(core::num*) →* core::int*}); } -static method foo(core::int* x) → dynamic async +static method foo(core::int* x) → dynamic async /* futureValueType= dynamic */ return self::bar(x.{core::num::-}(1){(core::num*) →* core::int*}, !(x == null) ?{core::List*} [x.{core::num::+}(1){(core::num*) →* core::int*}, x.{core::num::+}(2){(core::num*) →* core::int*}, await null] : null); -static method main() → void async +static method main() → void async /* futureValueType= void */ return await self::foo(0); static method expect(dynamic expected, dynamic actual) → dynamic { if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) diff --git a/pkg/front_end/testcases/general/issue40662.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue40662.dart.weak.modular.expect index dc6a6d8e1ff..d376a6f5cbd 100644 --- a/pkg/front_end/testcases/general/issue40662.dart.weak.modular.expect +++ b/pkg/front_end/testcases/general/issue40662.dart.weak.modular.expect @@ -6,9 +6,9 @@ static method bar(core::int* a, core::List* b) → dynamic { self::expect(1.{core::int::unary-}(){() →* core::int*}, a); self::expect(1.{core::int::unary-}(){() →* core::int*}, b.{core::List::[]}(0){(core::int*) →* core::int*}.{core::num::-}(2){(core::num*) →* core::int*}); } -static method foo(core::int* x) → dynamic async +static method foo(core::int* x) → dynamic async /* futureValueType= dynamic */ return self::bar(x.{core::num::-}(1){(core::num*) →* core::int*}, !(x == null) ?{core::List*} [x.{core::num::+}(1){(core::num*) →* core::int*}, x.{core::num::+}(2){(core::num*) →* core::int*}, await null] : null); -static method main() → void async +static method main() → void async /* futureValueType= void */ return await self::foo(0); static method expect(dynamic expected, dynamic actual) → dynamic { if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) diff --git a/pkg/front_end/testcases/general/issue40662.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue40662.dart.weak.transformed.expect index 4fef8f9053c..4854611814f 100644 --- a/pkg/front_end/testcases/general/issue40662.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/general/issue40662.dart.weak.transformed.expect @@ -8,7 +8,7 @@ static method bar(core::int* a, core::List* b) → dynamic { self::expect(1.{core::int::unary-}(){() →* core::int*}, a); self::expect(1.{core::int::unary-}(){() →* core::int*}, b.{core::List::[]}(0){(core::int*) →* core::int*}.{core::num::-}(2){(core::num*) →* core::int*}); } -static method foo(core::int* x) → dynamic /* originally async */ { +static method foo(core::int* x) → dynamic /* futureValueType= dynamic */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; @@ -50,7 +50,7 @@ static method foo(core::int* x) → dynamic /* originally async */ { :is_sync = true; return :async_future; } -static method main() → void /* originally async */ { +static method main() → void /* futureValueType= void */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; diff --git a/pkg/front_end/testcases/general/issue42615.dart.weak.expect b/pkg/front_end/testcases/general/issue42615.dart.weak.expect index 08aafe4b3c7..45902831fd1 100644 --- a/pkg/front_end/testcases/general/issue42615.dart.weak.expect +++ b/pkg/front_end/testcases/general/issue42615.dart.weak.expect @@ -22,7 +22,7 @@ class Class extends core::Object { static method method() → dynamic return null; static method main() → dynamic { - new self::Class::•(a: () → FutureOr*>* async => self::method() as{TypeError} FutureOr*>*); + new self::Class::•(a: () → FutureOr*>* async /* futureValueType= core::List* */ => self::method() as{TypeError} FutureOr*>*); } constants { diff --git a/pkg/front_end/testcases/general/issue42615.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue42615.dart.weak.modular.expect index 08aafe4b3c7..45902831fd1 100644 --- a/pkg/front_end/testcases/general/issue42615.dart.weak.modular.expect +++ b/pkg/front_end/testcases/general/issue42615.dart.weak.modular.expect @@ -22,7 +22,7 @@ class Class extends core::Object { static method method() → dynamic return null; static method main() → dynamic { - new self::Class::•(a: () → FutureOr*>* async => self::method() as{TypeError} FutureOr*>*); + new self::Class::•(a: () → FutureOr*>* async /* futureValueType= core::List* */ => self::method() as{TypeError} FutureOr*>*); } constants { diff --git a/pkg/front_end/testcases/general/issue42615.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue42615.dart.weak.transformed.expect index 3d98e0c83be..a5d9155cfcd 100644 --- a/pkg/front_end/testcases/general/issue42615.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/general/issue42615.dart.weak.transformed.expect @@ -23,7 +23,7 @@ class Class extends core::Object { static method method() → dynamic return null; static method main() → dynamic { - new self::Class::•(a: () → FutureOr*>* /* originally async */ { + new self::Class::•(a: () → FutureOr*>* /* futureValueType= core::List* */ /* originally async */ { final asy::_Future*>* :async_future = new asy::_Future::•*>(); core::bool* :is_sync = false; FutureOr*>* :return_value; diff --git a/pkg/front_end/testcases/general/return_async_promoted.dart b/pkg/front_end/testcases/general/return_async_promoted.dart new file mode 100644 index 00000000000..c6560d3af6f --- /dev/null +++ b/pkg/front_end/testcases/general/return_async_promoted.dart @@ -0,0 +1,13 @@ +// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'return_async_promoted_lib.dart'; + +void main() { + var f = (o) async => o is int ? o : throw ''; + var g = () async => legacy(); +} + +int? nullable() => null; +int? nonNullable() => 0; diff --git a/pkg/front_end/testcases/general/return_async_promoted.dart.textual_outline.expect b/pkg/front_end/testcases/general/return_async_promoted.dart.textual_outline.expect new file mode 100644 index 00000000000..b960f989797 --- /dev/null +++ b/pkg/front_end/testcases/general/return_async_promoted.dart.textual_outline.expect @@ -0,0 +1,5 @@ +import 'return_async_promoted_lib.dart'; + +void main() {} +int? nullable() => null; +int? nonNullable() => 0; diff --git a/pkg/front_end/testcases/general/return_async_promoted.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/return_async_promoted.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..311eaa74be9 --- /dev/null +++ b/pkg/front_end/testcases/general/return_async_promoted.dart.textual_outline_modelled.expect @@ -0,0 +1,5 @@ +import 'return_async_promoted_lib.dart'; + +int? nonNullable() => 0; +int? nullable() => null; +void main() {} diff --git a/pkg/front_end/testcases/general/return_async_promoted.dart.weak.expect b/pkg/front_end/testcases/general/return_async_promoted.dart.weak.expect new file mode 100644 index 00000000000..1ed7164a6e1 --- /dev/null +++ b/pkg/front_end/testcases/general/return_async_promoted.dart.weak.expect @@ -0,0 +1,31 @@ +library /*isNonNullableByDefault*/; +import self as self; +import "dart:core" as core; +import "dart:async" as asy; +import "return_async_promoted_lib.dart" as ret; + +import "org-dartlang-testcase:///return_async_promoted_lib.dart"; + +static method main() → void { + (dynamic) → asy::Future f = (dynamic o) → asy::Future async /* futureValueType= core::int */ => o is{ForNonNullableByDefault} core::int ?{core::int} o{core::int} : throw ""; + () → asy::Future g = () → asy::Future async /* futureValueType= core::int* */ => ret::legacy(); +} +static method nullable() → core::int? + return null; +static method nonNullable() → core::int? + return 0; + +library; +import self as ret; +import "dart:core" as core; +import "dart:async" as asy; +import "return_async_promoted.dart" as self; + +import "org-dartlang-testcase:///return_async_promoted.dart"; + +static method legacy() → core::int* { + (dynamic) →* asy::Future* f = (dynamic o) → asy::Future* async /* futureValueType= core::int* */ => o is core::int* ?{core::int*} o{core::int*} : throw ""; + () →* asy::Future* g = () → asy::Future* async /* futureValueType= core::int* */ => self::nullable(); + () →* asy::Future* h = () → asy::Future* async /* futureValueType= core::int* */ => self::nonNullable(); + return null; +} diff --git a/pkg/front_end/testcases/general/return_async_promoted.dart.weak.modular.expect b/pkg/front_end/testcases/general/return_async_promoted.dart.weak.modular.expect new file mode 100644 index 00000000000..1ed7164a6e1 --- /dev/null +++ b/pkg/front_end/testcases/general/return_async_promoted.dart.weak.modular.expect @@ -0,0 +1,31 @@ +library /*isNonNullableByDefault*/; +import self as self; +import "dart:core" as core; +import "dart:async" as asy; +import "return_async_promoted_lib.dart" as ret; + +import "org-dartlang-testcase:///return_async_promoted_lib.dart"; + +static method main() → void { + (dynamic) → asy::Future f = (dynamic o) → asy::Future async /* futureValueType= core::int */ => o is{ForNonNullableByDefault} core::int ?{core::int} o{core::int} : throw ""; + () → asy::Future g = () → asy::Future async /* futureValueType= core::int* */ => ret::legacy(); +} +static method nullable() → core::int? + return null; +static method nonNullable() → core::int? + return 0; + +library; +import self as ret; +import "dart:core" as core; +import "dart:async" as asy; +import "return_async_promoted.dart" as self; + +import "org-dartlang-testcase:///return_async_promoted.dart"; + +static method legacy() → core::int* { + (dynamic) →* asy::Future* f = (dynamic o) → asy::Future* async /* futureValueType= core::int* */ => o is core::int* ?{core::int*} o{core::int*} : throw ""; + () →* asy::Future* g = () → asy::Future* async /* futureValueType= core::int* */ => self::nullable(); + () →* asy::Future* h = () → asy::Future* async /* futureValueType= core::int* */ => self::nonNullable(); + return null; +} diff --git a/pkg/front_end/testcases/general/return_async_promoted.dart.weak.outline.expect b/pkg/front_end/testcases/general/return_async_promoted.dart.weak.outline.expect new file mode 100644 index 00000000000..d14947ec057 --- /dev/null +++ b/pkg/front_end/testcases/general/return_async_promoted.dart.weak.outline.expect @@ -0,0 +1,21 @@ +library /*isNonNullableByDefault*/; +import self as self; +import "dart:core" as core; + +import "org-dartlang-testcase:///return_async_promoted_lib.dart"; + +static method main() → void + ; +static method nullable() → core::int? + ; +static method nonNullable() → core::int? + ; + +library; +import self as self2; +import "dart:core" as core; + +import "org-dartlang-testcase:///return_async_promoted.dart"; + +static method legacy() → core::int* + ; diff --git a/pkg/front_end/testcases/general/return_async_promoted.dart.weak.transformed.expect b/pkg/front_end/testcases/general/return_async_promoted.dart.weak.transformed.expect new file mode 100644 index 00000000000..9e92a5619cd --- /dev/null +++ b/pkg/front_end/testcases/general/return_async_promoted.dart.weak.transformed.expect @@ -0,0 +1,161 @@ +library /*isNonNullableByDefault*/; +import self as self; +import "dart:core" as core; +import "dart:async" as asy; +import "return_async_promoted_lib.dart" as ret; + +import "org-dartlang-testcase:///return_async_promoted_lib.dart"; + +static method main() → void { + (dynamic) → asy::Future f = (dynamic o) → asy::Future /* futureValueType= core::int */ /* originally async */ { + final asy::_Future :async_future = new asy::_Future::•(); + core::bool* :is_sync = false; + core::int? :return_value; + (dynamic) → dynamic :async_op_then; + (core::Object, core::StackTrace) → dynamic :async_op_error; + core::int :await_jump_var = 0; + dynamic :await_ctx_var; + function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding + try { + #L1: + { + :return_value = o is{ForNonNullableByDefault} core::int ?{core::int} o{core::int} : throw ""; + break #L1; + } + asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync); + return; + } + on dynamic catch(dynamic exception, core::StackTrace stack_trace) { + asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync); + } + :async_op_then = asy::_asyncThenWrapperHelper(:async_op); + :async_op_error = asy::_asyncErrorWrapperHelper(:async_op); + :async_op(null, null){() → dynamic}; + :is_sync = true; + return :async_future; + }; + () → asy::Future g = () → asy::Future /* futureValueType= core::int* */ /* originally async */ { + final asy::_Future :async_future = new asy::_Future::•(); + core::bool* :is_sync = false; + core::int? :return_value; + (dynamic) → dynamic :async_op_then; + (core::Object, core::StackTrace) → dynamic :async_op_error; + core::int :await_jump_var = 0; + dynamic :await_ctx_var; + function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding + try { + #L2: + { + :return_value = ret::legacy(); + break #L2; + } + asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync); + return; + } + on dynamic catch(dynamic exception, core::StackTrace stack_trace) { + asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync); + } + :async_op_then = asy::_asyncThenWrapperHelper(:async_op); + :async_op_error = asy::_asyncErrorWrapperHelper(:async_op); + :async_op(null, null){() → dynamic}; + :is_sync = true; + return :async_future; + }; +} +static method nullable() → core::int? + return null; +static method nonNullable() → core::int? + return 0; + +library; +import self as ret; +import "dart:core" as core; +import "dart:async" as asy; +import "return_async_promoted.dart" as self; + +import "org-dartlang-testcase:///return_async_promoted.dart"; + +static method legacy() → core::int* { + (dynamic) →* asy::Future* f = (dynamic o) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { + final asy::_Future* :async_future = new asy::_Future::•(); + core::bool* :is_sync = false; + core::int? :return_value; + (dynamic) →* dynamic :async_op_then; + (core::Object*, core::StackTrace*) →* dynamic :async_op_error; + core::int* :await_jump_var = 0; + dynamic :await_ctx_var; + function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding + try { + #L3: + { + :return_value = o is core::int* ?{core::int*} o{core::int*} : throw ""; + break #L3; + } + asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync); + return; + } + on dynamic catch(dynamic exception, core::StackTrace* stack_trace) { + asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync); + } + :async_op_then = asy::_asyncThenWrapperHelper(:async_op); + :async_op_error = asy::_asyncErrorWrapperHelper(:async_op); + :async_op(null, null){() →* dynamic}; + :is_sync = true; + return :async_future; + }; + () →* asy::Future* g = () → asy::Future* /* futureValueType= core::int* */ /* originally async */ { + final asy::_Future* :async_future = new asy::_Future::•(); + core::bool* :is_sync = false; + core::int? :return_value; + (dynamic) →* dynamic :async_op_then; + (core::Object*, core::StackTrace*) →* dynamic :async_op_error; + core::int* :await_jump_var = 0; + dynamic :await_ctx_var; + function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding + try { + #L4: + { + :return_value = self::nullable(); + break #L4; + } + asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync); + return; + } + on dynamic catch(dynamic exception, core::StackTrace* stack_trace) { + asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync); + } + :async_op_then = asy::_asyncThenWrapperHelper(:async_op); + :async_op_error = asy::_asyncErrorWrapperHelper(:async_op); + :async_op(null, null){() →* dynamic}; + :is_sync = true; + return :async_future; + }; + () →* asy::Future* h = () → asy::Future* /* futureValueType= core::int* */ /* originally async */ { + final asy::_Future* :async_future = new asy::_Future::•(); + core::bool* :is_sync = false; + core::int? :return_value; + (dynamic) →* dynamic :async_op_then; + (core::Object*, core::StackTrace*) →* dynamic :async_op_error; + core::int* :await_jump_var = 0; + dynamic :await_ctx_var; + function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding + try { + #L5: + { + :return_value = self::nonNullable(); + break #L5; + } + asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync); + return; + } + on dynamic catch(dynamic exception, core::StackTrace* stack_trace) { + asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync); + } + :async_op_then = asy::_asyncThenWrapperHelper(:async_op); + :async_op_error = asy::_asyncErrorWrapperHelper(:async_op); + :async_op(null, null){() →* dynamic}; + :is_sync = true; + return :async_future; + }; + return null; +} diff --git a/pkg/front_end/testcases/general/return_async_promoted_lib.dart b/pkg/front_end/testcases/general/return_async_promoted_lib.dart new file mode 100644 index 00000000000..e04de1970e6 --- /dev/null +++ b/pkg/front_end/testcases/general/return_async_promoted_lib.dart @@ -0,0 +1,14 @@ +// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +// @dart=2.9 + +import 'return_async_promoted.dart'; + +int legacy() { + var f = (o) async => o is int ? o : throw ''; + var g = () async => nullable(); + var h = () async => nonNullable(); + return null; +} diff --git a/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.1.expect index 8967db17316..e04acb1db1b 100644 --- a/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.1.expect +++ b/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.1.expect @@ -1,7 +1,7 @@ main = main::main; library from "org-dartlang-test:///libA.dart" as libA { - static method whatever() → dynamic /* originally async */ { + static method whatever() → dynamic /* futureValueType= dynamic */ /* originally async */ { final dart.async::_Future* :async_future = new dart.async::_Future::•(); dart.core::bool* :is_sync = false; dynamic :return_value; @@ -53,7 +53,7 @@ library from "org-dartlang-test:///main.dart" as main { abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType } - static method main() → dynamic /* originally async */ { + static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ { final dart.async::_Future* :async_future = new dart.async::_Future::•(); dart.core::bool* :is_sync = false; dynamic :return_value; diff --git a/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.2.expect index 0cfec60b0b7..56a2eb1a37e 100644 --- a/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.2.expect +++ b/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.2.expect @@ -1,7 +1,7 @@ main = main::main; library from "org-dartlang-test:///libA.dart" as libA { - static method whatever() → dynamic /* originally async */ { + static method whatever() → dynamic /* futureValueType= dynamic */ /* originally async */ { final dart.async::_Future* :async_future = new dart.async::_Future::•(); dart.core::bool* :is_sync = false; dynamic :return_value; @@ -53,7 +53,7 @@ library from "org-dartlang-test:///main.dart" as main { abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType } - static method main() → dynamic /* originally async */ { + static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ { final dart.async::_Future* :async_future = new dart.async::_Future::•(); dart.core::bool* :is_sync = false; dynamic :return_value; diff --git a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.1.expect index da879b3c53e..31712cea4e7 100644 --- a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.1.expect +++ b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.1.expect @@ -19,7 +19,7 @@ library from "org-dartlang-test:///main.dart" as main { abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType } - static method main() → dynamic /* originally async */ { + static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ { final dart.async::_Future* :async_future = new dart.async::_Future::•(); dart.core::bool* :is_sync = false; dynamic :return_value; @@ -48,7 +48,7 @@ library from "org-dartlang-test:///main.dart" as main { :is_sync = true; return :async_future; } - static method /* from org-dartlang-test:///myPart.dart */ whatever() → dynamic /* originally async */ { + static method /* from org-dartlang-test:///myPart.dart */ whatever() → dynamic /* futureValueType= dynamic */ /* originally async */ { final dart.async::_Future* :async_future = new dart.async::_Future::•(); dart.core::bool* :is_sync = false; dynamic :return_value; diff --git a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.2.expect index 44e9e46eb91..37f43e7f648 100644 --- a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.2.expect +++ b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.2.expect @@ -19,7 +19,7 @@ library from "org-dartlang-test:///main.dart" as main { abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType } - static method main() → dynamic /* originally async */ { + static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ { final dart.async::_Future* :async_future = new dart.async::_Future::•(); dart.core::bool* :is_sync = false; dynamic :return_value; @@ -48,7 +48,7 @@ library from "org-dartlang-test:///main.dart" as main { :is_sync = true; return :async_future; } - static method /* from org-dartlang-test:///myPart.dart */ whatever() → dynamic /* originally async */ { + static method /* from org-dartlang-test:///myPart.dart */ whatever() → dynamic /* futureValueType= dynamic */ /* originally async */ { final dart.async::_Future* :async_future = new dart.async::_Future::•(); dart.core::bool* :is_sync = false; dynamic :return_value; diff --git a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.3.expect b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.3.expect index ca8efcb40eb..9d36a28b5f5 100644 --- a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.3.expect +++ b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.3.expect @@ -19,7 +19,7 @@ library from "org-dartlang-test:///main.dart" as main { abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType } - static method main() → dynamic /* originally async */ { + static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ { final dart.async::_Future* :async_future = new dart.async::_Future::•(); dart.core::bool* :is_sync = false; dynamic :return_value; @@ -49,7 +49,7 @@ library from "org-dartlang-test:///main.dart" as main { :is_sync = true; return :async_future; } - static method /* from org-dartlang-test:///myPart.dart */ whatever() → dynamic /* originally async */ { + static method /* from org-dartlang-test:///myPart.dart */ whatever() → dynamic /* futureValueType= dynamic */ /* originally async */ { final dart.async::_Future* :async_future = new dart.async::_Future::•(); dart.core::bool* :is_sync = false; dynamic :return_value; diff --git a/pkg/front_end/testcases/inference/async_await.dart.weak.expect b/pkg/front_end/testcases/inference/async_await.dart.weak.expect index 3d172fc04b0..73e793189b9 100644 --- a/pkg/front_end/testcases/inference/async_await.dart.weak.expect +++ b/pkg/front_end/testcases/inference/async_await.dart.weak.expect @@ -25,7 +25,7 @@ abstract class MyFuture extends core::Object implements asy::Future abstract member-signature method asStream() → asy::Stream*; -> asy::Future::asStream abstract member-signature method timeout(core::Duration* timeLimit, {covariant-by-class () →* FutureOr* onTimeout = #C1}) → asy::Future*; -> asy::Future::timeout } -static method test() → void async { +static method test() → void async /* futureValueType= void */ { core::int* x0; asy::Future* x1; asy::Future*>* x2; @@ -36,25 +36,25 @@ static method test() → void async { FutureOr*>* x7; FutureOr* x8; self::MyFuture* x9; - function test0() → asy::Future* async + function test0() → asy::Future* async /* futureValueType= core::int* */ return x0; - function test1() → asy::Future* async + function test1() → asy::Future* async /* futureValueType= core::int* */ return x1; - function test2() → asy::Future*>* async + function test2() → asy::Future*>* async /* futureValueType= asy::Future* */ return x2; - function test3() → asy::Future*>* async + function test3() → asy::Future*>* async /* futureValueType= FutureOr* */ return x3; - function test4() → asy::Future* async + function test4() → asy::Future* async /* futureValueType= self::MyFuture* */ return x4; - function test5() → asy::Future* async + function test5() → asy::Future* async /* futureValueType= core::int* */ return x5; - function test6() → asy::Future*>* async + function test6() → asy::Future*>* async /* futureValueType= asy::Future* */ return x6; - function test7() → asy::Future*>* async + function test7() → asy::Future*>* async /* futureValueType= FutureOr* */ return x7; - function test8() → asy::Future* async + function test8() → asy::Future* async /* futureValueType= self::MyFuture* */ return x8; - function test9() → asy::Future* async + function test9() → asy::Future* async /* futureValueType= core::int* */ return x9; core::int* y0 = await x0; core::int* y1 = await x1; diff --git a/pkg/front_end/testcases/inference/async_await.dart.weak.modular.expect b/pkg/front_end/testcases/inference/async_await.dart.weak.modular.expect index 3d172fc04b0..73e793189b9 100644 --- a/pkg/front_end/testcases/inference/async_await.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/async_await.dart.weak.modular.expect @@ -25,7 +25,7 @@ abstract class MyFuture extends core::Object implements asy::Future abstract member-signature method asStream() → asy::Stream*; -> asy::Future::asStream abstract member-signature method timeout(core::Duration* timeLimit, {covariant-by-class () →* FutureOr* onTimeout = #C1}) → asy::Future*; -> asy::Future::timeout } -static method test() → void async { +static method test() → void async /* futureValueType= void */ { core::int* x0; asy::Future* x1; asy::Future*>* x2; @@ -36,25 +36,25 @@ static method test() → void async { FutureOr*>* x7; FutureOr* x8; self::MyFuture* x9; - function test0() → asy::Future* async + function test0() → asy::Future* async /* futureValueType= core::int* */ return x0; - function test1() → asy::Future* async + function test1() → asy::Future* async /* futureValueType= core::int* */ return x1; - function test2() → asy::Future*>* async + function test2() → asy::Future*>* async /* futureValueType= asy::Future* */ return x2; - function test3() → asy::Future*>* async + function test3() → asy::Future*>* async /* futureValueType= FutureOr* */ return x3; - function test4() → asy::Future* async + function test4() → asy::Future* async /* futureValueType= self::MyFuture* */ return x4; - function test5() → asy::Future* async + function test5() → asy::Future* async /* futureValueType= core::int* */ return x5; - function test6() → asy::Future*>* async + function test6() → asy::Future*>* async /* futureValueType= asy::Future* */ return x6; - function test7() → asy::Future*>* async + function test7() → asy::Future*>* async /* futureValueType= FutureOr* */ return x7; - function test8() → asy::Future* async + function test8() → asy::Future* async /* futureValueType= self::MyFuture* */ return x8; - function test9() → asy::Future* async + function test9() → asy::Future* async /* futureValueType= core::int* */ return x9; core::int* y0 = await x0; core::int* y1 = await x1; diff --git a/pkg/front_end/testcases/inference/async_await.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/async_await.dart.weak.transformed.expect index 1e14f9c62ce..e66b45df395 100644 --- a/pkg/front_end/testcases/inference/async_await.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/async_await.dart.weak.transformed.expect @@ -26,7 +26,7 @@ abstract class MyFuture extends core::Object implements asy::Future abstract member-signature method asStream() → asy::Stream*; -> asy::Future::asStream abstract member-signature method timeout(core::Duration* timeLimit, {covariant-by-class () →* FutureOr* onTimeout = #C1}) → asy::Future*; -> asy::Future::timeout } -static method test() → void /* originally async */ { +static method test() → void /* futureValueType= void */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; dynamic :return_value; @@ -49,7 +49,7 @@ static method test() → void /* originally async */ { FutureOr*>* x7; FutureOr* x8; self::MyFuture* x9; - function test0() → asy::Future* /* originally async */ { + function test0() → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -76,7 +76,7 @@ static method test() → void /* originally async */ { :is_sync = true; return :async_future; } - function test1() → asy::Future* /* originally async */ { + function test1() → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; @@ -103,7 +103,7 @@ static method test() → void /* originally async */ { :is_sync = true; return :async_future; } - function test2() → asy::Future*>* /* originally async */ { + function test2() → asy::Future*>* /* futureValueType= asy::Future* */ /* originally async */ { final asy::_Future*>* :async_future = new asy::_Future::•*>(); core::bool* :is_sync = false; FutureOr*>* :return_value; @@ -130,7 +130,7 @@ static method test() → void /* originally async */ { :is_sync = true; return :async_future; } - function test3() → asy::Future*>* /* originally async */ { + function test3() → asy::Future*>* /* futureValueType= FutureOr* */ /* originally async */ { final asy::_Future*>* :async_future = new asy::_Future::•*>(); core::bool* :is_sync = false; FutureOr*>* :return_value; @@ -157,7 +157,7 @@ static method test() → void /* originally async */ { :is_sync = true; return :async_future; } - function test4() → asy::Future* /* originally async */ { + function test4() → asy::Future* /* futureValueType= self::MyFuture* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; @@ -184,7 +184,7 @@ static method test() → void /* originally async */ { :is_sync = true; return :async_future; } - function test5() → asy::Future* /* originally async */ { + function test5() → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; @@ -211,7 +211,7 @@ static method test() → void /* originally async */ { :is_sync = true; return :async_future; } - function test6() → asy::Future*>* /* originally async */ { + function test6() → asy::Future*>* /* futureValueType= asy::Future* */ /* originally async */ { final asy::_Future*>* :async_future = new asy::_Future::•*>(); core::bool* :is_sync = false; FutureOr*>* :return_value; @@ -238,7 +238,7 @@ static method test() → void /* originally async */ { :is_sync = true; return :async_future; } - function test7() → asy::Future*>* /* originally async */ { + function test7() → asy::Future*>* /* futureValueType= FutureOr* */ /* originally async */ { final asy::_Future*>* :async_future = new asy::_Future::•*>(); core::bool* :is_sync = false; FutureOr*>* :return_value; @@ -265,7 +265,7 @@ static method test() → void /* originally async */ { :is_sync = true; return :async_future; } - function test8() → asy::Future* /* originally async */ { + function test8() → asy::Future* /* futureValueType= self::MyFuture* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; @@ -292,7 +292,7 @@ static method test() → void /* originally async */ { :is_sync = true; return :async_future; } - function test9() → asy::Future* /* originally async */ { + function test9() → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; diff --git a/pkg/front_end/testcases/inference/async_closure_return_type_flatten.dart.weak.expect b/pkg/front_end/testcases/inference/async_closure_return_type_flatten.dart.weak.expect index 7974c451fe8..366738bd612 100644 --- a/pkg/front_end/testcases/inference/async_closure_return_type_flatten.dart.weak.expect +++ b/pkg/front_end/testcases/inference/async_closure_return_type_flatten.dart.weak.expect @@ -7,7 +7,7 @@ import "dart:async"; static field asy::Future* futureInt = null; static field () →* asy::Future* f = () → asy::Future* => self::futureInt; -static field () →* asy::Future* g = () → asy::Future* async => self::futureInt; +static field () →* asy::Future* g = () → asy::Future* async /* futureValueType= core::int* */ => self::futureInt; static method main() → dynamic { self::f; self::g; diff --git a/pkg/front_end/testcases/inference/async_closure_return_type_flatten.dart.weak.modular.expect b/pkg/front_end/testcases/inference/async_closure_return_type_flatten.dart.weak.modular.expect index 7974c451fe8..366738bd612 100644 --- a/pkg/front_end/testcases/inference/async_closure_return_type_flatten.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/async_closure_return_type_flatten.dart.weak.modular.expect @@ -7,7 +7,7 @@ import "dart:async"; static field asy::Future* futureInt = null; static field () →* asy::Future* f = () → asy::Future* => self::futureInt; -static field () →* asy::Future* g = () → asy::Future* async => self::futureInt; +static field () →* asy::Future* g = () → asy::Future* async /* futureValueType= core::int* */ => self::futureInt; static method main() → dynamic { self::f; self::g; diff --git a/pkg/front_end/testcases/inference/async_closure_return_type_flatten.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/async_closure_return_type_flatten.dart.weak.transformed.expect index 15fb18d59e7..2324c89d70f 100644 --- a/pkg/front_end/testcases/inference/async_closure_return_type_flatten.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/async_closure_return_type_flatten.dart.weak.transformed.expect @@ -7,7 +7,7 @@ import "dart:async"; static field asy::Future* futureInt = null; static field () →* asy::Future* f = () → asy::Future* => self::futureInt; -static field () →* asy::Future* g = () → asy::Future* /* originally async */ { +static field () →* asy::Future* g = () → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; diff --git a/pkg/front_end/testcases/inference/async_closure_return_type_future.dart.weak.expect b/pkg/front_end/testcases/inference/async_closure_return_type_future.dart.weak.expect index 6e900532d93..dcce00cf70c 100644 --- a/pkg/front_end/testcases/inference/async_closure_return_type_future.dart.weak.expect +++ b/pkg/front_end/testcases/inference/async_closure_return_type_future.dart.weak.expect @@ -3,7 +3,7 @@ import self as self; import "dart:async" as asy; import "dart:core" as core; -static field () →* asy::Future* f = () → asy::Future* async => 0; +static field () →* asy::Future* f = () → asy::Future* async /* futureValueType= core::int* */ => 0; static method main() → dynamic { self::f; } diff --git a/pkg/front_end/testcases/inference/async_closure_return_type_future.dart.weak.modular.expect b/pkg/front_end/testcases/inference/async_closure_return_type_future.dart.weak.modular.expect index 6e900532d93..dcce00cf70c 100644 --- a/pkg/front_end/testcases/inference/async_closure_return_type_future.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/async_closure_return_type_future.dart.weak.modular.expect @@ -3,7 +3,7 @@ import self as self; import "dart:async" as asy; import "dart:core" as core; -static field () →* asy::Future* f = () → asy::Future* async => 0; +static field () →* asy::Future* f = () → asy::Future* async /* futureValueType= core::int* */ => 0; static method main() → dynamic { self::f; } diff --git a/pkg/front_end/testcases/inference/async_closure_return_type_future.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/async_closure_return_type_future.dart.weak.transformed.expect index 7e432e90f60..d92144a9ebf 100644 --- a/pkg/front_end/testcases/inference/async_closure_return_type_future.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/async_closure_return_type_future.dart.weak.transformed.expect @@ -3,7 +3,7 @@ import self as self; import "dart:async" as asy; import "dart:core" as core; -static field () →* asy::Future* f = () → asy::Future* /* originally async */ { +static field () →* asy::Future* f = () → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; diff --git a/pkg/front_end/testcases/inference/async_closure_return_type_future_or.dart.weak.expect b/pkg/front_end/testcases/inference/async_closure_return_type_future_or.dart.weak.expect index a44a6a9bc1f..5454d591e08 100644 --- a/pkg/front_end/testcases/inference/async_closure_return_type_future_or.dart.weak.expect +++ b/pkg/front_end/testcases/inference/async_closure_return_type_future_or.dart.weak.expect @@ -7,7 +7,7 @@ import "dart:async"; static field FutureOr* futureOrInt = null; static field () →* FutureOr* f = () → FutureOr* => self::futureOrInt; -static field () →* asy::Future* g = () → asy::Future* async => self::futureOrInt; +static field () →* asy::Future* g = () → asy::Future* async /* futureValueType= core::int* */ => self::futureOrInt; static method main() → dynamic { self::f; self::g; diff --git a/pkg/front_end/testcases/inference/async_closure_return_type_future_or.dart.weak.modular.expect b/pkg/front_end/testcases/inference/async_closure_return_type_future_or.dart.weak.modular.expect index a44a6a9bc1f..5454d591e08 100644 --- a/pkg/front_end/testcases/inference/async_closure_return_type_future_or.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/async_closure_return_type_future_or.dart.weak.modular.expect @@ -7,7 +7,7 @@ import "dart:async"; static field FutureOr* futureOrInt = null; static field () →* FutureOr* f = () → FutureOr* => self::futureOrInt; -static field () →* asy::Future* g = () → asy::Future* async => self::futureOrInt; +static field () →* asy::Future* g = () → asy::Future* async /* futureValueType= core::int* */ => self::futureOrInt; static method main() → dynamic { self::f; self::g; diff --git a/pkg/front_end/testcases/inference/async_closure_return_type_future_or.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/async_closure_return_type_future_or.dart.weak.transformed.expect index de99cb207a3..23c7b0082d4 100644 --- a/pkg/front_end/testcases/inference/async_closure_return_type_future_or.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/async_closure_return_type_future_or.dart.weak.transformed.expect @@ -7,7 +7,7 @@ import "dart:async"; static field FutureOr* futureOrInt = null; static field () →* FutureOr* f = () → FutureOr* => self::futureOrInt; -static field () →* asy::Future* g = () → asy::Future* /* originally async */ { +static field () →* asy::Future* g = () → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.expect index f19d4653d37..c2fcd34bf3a 100644 --- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.expect +++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.expect @@ -8,7 +8,7 @@ import "dart:async"; import "dart:math" show Random; static method test() → dynamic { - () →* asy::Future* f = () → asy::Future* async { + () →* asy::Future* f = () → asy::Future* async /* futureValueType= core::num* */ { if(math::Random::•().{math::Random::nextBool}(){() →* core::bool*}) { return asy::Future::value(1); } diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.modular.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.modular.expect index f19d4653d37..c2fcd34bf3a 100644 --- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.modular.expect @@ -8,7 +8,7 @@ import "dart:async"; import "dart:math" show Random; static method test() → dynamic { - () →* asy::Future* f = () → asy::Future* async { + () →* asy::Future* f = () → asy::Future* async /* futureValueType= core::num* */ { if(math::Random::•().{math::Random::nextBool}(){() →* core::bool*}) { return asy::Future::value(1); } diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.transformed.expect index c321e3ebe4f..68357cbd3bc 100644 --- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.transformed.expect @@ -8,7 +8,7 @@ import "dart:async"; import "dart:math" show Random; static method test() → dynamic { - () →* asy::Future* f = () → asy::Future* /* originally async */ { + () →* asy::Future* f = () → asy::Future* /* futureValueType= core::num* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.expect index 419ef8110d8..a28c9272241 100644 --- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.expect +++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.expect @@ -8,7 +8,7 @@ import "dart:async"; import "dart:math" show Random; static method test() → dynamic { - () →* asy::Future* f = () → asy::Future* async { + () →* asy::Future* f = () → asy::Future* async /* futureValueType= core::num* */ { if(math::Random::•().{math::Random::nextBool}(){() →* core::bool*}) { return 1; } diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.modular.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.modular.expect index 419ef8110d8..a28c9272241 100644 --- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.modular.expect @@ -8,7 +8,7 @@ import "dart:async"; import "dart:math" show Random; static method test() → dynamic { - () →* asy::Future* f = () → asy::Future* async { + () →* asy::Future* f = () → asy::Future* async /* futureValueType= core::num* */ { if(math::Random::•().{math::Random::nextBool}(){() →* core::bool*}) { return 1; } diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.transformed.expect index 81cc3b11198..6dd124599c4 100644 --- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.transformed.expect @@ -8,7 +8,7 @@ import "dart:async"; import "dart:math" show Random; static method test() → dynamic { - () →* asy::Future* f = () → asy::Future* /* originally async */ { + () →* asy::Future* f = () → asy::Future* /* futureValueType= core::num* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::num? :return_value; diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.expect index 3af04ad0ed2..f4a674b33fb 100644 --- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.expect +++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.expect @@ -8,7 +8,7 @@ import "dart:async"; import "dart:math" show Random; static method test() → dynamic { - () →* asy::Future* f = () → asy::Future* async { + () →* asy::Future* f = () → asy::Future* async /* futureValueType= core::num* */ { if(math::Random::•().{math::Random::nextBool}(){() →* core::bool*}) { return asy::Future::value(1); } diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.modular.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.modular.expect index 3af04ad0ed2..f4a674b33fb 100644 --- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.modular.expect @@ -8,7 +8,7 @@ import "dart:async"; import "dart:math" show Random; static method test() → dynamic { - () →* asy::Future* f = () → asy::Future* async { + () →* asy::Future* f = () → asy::Future* async /* futureValueType= core::num* */ { if(math::Random::•().{math::Random::nextBool}(){() →* core::bool*}) { return asy::Future::value(1); } diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.transformed.expect index e5f6a326915..ff449891d21 100644 --- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.transformed.expect @@ -8,7 +8,7 @@ import "dart:async"; import "dart:math" show Random; static method test() → dynamic { - () →* asy::Future* f = () → asy::Future* /* originally async */ { + () →* asy::Future* f = () → asy::Future* /* futureValueType= core::num* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.expect index 729dbe7faa7..2d31d8e7c51 100644 --- a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.expect +++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.expect @@ -5,8 +5,8 @@ import "dart:core" as core; import "dart:async"; -static method main() → dynamic async { - () →* asy::Future* f = () → asy::Future* async { +static method main() → dynamic async /* futureValueType= dynamic */ { + () →* asy::Future* f = () → asy::Future* async /* futureValueType= Null */ { return null; }; asy::Future* y = f(){() →* asy::Future*}; diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.modular.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.modular.expect index 729dbe7faa7..2d31d8e7c51 100644 --- a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.modular.expect @@ -5,8 +5,8 @@ import "dart:core" as core; import "dart:async"; -static method main() → dynamic async { - () →* asy::Future* f = () → asy::Future* async { +static method main() → dynamic async /* futureValueType= dynamic */ { + () →* asy::Future* f = () → asy::Future* async /* futureValueType= Null */ { return null; }; asy::Future* y = f(){() →* asy::Future*}; diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.transformed.expect index 2f6049410f0..82fc16a5ea5 100644 --- a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.transformed.expect @@ -6,7 +6,7 @@ import "dart:_internal" as _in; import "dart:async"; -static method main() → dynamic /* originally async */ { +static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; dynamic :return_value; @@ -19,7 +19,7 @@ static method main() → dynamic /* originally async */ { try { #L1: { - () →* asy::Future* f = () → asy::Future* /* originally async */ { + () →* asy::Future* f = () → asy::Future* /* futureValueType= Null */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.expect index a85a79c284f..9a6dc2737be 100644 --- a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.expect +++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.expect @@ -5,7 +5,7 @@ import "dart:core" as core; import "dart:async"; -static method main() → dynamic async { +static method main() → dynamic async /* futureValueType= dynamic */ { () →* asy::Stream* f = () → asy::Stream* async* { yield null; }; diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.modular.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.modular.expect index a85a79c284f..9a6dc2737be 100644 --- a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.modular.expect @@ -5,7 +5,7 @@ import "dart:core" as core; import "dart:async"; -static method main() → dynamic async { +static method main() → dynamic async /* futureValueType= dynamic */ { () →* asy::Stream* f = () → asy::Stream* async* { yield null; }; diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.transformed.expect index 6f20ea71bf1..d81d2c207ad 100644 --- a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.transformed.expect @@ -6,7 +6,7 @@ import "dart:_internal" as _in; import "dart:async"; -static method main() → dynamic /* originally async */ { +static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; dynamic :return_value; diff --git a/pkg/front_end/testcases/inference/downwards_inference_async_await.dart.weak.expect b/pkg/front_end/testcases/inference/downwards_inference_async_await.dart.weak.expect index 1a5ac1a36ef..031ded2c211 100644 --- a/pkg/front_end/testcases/inference/downwards_inference_async_await.dart.weak.expect +++ b/pkg/front_end/testcases/inference/downwards_inference_async_await.dart.weak.expect @@ -5,7 +5,7 @@ import "dart:core" as core; import "dart:async"; -static method main() → asy::Future* async { +static method main() → asy::Future* async /* futureValueType= dynamic */ { dynamic d; core::List* l0 = await[d as{TypeError,ForDynamic} core::int*]; core::List* l1 = await asy::Future::value*>([d as{TypeError,ForDynamic} core::int*]); diff --git a/pkg/front_end/testcases/inference/downwards_inference_async_await.dart.weak.modular.expect b/pkg/front_end/testcases/inference/downwards_inference_async_await.dart.weak.modular.expect index 1a5ac1a36ef..031ded2c211 100644 --- a/pkg/front_end/testcases/inference/downwards_inference_async_await.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/downwards_inference_async_await.dart.weak.modular.expect @@ -5,7 +5,7 @@ import "dart:core" as core; import "dart:async"; -static method main() → asy::Future* async { +static method main() → asy::Future* async /* futureValueType= dynamic */ { dynamic d; core::List* l0 = await[d as{TypeError,ForDynamic} core::int*]; core::List* l1 = await asy::Future::value*>([d as{TypeError,ForDynamic} core::int*]); diff --git a/pkg/front_end/testcases/inference/downwards_inference_async_await.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_async_await.dart.weak.transformed.expect index 9b64f1cb5f7..7a300f350d4 100644 --- a/pkg/front_end/testcases/inference/downwards_inference_async_await.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/downwards_inference_async_await.dart.weak.transformed.expect @@ -6,7 +6,7 @@ import "dart:_internal" as _in; import "dart:async"; -static method main() → asy::Future* /* originally async */ { +static method main() → asy::Future* /* futureValueType= dynamic */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; dynamic :return_value; diff --git a/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.weak.expect b/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.weak.expect index e2d0f6d27b0..6d06f1755ce 100644 --- a/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.weak.expect +++ b/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.weak.expect @@ -58,7 +58,7 @@ abstract class MyStream extends asy::Stream() → self::F::T* return null; -static method f() → asy::Future* async { +static method f() → asy::Future* async /* futureValueType= dynamic */ { dynamic d; core::Object* o; for (dynamic x in self::F*>()) { @@ -86,7 +86,7 @@ static method f() → asy::Future* async { o = #t4; } } -static method main() → asy::Future* async { +static method main() → asy::Future* async /* futureValueType= dynamic */ { for (core::int* x in [1, 2, 3]) { } for (core::num* x in [1, 2, 3]) { diff --git a/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.weak.modular.expect b/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.weak.modular.expect index e2d0f6d27b0..6d06f1755ce 100644 --- a/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.weak.modular.expect @@ -58,7 +58,7 @@ abstract class MyStream extends asy::Stream() → self::F::T* return null; -static method f() → asy::Future* async { +static method f() → asy::Future* async /* futureValueType= dynamic */ { dynamic d; core::Object* o; for (dynamic x in self::F*>()) { @@ -86,7 +86,7 @@ static method f() → asy::Future* async { o = #t4; } } -static method main() → asy::Future* async { +static method main() → asy::Future* async /* futureValueType= dynamic */ { for (core::int* x in [1, 2, 3]) { } for (core::num* x in [1, 2, 3]) { diff --git a/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.weak.transformed.expect index 70f5a697128..a0160b8bfd5 100644 --- a/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.weak.transformed.expect @@ -59,7 +59,7 @@ abstract class MyStream extends asy::Stream() → self::F::T* return null; -static method f() → asy::Future* /* originally async */ { +static method f() → asy::Future* /* futureValueType= dynamic */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; dynamic :return_value; @@ -238,7 +238,7 @@ static method f() → asy::Future* /* originally async */ { :is_sync = true; return :async_future; } -static method main() → asy::Future* /* originally async */ { +static method main() → asy::Future* /* futureValueType= dynamic */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; dynamic :return_value; diff --git a/pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.weak.expect b/pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.weak.expect index 93ecd3903b2..34ecf11af3b 100644 --- a/pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.weak.expect +++ b/pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.weak.expect @@ -3,7 +3,7 @@ import self as self; import "dart:core" as core; import "dart:async" as asy; -static method test() → dynamic async { +static method test() → dynamic async /* futureValueType= dynamic */ { core::Object* o; for (dynamic x in o as{TypeError} core::Iterable*) { } diff --git a/pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.weak.modular.expect b/pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.weak.modular.expect index 93ecd3903b2..34ecf11af3b 100644 --- a/pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.weak.modular.expect @@ -3,7 +3,7 @@ import self as self; import "dart:core" as core; import "dart:async" as asy; -static method test() → dynamic async { +static method test() → dynamic async /* futureValueType= dynamic */ { core::Object* o; for (dynamic x in o as{TypeError} core::Iterable*) { } diff --git a/pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.weak.transformed.expect index d8e4b15fa5d..258db250e6b 100644 --- a/pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.weak.transformed.expect @@ -4,7 +4,7 @@ import "dart:async" as asy; import "dart:core" as core; import "dart:_internal" as _in; -static method test() → dynamic /* originally async */ { +static method test() → dynamic /* futureValueType= dynamic */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; dynamic :return_value; diff --git a/pkg/front_end/testcases/inference/future_then.dart.weak.expect b/pkg/front_end/testcases/inference/future_then.dart.weak.expect index 34720833d08..806622de06c 100644 --- a/pkg/front_end/testcases/inference/future_then.dart.weak.expect +++ b/pkg/front_end/testcases/inference/future_then.dart.weak.expect @@ -34,20 +34,20 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - asy::Future* t1 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async => await asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t2 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async { + asy::Future* t1 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => await asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + asy::Future* t2 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return await asy::Future::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t3 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async => 3){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t4 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async { + asy::Future* t3 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => 3){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + asy::Future* t4 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return 3; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; asy::Future* t5 = f.{self::MyFuture::then}((dynamic _) → asy::Future* => asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; asy::Future* t6 = f.{self::MyFuture::then}((dynamic _) → asy::Future* { return asy::Future::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t7 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async => asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t8 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async { + asy::Future* t7 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + asy::Future* t8 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return asy::Future::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; } diff --git a/pkg/front_end/testcases/inference/future_then.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then.dart.weak.modular.expect index 34720833d08..806622de06c 100644 --- a/pkg/front_end/testcases/inference/future_then.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/future_then.dart.weak.modular.expect @@ -34,20 +34,20 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - asy::Future* t1 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async => await asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t2 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async { + asy::Future* t1 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => await asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + asy::Future* t2 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return await asy::Future::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t3 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async => 3){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t4 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async { + asy::Future* t3 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => 3){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + asy::Future* t4 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return 3; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; asy::Future* t5 = f.{self::MyFuture::then}((dynamic _) → asy::Future* => asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; asy::Future* t6 = f.{self::MyFuture::then}((dynamic _) → asy::Future* { return asy::Future::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t7 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async => asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t8 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async { + asy::Future* t7 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + asy::Future* t8 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return asy::Future::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; } diff --git a/pkg/front_end/testcases/inference/future_then.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then.dart.weak.transformed.expect index 1b0b3a6cbc2..5c431182b0c 100644 --- a/pkg/front_end/testcases/inference/future_then.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/future_then.dart.weak.transformed.expect @@ -35,7 +35,7 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - asy::Future* t1 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* originally async */ { + asy::Future* t1 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -64,7 +64,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t2 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* originally async */ { + asy::Future* t2 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -93,7 +93,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t3 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* originally async */ { + asy::Future* t3 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -120,7 +120,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t4 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* originally async */ { + asy::Future* t4 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -151,7 +151,7 @@ static method test() → void { asy::Future* t6 = f.{self::MyFuture::then}((dynamic _) → asy::Future* { return asy::Future::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t7 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* originally async */ { + asy::Future* t7 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; @@ -178,7 +178,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t8 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* originally async */ { + asy::Future* t8 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_2.dart.weak.expect index caba7e564d4..32395147a23 100644 --- a/pkg/front_end/testcases/inference/future_then_2.dart.weak.expect +++ b/pkg/front_end/testcases/inference/future_then_2.dart.weak.expect @@ -34,20 +34,20 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - asy::Future* t1 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async => await new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t2 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async { + asy::Future* t1 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => await new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + asy::Future* t2 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return await new self::MyFuture::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t3 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async => 3){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t4 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async { + asy::Future* t3 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => 3){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + asy::Future* t4 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return 3; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; asy::Future* t5 = f.{self::MyFuture::then}((dynamic _) → self::MyFuture* => new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; asy::Future* t6 = f.{self::MyFuture::then}((dynamic _) → self::MyFuture* { return new self::MyFuture::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t7 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async => new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t8 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async { + asy::Future* t7 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + asy::Future* t8 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return new self::MyFuture::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; } diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_2.dart.weak.modular.expect index caba7e564d4..32395147a23 100644 --- a/pkg/front_end/testcases/inference/future_then_2.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/future_then_2.dart.weak.modular.expect @@ -34,20 +34,20 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - asy::Future* t1 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async => await new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t2 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async { + asy::Future* t1 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => await new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + asy::Future* t2 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return await new self::MyFuture::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t3 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async => 3){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t4 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async { + asy::Future* t3 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => 3){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + asy::Future* t4 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return 3; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; asy::Future* t5 = f.{self::MyFuture::then}((dynamic _) → self::MyFuture* => new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; asy::Future* t6 = f.{self::MyFuture::then}((dynamic _) → self::MyFuture* { return new self::MyFuture::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t7 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async => new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t8 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async { + asy::Future* t7 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + asy::Future* t8 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return new self::MyFuture::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; } diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_2.dart.weak.transformed.expect index 2945796835e..a14d3e6907b 100644 --- a/pkg/front_end/testcases/inference/future_then_2.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/future_then_2.dart.weak.transformed.expect @@ -35,7 +35,7 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - asy::Future* t1 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* originally async */ { + asy::Future* t1 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -64,7 +64,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t2 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* originally async */ { + asy::Future* t2 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -93,7 +93,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t3 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* originally async */ { + asy::Future* t3 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -120,7 +120,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t4 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* originally async */ { + asy::Future* t4 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -151,7 +151,7 @@ static method test() → void { asy::Future* t6 = f.{self::MyFuture::then}((dynamic _) → self::MyFuture* { return new self::MyFuture::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t7 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* originally async */ { + asy::Future* t7 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; @@ -178,7 +178,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t8 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* originally async */ { + asy::Future* t8 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_3.dart.weak.expect index 1efc4064a25..9bbf98e18ce 100644 --- a/pkg/front_end/testcases/inference/future_then_3.dart.weak.expect +++ b/pkg/front_end/testcases/inference/future_then_3.dart.weak.expect @@ -34,20 +34,20 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - self::MyFuture* t1 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async => await asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t2 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async { + self::MyFuture* t1 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => await asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + self::MyFuture* t2 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return await asy::Future::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t3 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async => 3){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t4 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async { + self::MyFuture* t3 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => 3){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + self::MyFuture* t4 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return 3; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; self::MyFuture* t5 = f.{self::MyFuture::then}((dynamic _) → asy::Future* => asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; self::MyFuture* t6 = f.{self::MyFuture::then}((dynamic _) → asy::Future* { return asy::Future::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t7 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async => asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t8 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async { + self::MyFuture* t7 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + self::MyFuture* t8 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return asy::Future::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; } diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_3.dart.weak.modular.expect index 1efc4064a25..9bbf98e18ce 100644 --- a/pkg/front_end/testcases/inference/future_then_3.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/future_then_3.dart.weak.modular.expect @@ -34,20 +34,20 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - self::MyFuture* t1 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async => await asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t2 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async { + self::MyFuture* t1 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => await asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + self::MyFuture* t2 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return await asy::Future::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t3 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async => 3){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t4 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async { + self::MyFuture* t3 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => 3){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + self::MyFuture* t4 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return 3; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; self::MyFuture* t5 = f.{self::MyFuture::then}((dynamic _) → asy::Future* => asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; self::MyFuture* t6 = f.{self::MyFuture::then}((dynamic _) → asy::Future* { return asy::Future::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t7 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async => asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t8 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async { + self::MyFuture* t7 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + self::MyFuture* t8 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return asy::Future::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; } diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_3.dart.weak.transformed.expect index d075aa10c81..e39900ae7fe 100644 --- a/pkg/front_end/testcases/inference/future_then_3.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/future_then_3.dart.weak.transformed.expect @@ -35,7 +35,7 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - self::MyFuture* t1 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* originally async */ { + self::MyFuture* t1 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -64,7 +64,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t2 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* originally async */ { + self::MyFuture* t2 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -93,7 +93,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t3 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* originally async */ { + self::MyFuture* t3 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -120,7 +120,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t4 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* originally async */ { + self::MyFuture* t4 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -151,7 +151,7 @@ static method test() → void { self::MyFuture* t6 = f.{self::MyFuture::then}((dynamic _) → asy::Future* { return asy::Future::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t7 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* originally async */ { + self::MyFuture* t7 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; @@ -178,7 +178,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t8 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* originally async */ { + self::MyFuture* t8 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_4.dart.weak.expect index eaff2a57900..f4d9ecd7313 100644 --- a/pkg/front_end/testcases/inference/future_then_4.dart.weak.expect +++ b/pkg/front_end/testcases/inference/future_then_4.dart.weak.expect @@ -34,20 +34,20 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - self::MyFuture* t1 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async => await new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t2 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async { + self::MyFuture* t1 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => await new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + self::MyFuture* t2 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return await new self::MyFuture::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t3 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async => 3){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t4 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async { + self::MyFuture* t3 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => 3){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + self::MyFuture* t4 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return 3; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; self::MyFuture* t5 = f.{self::MyFuture::then}((dynamic _) → self::MyFuture* => new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; self::MyFuture* t6 = f.{self::MyFuture::then}((dynamic _) → self::MyFuture* { return new self::MyFuture::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t7 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async => new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t8 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async { + self::MyFuture* t7 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + self::MyFuture* t8 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return new self::MyFuture::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; } diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_4.dart.weak.modular.expect index eaff2a57900..f4d9ecd7313 100644 --- a/pkg/front_end/testcases/inference/future_then_4.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/future_then_4.dart.weak.modular.expect @@ -34,20 +34,20 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - self::MyFuture* t1 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async => await new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t2 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async { + self::MyFuture* t1 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => await new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + self::MyFuture* t2 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return await new self::MyFuture::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t3 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async => 3){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t4 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async { + self::MyFuture* t3 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => 3){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + self::MyFuture* t4 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return 3; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; self::MyFuture* t5 = f.{self::MyFuture::then}((dynamic _) → self::MyFuture* => new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; self::MyFuture* t6 = f.{self::MyFuture::then}((dynamic _) → self::MyFuture* { return new self::MyFuture::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t7 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async => new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t8 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async { + self::MyFuture* t7 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + self::MyFuture* t8 = f.{self::MyFuture::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return new self::MyFuture::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; } diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_4.dart.weak.transformed.expect index ecea35520e8..3d41dfa7ee0 100644 --- a/pkg/front_end/testcases/inference/future_then_4.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/future_then_4.dart.weak.transformed.expect @@ -35,7 +35,7 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - self::MyFuture* t1 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* originally async */ { + self::MyFuture* t1 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -64,7 +64,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t2 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* originally async */ { + self::MyFuture* t2 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -93,7 +93,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t3 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* originally async */ { + self::MyFuture* t3 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -120,7 +120,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t4 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* originally async */ { + self::MyFuture* t4 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -151,7 +151,7 @@ static method test() → void { self::MyFuture* t6 = f.{self::MyFuture::then}((dynamic _) → self::MyFuture* { return new self::MyFuture::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t7 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* originally async */ { + self::MyFuture* t7 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; @@ -178,7 +178,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t8 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* originally async */ { + self::MyFuture* t8 = f.{self::MyFuture::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_5.dart.weak.expect index 955cbb30d79..0a41e1a6ea2 100644 --- a/pkg/front_end/testcases/inference/future_then_5.dart.weak.expect +++ b/pkg/front_end/testcases/inference/future_then_5.dart.weak.expect @@ -34,20 +34,20 @@ class MyFuture extends core::Object implement } static method test() → void { asy::Future* f; - asy::Future* t1 = f.{asy::Future::then}((dynamic _) → asy::Future* async => await new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t2 = f.{asy::Future::then}((dynamic _) → asy::Future* async { + asy::Future* t1 = f.{asy::Future::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => await new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; + asy::Future* t2 = f.{asy::Future::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return await new self::MyFuture::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t3 = f.{asy::Future::then}((dynamic _) → asy::Future* async => 3){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t4 = f.{asy::Future::then}((dynamic _) → asy::Future* async { + asy::Future* t3 = f.{asy::Future::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => 3){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; + asy::Future* t4 = f.{asy::Future::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return 3; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; asy::Future* t5 = f.{asy::Future::then}((dynamic _) → self::MyFuture* => new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; asy::Future* t6 = f.{asy::Future::then}((dynamic _) → self::MyFuture* { return new self::MyFuture::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t7 = f.{asy::Future::then}((dynamic _) → asy::Future* async => new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t8 = f.{asy::Future::then}((dynamic _) → asy::Future* async { + asy::Future* t7 = f.{asy::Future::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; + asy::Future* t8 = f.{asy::Future::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return new self::MyFuture::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; } diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_5.dart.weak.modular.expect index 955cbb30d79..0a41e1a6ea2 100644 --- a/pkg/front_end/testcases/inference/future_then_5.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/future_then_5.dart.weak.modular.expect @@ -34,20 +34,20 @@ class MyFuture extends core::Object implement } static method test() → void { asy::Future* f; - asy::Future* t1 = f.{asy::Future::then}((dynamic _) → asy::Future* async => await new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t2 = f.{asy::Future::then}((dynamic _) → asy::Future* async { + asy::Future* t1 = f.{asy::Future::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => await new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; + asy::Future* t2 = f.{asy::Future::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return await new self::MyFuture::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t3 = f.{asy::Future::then}((dynamic _) → asy::Future* async => 3){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t4 = f.{asy::Future::then}((dynamic _) → asy::Future* async { + asy::Future* t3 = f.{asy::Future::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => 3){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; + asy::Future* t4 = f.{asy::Future::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return 3; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; asy::Future* t5 = f.{asy::Future::then}((dynamic _) → self::MyFuture* => new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; asy::Future* t6 = f.{asy::Future::then}((dynamic _) → self::MyFuture* { return new self::MyFuture::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t7 = f.{asy::Future::then}((dynamic _) → asy::Future* async => new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t8 = f.{asy::Future::then}((dynamic _) → asy::Future* async { + asy::Future* t7 = f.{asy::Future::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => new self::MyFuture::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; + asy::Future* t8 = f.{asy::Future::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return new self::MyFuture::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; } diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_5.dart.weak.transformed.expect index 4c59d38e887..cce1d0b1a52 100644 --- a/pkg/front_end/testcases/inference/future_then_5.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/future_then_5.dart.weak.transformed.expect @@ -35,7 +35,7 @@ class MyFuture extends core::Object implement } static method test() → void { asy::Future* f; - asy::Future* t1 = f.{asy::Future::then}((dynamic _) → asy::Future* /* originally async */ { + asy::Future* t1 = f.{asy::Future::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -64,7 +64,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t2 = f.{asy::Future::then}((dynamic _) → asy::Future* /* originally async */ { + asy::Future* t2 = f.{asy::Future::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -93,7 +93,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t3 = f.{asy::Future::then}((dynamic _) → asy::Future* /* originally async */ { + asy::Future* t3 = f.{asy::Future::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -120,7 +120,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t4 = f.{asy::Future::then}((dynamic _) → asy::Future* /* originally async */ { + asy::Future* t4 = f.{asy::Future::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -151,7 +151,7 @@ static method test() → void { asy::Future* t6 = f.{asy::Future::then}((dynamic _) → self::MyFuture* { return new self::MyFuture::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t7 = f.{asy::Future::then}((dynamic _) → asy::Future* /* originally async */ { + asy::Future* t7 = f.{asy::Future::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; @@ -178,7 +178,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t8 = f.{asy::Future::then}((dynamic _) → asy::Future* /* originally async */ { + asy::Future* t8 = f.{asy::Future::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_6.dart.weak.expect index 438bfacb342..c12d5d228a0 100644 --- a/pkg/front_end/testcases/inference/future_then_6.dart.weak.expect +++ b/pkg/front_end/testcases/inference/future_then_6.dart.weak.expect @@ -34,20 +34,20 @@ class MyFuture extends core::Object implement } static method test() → void { asy::Future* f; - asy::Future* t1 = f.{asy::Future::then}((dynamic _) → asy::Future* async => await asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t2 = f.{asy::Future::then}((dynamic _) → asy::Future* async { + asy::Future* t1 = f.{asy::Future::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => await asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; + asy::Future* t2 = f.{asy::Future::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return await asy::Future::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t3 = f.{asy::Future::then}((dynamic _) → asy::Future* async => 3){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t4 = f.{asy::Future::then}((dynamic _) → asy::Future* async { + asy::Future* t3 = f.{asy::Future::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => 3){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; + asy::Future* t4 = f.{asy::Future::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return 3; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; asy::Future* t5 = f.{asy::Future::then}((dynamic _) → asy::Future* => asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; asy::Future* t6 = f.{asy::Future::then}((dynamic _) → asy::Future* { return asy::Future::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t7 = f.{asy::Future::then}((dynamic _) → asy::Future* async => asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t8 = f.{asy::Future::then}((dynamic _) → asy::Future* async { + asy::Future* t7 = f.{asy::Future::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; + asy::Future* t8 = f.{asy::Future::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return asy::Future::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; } diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_6.dart.weak.modular.expect index 438bfacb342..c12d5d228a0 100644 --- a/pkg/front_end/testcases/inference/future_then_6.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/future_then_6.dart.weak.modular.expect @@ -34,20 +34,20 @@ class MyFuture extends core::Object implement } static method test() → void { asy::Future* f; - asy::Future* t1 = f.{asy::Future::then}((dynamic _) → asy::Future* async => await asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t2 = f.{asy::Future::then}((dynamic _) → asy::Future* async { + asy::Future* t1 = f.{asy::Future::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => await asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; + asy::Future* t2 = f.{asy::Future::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return await asy::Future::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t3 = f.{asy::Future::then}((dynamic _) → asy::Future* async => 3){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t4 = f.{asy::Future::then}((dynamic _) → asy::Future* async { + asy::Future* t3 = f.{asy::Future::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => 3){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; + asy::Future* t4 = f.{asy::Future::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return 3; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; asy::Future* t5 = f.{asy::Future::then}((dynamic _) → asy::Future* => asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; asy::Future* t6 = f.{asy::Future::then}((dynamic _) → asy::Future* { return asy::Future::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t7 = f.{asy::Future::then}((dynamic _) → asy::Future* async => asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t8 = f.{asy::Future::then}((dynamic _) → asy::Future* async { + asy::Future* t7 = f.{asy::Future::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ => asy::Future::value(3)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; + asy::Future* t8 = f.{asy::Future::then}((dynamic _) → asy::Future* async /* futureValueType= core::int* */ { return asy::Future::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; } diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_6.dart.weak.transformed.expect index fdde0792017..36a0f7742b6 100644 --- a/pkg/front_end/testcases/inference/future_then_6.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/future_then_6.dart.weak.transformed.expect @@ -35,7 +35,7 @@ class MyFuture extends core::Object implement } static method test() → void { asy::Future* f; - asy::Future* t1 = f.{asy::Future::then}((dynamic _) → asy::Future* /* originally async */ { + asy::Future* t1 = f.{asy::Future::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -64,7 +64,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t2 = f.{asy::Future::then}((dynamic _) → asy::Future* /* originally async */ { + asy::Future* t2 = f.{asy::Future::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -93,7 +93,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t3 = f.{asy::Future::then}((dynamic _) → asy::Future* /* originally async */ { + asy::Future* t3 = f.{asy::Future::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -120,7 +120,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t4 = f.{asy::Future::then}((dynamic _) → asy::Future* /* originally async */ { + asy::Future* t4 = f.{asy::Future::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -151,7 +151,7 @@ static method test() → void { asy::Future* t6 = f.{asy::Future::then}((dynamic _) → asy::Future* { return asy::Future::value(3); }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t7 = f.{asy::Future::then}((dynamic _) → asy::Future* /* originally async */ { + asy::Future* t7 = f.{asy::Future::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; @@ -178,7 +178,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t8 = f.{asy::Future::then}((dynamic _) → asy::Future* /* originally async */ { + asy::Future* t8 = f.{asy::Future::then}((dynamic _) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.expect index 816b3ee74a3..e736a28070c 100644 --- a/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.expect +++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.expect @@ -34,8 +34,8 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - asy::Future* t1 = f.{self::MyFuture::then}((core::bool* x) → asy::Future* async => x ?{core::int*} 2 : await asy::Future::value(3)){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t2 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* async { + asy::Future* t1 = f.{self::MyFuture::then}((core::bool* x) → asy::Future* async /* futureValueType= core::int* */ => x ?{core::int*} 2 : await asy::Future::value(3)){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + asy::Future* t2 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* async /* futureValueType= core::int* */ { return (await x ?{core::Object*} 2 : asy::Future::value(3)) as{TypeError} FutureOr*; }){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; asy::Future* t5 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* => (x ?{core::Object*} 2 : asy::Future::value(3)) as{TypeError} FutureOr*){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.modular.expect index 816b3ee74a3..e736a28070c 100644 --- a/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.modular.expect @@ -34,8 +34,8 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - asy::Future* t1 = f.{self::MyFuture::then}((core::bool* x) → asy::Future* async => x ?{core::int*} 2 : await asy::Future::value(3)){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t2 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* async { + asy::Future* t1 = f.{self::MyFuture::then}((core::bool* x) → asy::Future* async /* futureValueType= core::int* */ => x ?{core::int*} 2 : await asy::Future::value(3)){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + asy::Future* t2 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* async /* futureValueType= core::int* */ { return (await x ?{core::Object*} 2 : asy::Future::value(3)) as{TypeError} FutureOr*; }){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; asy::Future* t5 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* => (x ?{core::Object*} 2 : asy::Future::value(3)) as{TypeError} FutureOr*){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.transformed.expect index ca269fcba30..0fbde9297a8 100644 --- a/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.transformed.expect @@ -35,7 +35,7 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - asy::Future* t1 = f.{self::MyFuture::then}((core::bool* x) → asy::Future* /* originally async */ { + asy::Future* t1 = f.{self::MyFuture::then}((core::bool* x) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -71,7 +71,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t2 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* /* originally async */ { + asy::Future* t2 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.expect index 11b749492d6..389affadbc8 100644 --- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.expect +++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.expect @@ -34,8 +34,8 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - asy::Future* t1 = f.{self::MyFuture::then}((core::bool* x) → asy::Future* async => x ?{core::int*} 2 : await new self::MyFuture::value(3)){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t2 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* async { + asy::Future* t1 = f.{self::MyFuture::then}((core::bool* x) → asy::Future* async /* futureValueType= core::int* */ => x ?{core::int*} 2 : await new self::MyFuture::value(3)){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + asy::Future* t2 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* async /* futureValueType= core::int* */ { return (await x ?{core::Object*} 2 : new self::MyFuture::value(3)) as{TypeError} FutureOr*; }){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; asy::Future* t5 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* => (x ?{core::Object*} 2 : new self::MyFuture::value(3)) as{TypeError} FutureOr*){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.modular.expect index 11b749492d6..389affadbc8 100644 --- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.modular.expect @@ -34,8 +34,8 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - asy::Future* t1 = f.{self::MyFuture::then}((core::bool* x) → asy::Future* async => x ?{core::int*} 2 : await new self::MyFuture::value(3)){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t2 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* async { + asy::Future* t1 = f.{self::MyFuture::then}((core::bool* x) → asy::Future* async /* futureValueType= core::int* */ => x ?{core::int*} 2 : await new self::MyFuture::value(3)){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + asy::Future* t2 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* async /* futureValueType= core::int* */ { return (await x ?{core::Object*} 2 : new self::MyFuture::value(3)) as{TypeError} FutureOr*; }){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; asy::Future* t5 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* => (x ?{core::Object*} 2 : new self::MyFuture::value(3)) as{TypeError} FutureOr*){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.transformed.expect index d41c46d98e5..b88ca68578b 100644 --- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.transformed.expect @@ -35,7 +35,7 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - asy::Future* t1 = f.{self::MyFuture::then}((core::bool* x) → asy::Future* /* originally async */ { + asy::Future* t1 = f.{self::MyFuture::then}((core::bool* x) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -71,7 +71,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t2 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* /* originally async */ { + asy::Future* t2 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.expect index 11b63b1699e..73dfd35e6e6 100644 --- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.expect +++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.expect @@ -34,8 +34,8 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - self::MyFuture* t1 = f.{self::MyFuture::then}((core::bool* x) → asy::Future* async => x ?{core::int*} 2 : await asy::Future::value(3)){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t2 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* async { + self::MyFuture* t1 = f.{self::MyFuture::then}((core::bool* x) → asy::Future* async /* futureValueType= core::int* */ => x ?{core::int*} 2 : await asy::Future::value(3)){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + self::MyFuture* t2 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* async /* futureValueType= core::int* */ { return (await x ?{core::Object*} 2 : asy::Future::value(3)) as{TypeError} FutureOr*; }){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; self::MyFuture* t5 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* => (x ?{core::Object*} 2 : asy::Future::value(3)) as{TypeError} FutureOr*){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.modular.expect index 11b63b1699e..73dfd35e6e6 100644 --- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.modular.expect @@ -34,8 +34,8 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - self::MyFuture* t1 = f.{self::MyFuture::then}((core::bool* x) → asy::Future* async => x ?{core::int*} 2 : await asy::Future::value(3)){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t2 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* async { + self::MyFuture* t1 = f.{self::MyFuture::then}((core::bool* x) → asy::Future* async /* futureValueType= core::int* */ => x ?{core::int*} 2 : await asy::Future::value(3)){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + self::MyFuture* t2 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* async /* futureValueType= core::int* */ { return (await x ?{core::Object*} 2 : asy::Future::value(3)) as{TypeError} FutureOr*; }){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; self::MyFuture* t5 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* => (x ?{core::Object*} 2 : asy::Future::value(3)) as{TypeError} FutureOr*){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.transformed.expect index 353cbccd613..6a05bbf553f 100644 --- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.transformed.expect @@ -35,7 +35,7 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - self::MyFuture* t1 = f.{self::MyFuture::then}((core::bool* x) → asy::Future* /* originally async */ { + self::MyFuture* t1 = f.{self::MyFuture::then}((core::bool* x) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -71,7 +71,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t2 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* /* originally async */ { + self::MyFuture* t2 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.expect index cc3ada3ba9f..d79b1024e35 100644 --- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.expect +++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.expect @@ -34,8 +34,8 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - self::MyFuture* t1 = f.{self::MyFuture::then}((core::bool* x) → asy::Future* async => x ?{core::int*} 2 : await new self::MyFuture::value(3)){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t2 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* async { + self::MyFuture* t1 = f.{self::MyFuture::then}((core::bool* x) → asy::Future* async /* futureValueType= core::int* */ => x ?{core::int*} 2 : await new self::MyFuture::value(3)){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + self::MyFuture* t2 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* async /* futureValueType= core::int* */ { return (await x ?{core::Object*} 2 : new self::MyFuture::value(3)) as{TypeError} FutureOr*; }){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; self::MyFuture* t5 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* => (x ?{core::Object*} 2 : new self::MyFuture::value(3)) as{TypeError} FutureOr*){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.modular.expect index cc3ada3ba9f..d79b1024e35 100644 --- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.modular.expect @@ -34,8 +34,8 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - self::MyFuture* t1 = f.{self::MyFuture::then}((core::bool* x) → asy::Future* async => x ?{core::int*} 2 : await new self::MyFuture::value(3)){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t2 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* async { + self::MyFuture* t1 = f.{self::MyFuture::then}((core::bool* x) → asy::Future* async /* futureValueType= core::int* */ => x ?{core::int*} 2 : await new self::MyFuture::value(3)){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + self::MyFuture* t2 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* async /* futureValueType= core::int* */ { return (await x ?{core::Object*} 2 : new self::MyFuture::value(3)) as{TypeError} FutureOr*; }){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; self::MyFuture* t5 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* => (x ?{core::Object*} 2 : new self::MyFuture::value(3)) as{TypeError} FutureOr*){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.transformed.expect index fa9b07f8a7d..34c2ea55b1c 100644 --- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.transformed.expect @@ -35,7 +35,7 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - self::MyFuture* t1 = f.{self::MyFuture::then}((core::bool* x) → asy::Future* /* originally async */ { + self::MyFuture* t1 = f.{self::MyFuture::then}((core::bool* x) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -71,7 +71,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - self::MyFuture* t2 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* /* originally async */ { + self::MyFuture* t2 = f.{self::MyFuture::then}((core::bool* x) → FutureOr* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.expect index 83acf25110e..6989a48f511 100644 --- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.expect +++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.expect @@ -34,8 +34,8 @@ class MyFuture extends core::Object implement } static method test() → void { asy::Future* f; - asy::Future* t1 = f.{asy::Future::then}((core::bool* x) → asy::Future* async => x ?{core::int*} 2 : await new self::MyFuture::value(3)){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t2 = f.{asy::Future::then}((core::bool* x) → FutureOr* async { + asy::Future* t1 = f.{asy::Future::then}((core::bool* x) → asy::Future* async /* futureValueType= core::int* */ => x ?{core::int*} 2 : await new self::MyFuture::value(3)){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; + asy::Future* t2 = f.{asy::Future::then}((core::bool* x) → FutureOr* async /* futureValueType= core::int* */ { return (await x ?{core::Object*} 2 : new self::MyFuture::value(3)) as{TypeError} FutureOr*; }){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; asy::Future* t5 = f.{asy::Future::then}((core::bool* x) → FutureOr* => (x ?{core::Object*} 2 : new self::MyFuture::value(3)) as{TypeError} FutureOr*){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.modular.expect index 83acf25110e..6989a48f511 100644 --- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.modular.expect @@ -34,8 +34,8 @@ class MyFuture extends core::Object implement } static method test() → void { asy::Future* f; - asy::Future* t1 = f.{asy::Future::then}((core::bool* x) → asy::Future* async => x ?{core::int*} 2 : await new self::MyFuture::value(3)){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t2 = f.{asy::Future::then}((core::bool* x) → FutureOr* async { + asy::Future* t1 = f.{asy::Future::then}((core::bool* x) → asy::Future* async /* futureValueType= core::int* */ => x ?{core::int*} 2 : await new self::MyFuture::value(3)){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; + asy::Future* t2 = f.{asy::Future::then}((core::bool* x) → FutureOr* async /* futureValueType= core::int* */ { return (await x ?{core::Object*} 2 : new self::MyFuture::value(3)) as{TypeError} FutureOr*; }){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; asy::Future* t5 = f.{asy::Future::then}((core::bool* x) → FutureOr* => (x ?{core::Object*} 2 : new self::MyFuture::value(3)) as{TypeError} FutureOr*){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.transformed.expect index 862a14659cb..c47ee35c138 100644 --- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.transformed.expect @@ -35,7 +35,7 @@ class MyFuture extends core::Object implement } static method test() → void { asy::Future* f; - asy::Future* t1 = f.{asy::Future::then}((core::bool* x) → asy::Future* /* originally async */ { + asy::Future* t1 = f.{asy::Future::then}((core::bool* x) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -71,7 +71,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t2 = f.{asy::Future::then}((core::bool* x) → FutureOr* /* originally async */ { + asy::Future* t2 = f.{asy::Future::then}((core::bool* x) → FutureOr* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.expect index 0c2809d65d2..4d22096be00 100644 --- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.expect +++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.expect @@ -34,8 +34,8 @@ class MyFuture extends core::Object implement } static method test() → void { asy::Future* f; - asy::Future* t1 = f.{asy::Future::then}((core::bool* x) → asy::Future* async => x ?{core::int*} 2 : await asy::Future::value(3)){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t2 = f.{asy::Future::then}((core::bool* x) → FutureOr* async { + asy::Future* t1 = f.{asy::Future::then}((core::bool* x) → asy::Future* async /* futureValueType= core::int* */ => x ?{core::int*} 2 : await asy::Future::value(3)){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; + asy::Future* t2 = f.{asy::Future::then}((core::bool* x) → FutureOr* async /* futureValueType= core::int* */ { return (await x ?{core::Object*} 2 : asy::Future::value(3)) as{TypeError} FutureOr*; }){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; asy::Future* t5 = f.{asy::Future::then}((core::bool* x) → FutureOr* => (x ?{core::Object*} 2 : asy::Future::value(3)) as{TypeError} FutureOr*){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.modular.expect index 0c2809d65d2..4d22096be00 100644 --- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.modular.expect @@ -34,8 +34,8 @@ class MyFuture extends core::Object implement } static method test() → void { asy::Future* f; - asy::Future* t1 = f.{asy::Future::then}((core::bool* x) → asy::Future* async => x ?{core::int*} 2 : await asy::Future::value(3)){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t2 = f.{asy::Future::then}((core::bool* x) → FutureOr* async { + asy::Future* t1 = f.{asy::Future::then}((core::bool* x) → asy::Future* async /* futureValueType= core::int* */ => x ?{core::int*} 2 : await asy::Future::value(3)){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; + asy::Future* t2 = f.{asy::Future::then}((core::bool* x) → FutureOr* async /* futureValueType= core::int* */ { return (await x ?{core::Object*} 2 : asy::Future::value(3)) as{TypeError} FutureOr*; }){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; asy::Future* t5 = f.{asy::Future::then}((core::bool* x) → FutureOr* => (x ?{core::Object*} 2 : asy::Future::value(3)) as{TypeError} FutureOr*){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.transformed.expect index 51cd23d3d36..9c16fa5afb0 100644 --- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.transformed.expect @@ -35,7 +35,7 @@ class MyFuture extends core::Object implement } static method test() → void { asy::Future* f; - asy::Future* t1 = f.{asy::Future::then}((core::bool* x) → asy::Future* /* originally async */ { + asy::Future* t1 = f.{asy::Future::then}((core::bool* x) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -71,7 +71,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((core::bool*) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; - asy::Future* t2 = f.{asy::Future::then}((core::bool* x) → FutureOr* /* originally async */ { + asy::Future* t2 = f.{asy::Future::then}((core::bool* x) → FutureOr* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.expect index 39e82e21856..2dfc365cda9 100644 --- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.expect +++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.expect @@ -34,8 +34,8 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - asy::Future* t1 = f.{self::MyFuture::then}((core::int* x) → asy::Future* async => let final core::int* #t1 = x in #t1 == null ?{core::int*} await asy::Future::value(3) : #t1){((core::int*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t2 = f.{self::MyFuture::then}((core::int* x) → FutureOr* async { + asy::Future* t1 = f.{self::MyFuture::then}((core::int* x) → asy::Future* async /* futureValueType= core::int* */ => let final core::int* #t1 = x in #t1 == null ?{core::int*} await asy::Future::value(3) : #t1){((core::int*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + asy::Future* t2 = f.{self::MyFuture::then}((core::int* x) → FutureOr* async /* futureValueType= core::int* */ { return (let final core::int* #t2 = await x in #t2 == null ?{core::Object*} asy::Future::value(3) : #t2) as{TypeError} FutureOr*; }){((core::int*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; asy::Future* t5 = f.{self::MyFuture::then}((core::int* x) → FutureOr* => (let final core::int* #t3 = x in #t3 == null ?{core::Object*} asy::Future::value(3) : #t3) as{TypeError} FutureOr*){((core::int*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.modular.expect index 39e82e21856..2dfc365cda9 100644 --- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.modular.expect @@ -34,8 +34,8 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - asy::Future* t1 = f.{self::MyFuture::then}((core::int* x) → asy::Future* async => let final core::int* #t1 = x in #t1 == null ?{core::int*} await asy::Future::value(3) : #t1){((core::int*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t2 = f.{self::MyFuture::then}((core::int* x) → FutureOr* async { + asy::Future* t1 = f.{self::MyFuture::then}((core::int* x) → asy::Future* async /* futureValueType= core::int* */ => let final core::int* #t1 = x in #t1 == null ?{core::int*} await asy::Future::value(3) : #t1){((core::int*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; + asy::Future* t2 = f.{self::MyFuture::then}((core::int* x) → FutureOr* async /* futureValueType= core::int* */ { return (let final core::int* #t2 = await x in #t2 == null ?{core::Object*} asy::Future::value(3) : #t2) as{TypeError} FutureOr*; }){((core::int*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; asy::Future* t5 = f.{self::MyFuture::then}((core::int* x) → FutureOr* => (let final core::int* #t3 = x in #t3 == null ?{core::Object*} asy::Future::value(3) : #t3) as{TypeError} FutureOr*){((core::int*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.transformed.expect index 59febc892f6..83b6d1e8331 100644 --- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.transformed.expect @@ -35,7 +35,7 @@ class MyFuture extends core::Object implement } static method test() → void { self::MyFuture* f; - asy::Future* t1 = f.{self::MyFuture::then}((core::int* x) → asy::Future* /* originally async */ { + asy::Future* t1 = f.{self::MyFuture::then}((core::int* x) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -72,7 +72,7 @@ static method test() → void { :is_sync = true; return :async_future; }){((core::int*) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; - asy::Future* t2 = f.{self::MyFuture::then}((core::int* x) → FutureOr* /* originally async */ { + asy::Future* t2 = f.{self::MyFuture::then}((core::int* x) → FutureOr* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.expect index dcdc4a127b9..162aadefdf0 100644 --- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.expect +++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.expect @@ -32,12 +32,12 @@ class MyFuture extends core::Object implement no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* FutureOr* onTimeout = #C1}) → asy::Future* return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable([timeLimit]), core::Map::unmodifiable({#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future*; } -static method g1(core::bool* x) → asy::Future* async { +static method g1(core::bool* x) → asy::Future* async /* futureValueType= core::int* */ { return (x ?{core::Object*} 42 : asy::Future::value(42)) as{TypeError} FutureOr*; } -static method g2(core::bool* x) → asy::Future* async +static method g2(core::bool* x) → asy::Future* async /* futureValueType= core::int* */ return (x ?{core::Object*} 42 : asy::Future::value(42)) as{TypeError} FutureOr*; -static method g3(core::bool* x) → asy::Future* async { +static method g3(core::bool* x) → asy::Future* async /* futureValueType= core::int* */ { core::Object* y = x ?{core::Object*} 42 : asy::Future::value(42); return y as{TypeError} FutureOr*; } diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.modular.expect index dcdc4a127b9..162aadefdf0 100644 --- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.modular.expect @@ -32,12 +32,12 @@ class MyFuture extends core::Object implement no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* FutureOr* onTimeout = #C1}) → asy::Future* return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable([timeLimit]), core::Map::unmodifiable({#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future*; } -static method g1(core::bool* x) → asy::Future* async { +static method g1(core::bool* x) → asy::Future* async /* futureValueType= core::int* */ { return (x ?{core::Object*} 42 : asy::Future::value(42)) as{TypeError} FutureOr*; } -static method g2(core::bool* x) → asy::Future* async +static method g2(core::bool* x) → asy::Future* async /* futureValueType= core::int* */ return (x ?{core::Object*} 42 : asy::Future::value(42)) as{TypeError} FutureOr*; -static method g3(core::bool* x) → asy::Future* async { +static method g3(core::bool* x) → asy::Future* async /* futureValueType= core::int* */ { core::Object* y = x ?{core::Object*} 42 : asy::Future::value(42); return y as{TypeError} FutureOr*; } diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.transformed.expect index ea1b07feef9..e561f296c2f 100644 --- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.transformed.expect @@ -32,7 +32,7 @@ class MyFuture extends core::Object implement no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* FutureOr* onTimeout = #C1}) → asy::Future* return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable(core::_GrowableList::_literal1(timeLimit)), core::Map::unmodifiable({#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future*; } -static method g1(core::bool* x) → asy::Future* /* originally async */ { +static method g1(core::bool* x) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; @@ -59,7 +59,7 @@ static method g1(core::bool* x) → asy::Future* /* originally async :is_sync = true; return :async_future; } -static method g2(core::bool* x) → asy::Future* /* originally async */ { +static method g2(core::bool* x) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; @@ -86,7 +86,7 @@ static method g2(core::bool* x) → asy::Future* /* originally async :is_sync = true; return :async_future; } -static method g3(core::bool* x) → asy::Future* /* originally async */ { +static method g3(core::bool* x) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.expect index 1c0791dc077..8bebe174811 100644 --- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.expect +++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.expect @@ -32,12 +32,12 @@ class MyFuture extends core::Object implement no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* FutureOr* onTimeout = #C1}) → asy::Future* return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable([timeLimit]), core::Map::unmodifiable({#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future*; } -static method g1(core::bool* x) → asy::Future* async { +static method g1(core::bool* x) → asy::Future* async /* futureValueType= core::int* */ { return (x ?{core::Object*} 42 : new self::MyFuture::value(42)) as{TypeError} FutureOr*; } -static method g2(core::bool* x) → asy::Future* async +static method g2(core::bool* x) → asy::Future* async /* futureValueType= core::int* */ return (x ?{core::Object*} 42 : new self::MyFuture::value(42)) as{TypeError} FutureOr*; -static method g3(core::bool* x) → asy::Future* async { +static method g3(core::bool* x) → asy::Future* async /* futureValueType= core::int* */ { core::Object* y = x ?{core::Object*} 42 : new self::MyFuture::value(42); return y as{TypeError} FutureOr*; } diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.modular.expect index 1c0791dc077..8bebe174811 100644 --- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.modular.expect @@ -32,12 +32,12 @@ class MyFuture extends core::Object implement no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* FutureOr* onTimeout = #C1}) → asy::Future* return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable([timeLimit]), core::Map::unmodifiable({#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future*; } -static method g1(core::bool* x) → asy::Future* async { +static method g1(core::bool* x) → asy::Future* async /* futureValueType= core::int* */ { return (x ?{core::Object*} 42 : new self::MyFuture::value(42)) as{TypeError} FutureOr*; } -static method g2(core::bool* x) → asy::Future* async +static method g2(core::bool* x) → asy::Future* async /* futureValueType= core::int* */ return (x ?{core::Object*} 42 : new self::MyFuture::value(42)) as{TypeError} FutureOr*; -static method g3(core::bool* x) → asy::Future* async { +static method g3(core::bool* x) → asy::Future* async /* futureValueType= core::int* */ { core::Object* y = x ?{core::Object*} 42 : new self::MyFuture::value(42); return y as{TypeError} FutureOr*; } diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.transformed.expect index 110e697b504..042521a4146 100644 --- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.transformed.expect @@ -32,7 +32,7 @@ class MyFuture extends core::Object implement no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* FutureOr* onTimeout = #C1}) → asy::Future* return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable(core::_GrowableList::_literal1(timeLimit)), core::Map::unmodifiable({#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future*; } -static method g1(core::bool* x) → asy::Future* /* originally async */ { +static method g1(core::bool* x) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; @@ -59,7 +59,7 @@ static method g1(core::bool* x) → asy::Future* /* originally async :is_sync = true; return :async_future; } -static method g2(core::bool* x) → asy::Future* /* originally async */ { +static method g2(core::bool* x) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; @@ -86,7 +86,7 @@ static method g2(core::bool* x) → asy::Future* /* originally async :is_sync = true; return :async_future; } -static method g3(core::bool* x) → asy::Future* /* originally async */ { +static method g3(core::bool* x) → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.expect index ccef45fe290..cc96345b2e9 100644 --- a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.expect +++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.expect @@ -44,10 +44,10 @@ static field asy::Future* t1 = self::f.{self::MyFuture::then}?)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; static field asy::Future*>* t2 = self::f.{self::MyFuture::then}*>((dynamic _) → core::List* => [3]){((dynamic) →* FutureOr*>*, {onError: core::Function*}) →* self::MyFuture*>*}; -static method g2() → asy::Future*>* async { +static method g2() → asy::Future*>* async /* futureValueType= core::List* */ { return [3]; } -static method g3() → asy::Future*>* async { +static method g3() → asy::Future*>* async /* futureValueType= core::List* */ { return asy::Future::value*>([3]); } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.modular.expect index ccef45fe290..cc96345b2e9 100644 --- a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.modular.expect @@ -44,10 +44,10 @@ static field asy::Future* t1 = self::f.{self::MyFuture::then}?)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; static field asy::Future*>* t2 = self::f.{self::MyFuture::then}*>((dynamic _) → core::List* => [3]){((dynamic) →* FutureOr*>*, {onError: core::Function*}) →* self::MyFuture*>*}; -static method g2() → asy::Future*>* async { +static method g2() → asy::Future*>* async /* futureValueType= core::List* */ { return [3]; } -static method g3() → asy::Future*>* async { +static method g3() → asy::Future*>* async /* futureValueType= core::List* */ { return asy::Future::value*>([3]); } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.transformed.expect index 8d75a91f32d..4d9373c4ad8 100644 --- a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.transformed.expect @@ -44,7 +44,7 @@ static field asy::Future* t1 = self::f.{self::MyFuture::then}?)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; static field asy::Future*>* t2 = self::f.{self::MyFuture::then}*>((dynamic _) → core::List* => core::_GrowableList::_literal1(3)){((dynamic) →* FutureOr*>*, {onError: core::Function*}) →* self::MyFuture*>*}; -static method g2() → asy::Future*>* /* originally async */ { +static method g2() → asy::Future*>* /* futureValueType= core::List* */ /* originally async */ { final asy::_Future*>* :async_future = new asy::_Future::•*>(); core::bool* :is_sync = false; core::List? :return_value; @@ -71,7 +71,7 @@ static method g2() → asy::Future*>* /* originally async :is_sync = true; return :async_future; } -static method g3() → asy::Future*>* /* originally async */ { +static method g3() → asy::Future*>* /* futureValueType= core::List* */ /* originally async */ { final asy::_Future*>* :async_future = new asy::_Future::•*>(); core::bool* :is_sync = false; FutureOr*>* :return_value; diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.expect index 09bd9c27b96..ddc2463732c 100644 --- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.expect +++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.expect @@ -35,10 +35,10 @@ class MyFuture extends core::Object implement static field self::MyFuture* f; static field asy::Future* t1 = self::f.{self::MyFuture::then}((dynamic _) → self::MyFuture* => new self::MyFuture::value("hi")){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; static field asy::Future*>* t2 = self::f.{self::MyFuture::then}*>((dynamic _) → core::List* => [3]){((dynamic) →* FutureOr*>*, {onError: core::Function*}) →* self::MyFuture*>*}; -static method g2() → asy::Future*>* async { +static method g2() → asy::Future*>* async /* futureValueType= core::List* */ { return [3]; } -static method g3() → asy::Future*>* async { +static method g3() → asy::Future*>* async /* futureValueType= core::List* */ { return new self::MyFuture::value*>([3]); } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.modular.expect index 09bd9c27b96..ddc2463732c 100644 --- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.modular.expect @@ -35,10 +35,10 @@ class MyFuture extends core::Object implement static field self::MyFuture* f; static field asy::Future* t1 = self::f.{self::MyFuture::then}((dynamic _) → self::MyFuture* => new self::MyFuture::value("hi")){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; static field asy::Future*>* t2 = self::f.{self::MyFuture::then}*>((dynamic _) → core::List* => [3]){((dynamic) →* FutureOr*>*, {onError: core::Function*}) →* self::MyFuture*>*}; -static method g2() → asy::Future*>* async { +static method g2() → asy::Future*>* async /* futureValueType= core::List* */ { return [3]; } -static method g3() → asy::Future*>* async { +static method g3() → asy::Future*>* async /* futureValueType= core::List* */ { return new self::MyFuture::value*>([3]); } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.transformed.expect index c18f5d9c59b..b24c57d87fa 100644 --- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.transformed.expect @@ -35,7 +35,7 @@ class MyFuture extends core::Object implement static field self::MyFuture* f; static field asy::Future* t1 = self::f.{self::MyFuture::then}((dynamic _) → self::MyFuture* => new self::MyFuture::value("hi")){((dynamic) →* FutureOr*, {onError: core::Function*}) →* self::MyFuture*}; static field asy::Future*>* t2 = self::f.{self::MyFuture::then}*>((dynamic _) → core::List* => core::_GrowableList::_literal1(3)){((dynamic) →* FutureOr*>*, {onError: core::Function*}) →* self::MyFuture*>*}; -static method g2() → asy::Future*>* /* originally async */ { +static method g2() → asy::Future*>* /* futureValueType= core::List* */ /* originally async */ { final asy::_Future*>* :async_future = new asy::_Future::•*>(); core::bool* :is_sync = false; core::List? :return_value; @@ -62,7 +62,7 @@ static method g2() → asy::Future*>* /* originally async :is_sync = true; return :async_future; } -static method g3() → asy::Future*>* /* originally async */ { +static method g3() → asy::Future*>* /* futureValueType= core::List* */ /* originally async */ { final asy::_Future*>* :async_future = new asy::_Future::•*>(); core::bool* :is_sync = false; FutureOr*>* :return_value; diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.expect index 36b2fa5b0b0..a49daa89df6 100644 --- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.expect +++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.expect @@ -44,10 +44,10 @@ static field asy::Future* t1 = self::f.{asy::Future::then}?)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; static field asy::Future*>* t2 = self::f.{asy::Future::then}*>((dynamic _) → core::List* => [3]){((dynamic) →* FutureOr*>*, {onError: core::Function*}) →* asy::Future*>*}; -static method g2() → asy::Future*>* async { +static method g2() → asy::Future*>* async /* futureValueType= core::List* */ { return [3]; } -static method g3() → asy::Future*>* async { +static method g3() → asy::Future*>* async /* futureValueType= core::List* */ { return asy::Future::value*>([3]); } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.modular.expect index 36b2fa5b0b0..a49daa89df6 100644 --- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.modular.expect @@ -44,10 +44,10 @@ static field asy::Future* t1 = self::f.{asy::Future::then}?)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; static field asy::Future*>* t2 = self::f.{asy::Future::then}*>((dynamic _) → core::List* => [3]){((dynamic) →* FutureOr*>*, {onError: core::Function*}) →* asy::Future*>*}; -static method g2() → asy::Future*>* async { +static method g2() → asy::Future*>* async /* futureValueType= core::List* */ { return [3]; } -static method g3() → asy::Future*>* async { +static method g3() → asy::Future*>* async /* futureValueType= core::List* */ { return asy::Future::value*>([3]); } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.transformed.expect index e17a236d9e1..feef12ce76b 100644 --- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.transformed.expect @@ -44,7 +44,7 @@ static field asy::Future* t1 = self::f.{asy::Future::then}?)){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; static field asy::Future*>* t2 = self::f.{asy::Future::then}*>((dynamic _) → core::List* => core::_GrowableList::_literal1(3)){((dynamic) →* FutureOr*>*, {onError: core::Function*}) →* asy::Future*>*}; -static method g2() → asy::Future*>* /* originally async */ { +static method g2() → asy::Future*>* /* futureValueType= core::List* */ /* originally async */ { final asy::_Future*>* :async_future = new asy::_Future::•*>(); core::bool* :is_sync = false; core::List? :return_value; @@ -71,7 +71,7 @@ static method g2() → asy::Future*>* /* originally async :is_sync = true; return :async_future; } -static method g3() → asy::Future*>* /* originally async */ { +static method g3() → asy::Future*>* /* futureValueType= core::List* */ /* originally async */ { final asy::_Future*>* :async_future = new asy::_Future::•*>(); core::bool* :is_sync = false; FutureOr*>* :return_value; diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.expect index 5ecc3e7e4d3..dcf9785f17c 100644 --- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.expect +++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.expect @@ -35,10 +35,10 @@ class MyFuture extends core::Object implement static field asy::Future* f; static field asy::Future* t1 = self::f.{asy::Future::then}((dynamic _) → self::MyFuture* => new self::MyFuture::value("hi")){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; static field asy::Future*>* t2 = self::f.{asy::Future::then}*>((dynamic _) → core::List* => [3]){((dynamic) →* FutureOr*>*, {onError: core::Function*}) →* asy::Future*>*}; -static method g2() → asy::Future*>* async { +static method g2() → asy::Future*>* async /* futureValueType= core::List* */ { return [3]; } -static method g3() → asy::Future*>* async { +static method g3() → asy::Future*>* async /* futureValueType= core::List* */ { return new self::MyFuture::value*>([3]); } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.modular.expect index 5ecc3e7e4d3..dcf9785f17c 100644 --- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.modular.expect @@ -35,10 +35,10 @@ class MyFuture extends core::Object implement static field asy::Future* f; static field asy::Future* t1 = self::f.{asy::Future::then}((dynamic _) → self::MyFuture* => new self::MyFuture::value("hi")){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; static field asy::Future*>* t2 = self::f.{asy::Future::then}*>((dynamic _) → core::List* => [3]){((dynamic) →* FutureOr*>*, {onError: core::Function*}) →* asy::Future*>*}; -static method g2() → asy::Future*>* async { +static method g2() → asy::Future*>* async /* futureValueType= core::List* */ { return [3]; } -static method g3() → asy::Future*>* async { +static method g3() → asy::Future*>* async /* futureValueType= core::List* */ { return new self::MyFuture::value*>([3]); } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.transformed.expect index 87fe01a1f13..685b7cb1b5a 100644 --- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.transformed.expect @@ -35,7 +35,7 @@ class MyFuture extends core::Object implement static field asy::Future* f; static field asy::Future* t1 = self::f.{asy::Future::then}((dynamic _) → self::MyFuture* => new self::MyFuture::value("hi")){((dynamic) →* FutureOr*, {onError: core::Function*}) →* asy::Future*}; static field asy::Future*>* t2 = self::f.{asy::Future::then}*>((dynamic _) → core::List* => core::_GrowableList::_literal1(3)){((dynamic) →* FutureOr*>*, {onError: core::Function*}) →* asy::Future*>*}; -static method g2() → asy::Future*>* /* originally async */ { +static method g2() → asy::Future*>* /* futureValueType= core::List* */ /* originally async */ { final asy::_Future*>* :async_future = new asy::_Future::•*>(); core::bool* :is_sync = false; core::List? :return_value; @@ -62,7 +62,7 @@ static method g2() → asy::Future*>* /* originally async :is_sync = true; return :async_future; } -static method g3() → asy::Future*>* /* originally async */ { +static method g3() → asy::Future*>* /* futureValueType= core::List* */ /* originally async */ { final asy::_Future*>* :async_future = new asy::_Future::•*>(); core::bool* :is_sync = false; FutureOr*>* :return_value; diff --git a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.weak.expect b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.weak.expect index 05e3e74940d..d9384577223 100644 --- a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.weak.expect +++ b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.weak.expect @@ -20,7 +20,7 @@ class A extends core::Object { abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType } -static method foo() → dynamic async { +static method foo() → dynamic async /* futureValueType= dynamic */ { asy::Future*>* f1 = null; asy::Future*>* f2 = null; core::List*>* merged = await asy::Future::wait*>(*>*>[f1, f2]); diff --git a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.weak.modular.expect index 05e3e74940d..d9384577223 100644 --- a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.weak.modular.expect @@ -20,7 +20,7 @@ class A extends core::Object { abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType } -static method foo() → dynamic async { +static method foo() → dynamic async /* futureValueType= dynamic */ { asy::Future*>* f1 = null; asy::Future*>* f2 = null; core::List*>* merged = await asy::Future::wait*>(*>*>[f1, f2]); diff --git a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.weak.transformed.expect index 719fe87e196..0664c8575b3 100644 --- a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.weak.transformed.expect @@ -21,7 +21,7 @@ class A extends core::Object { abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType } -static method foo() → dynamic /* originally async */ { +static method foo() → dynamic /* futureValueType= dynamic */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; dynamic :return_value; diff --git a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_generic_return.dart.weak.expect b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_generic_return.dart.weak.expect index 8b0d13294e5..9fb7daeffd6 100644 --- a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_generic_return.dart.weak.expect +++ b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_generic_return.dart.weak.expect @@ -7,7 +7,7 @@ import "dart:async"; static method id(self::id::T* x) → self::id::T* return x; -static method test() → dynamic async { +static method test() → dynamic async /* futureValueType= dynamic */ { asy::Future* f; core::String* s = await self::id*>(f); } diff --git a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_generic_return.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_generic_return.dart.weak.modular.expect index 8b0d13294e5..9fb7daeffd6 100644 --- a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_generic_return.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_generic_return.dart.weak.modular.expect @@ -7,7 +7,7 @@ import "dart:async"; static method id(self::id::T* x) → self::id::T* return x; -static method test() → dynamic async { +static method test() → dynamic async /* futureValueType= dynamic */ { asy::Future* f; core::String* s = await self::id*>(f); } diff --git a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_generic_return.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_generic_return.dart.weak.transformed.expect index 289f3bf778d..ee68309f6ba 100644 --- a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_generic_return.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_generic_return.dart.weak.transformed.expect @@ -8,7 +8,7 @@ import "dart:async"; static method id(self::id::T* x) → self::id::T* return x; -static method test() → dynamic /* originally async */ { +static method test() → dynamic /* futureValueType= dynamic */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; dynamic :return_value; diff --git a/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.weak.expect b/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.weak.expect index f663f659634..8c17d48cb83 100644 --- a/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.weak.expect +++ b/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.weak.expect @@ -30,7 +30,7 @@ class C extends self::A { : super self::A::•() ; } -static method main() → dynamic async { +static method main() → dynamic async /* futureValueType= dynamic */ { asy::Future* b = asy::Future::value(new self::B::•()); asy::Future* c = asy::Future::value(new self::C::•()); core::List*>* lll = *>[b, c]; diff --git a/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.weak.modular.expect b/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.weak.modular.expect index f663f659634..8c17d48cb83 100644 --- a/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.weak.modular.expect @@ -30,7 +30,7 @@ class C extends self::A { : super self::A::•() ; } -static method main() → dynamic async { +static method main() → dynamic async /* futureValueType= dynamic */ { asy::Future* b = asy::Future::value(new self::B::•()); asy::Future* c = asy::Future::value(new self::C::•()); core::List*>* lll = *>[b, c]; diff --git a/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.weak.transformed.expect index 0045a576f39..7d0a74bf129 100644 --- a/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.weak.transformed.expect @@ -31,7 +31,7 @@ class C extends self::A { : super self::A::•() ; } -static method main() → dynamic /* originally async */ { +static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; dynamic :return_value; diff --git a/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.expect b/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.expect index eb05a2084ad..9486b2b2bd6 100644 --- a/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.expect +++ b/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.expect @@ -6,12 +6,12 @@ import "dart:async" as asy; static method test() → dynamic { function f0() → core::int* return 42; - function f1() → asy::Future* async + function f1() → asy::Future* async /* futureValueType= core::int* */ return 42; function f2() → core::int* { return 42; } - function f3() → asy::Future* async { + function f3() → asy::Future* async /* futureValueType= core::int* */ { return 42; } function f4() → core::Iterable* sync* { diff --git a/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.modular.expect b/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.modular.expect index eb05a2084ad..9486b2b2bd6 100644 --- a/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.modular.expect @@ -6,12 +6,12 @@ import "dart:async" as asy; static method test() → dynamic { function f0() → core::int* return 42; - function f1() → asy::Future* async + function f1() → asy::Future* async /* futureValueType= core::int* */ return 42; function f2() → core::int* { return 42; } - function f3() → asy::Future* async { + function f3() → asy::Future* async /* futureValueType= core::int* */ { return 42; } function f4() → core::Iterable* sync* { diff --git a/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.transformed.expect index afb8f443fbc..f5a8bb34b78 100644 --- a/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.transformed.expect @@ -6,7 +6,7 @@ import "dart:async" as asy; static method test() → dynamic { function f0() → core::int* return 42; - function f1() → asy::Future* /* originally async */ { + function f1() → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; @@ -36,7 +36,7 @@ static method test() → dynamic { function f2() → core::int* { return 42; } - function f3() → asy::Future* /* originally async */ { + function f3() → asy::Future* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; core::int? :return_value; diff --git a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.weak.expect b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.weak.expect index c16146f0afb..0acd6fd4bd9 100644 --- a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.weak.expect +++ b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.weak.expect @@ -54,7 +54,7 @@ class Bar*> extends core::Object { synthetic constructor •() → self::Bar* : super core::Object::•() ; - method foo(covariant-by-class self::Bar::T* t) → dynamic async { + method foo(covariant-by-class self::Bar::T* t) → dynamic async /* futureValueType= dynamic */ { await for (core::String* i in t) { core::int* x = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:17:44: Error: A value of type 'String' can't be assigned to a variable of type 'int'. int x = /*error:INVALID_ASSIGNMENT*/ i; @@ -76,7 +76,7 @@ class Baz* : super core::Object::•() ; - method foo(covariant-by-class self::Baz::S* t) → dynamic async { + method foo(covariant-by-class self::Baz::S* t) → dynamic async /* futureValueType= dynamic */ { await for (self::Baz::T* i in t) { core::int* x = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:25:44: Error: A value of type 'T' can't be assigned to a variable of type 'int'. int x = /*error:INVALID_ASSIGNMENT*/ i; @@ -146,7 +146,7 @@ abstract class MyStream extends asy::Stream core::Object::runtimeType abstract member-signature method listen((self::MyStream::T*) →* void onData, {core::Function* onError = #C1, () →* void onDone = #C1, core::bool* cancelOnError = #C1}) → asy::StreamSubscription*; -> asy::Stream::listen } -static method test() → dynamic async { +static method test() → dynamic async /* futureValueType= dynamic */ { self::MyStream* myStream = self::MyStream::•(); await for (self::Foo* x in myStream) { core::String* y = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:38:45: Error: A value of type 'Foo' can't be assigned to a variable of type 'String'. diff --git a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.weak.modular.expect b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.weak.modular.expect index c16146f0afb..0acd6fd4bd9 100644 --- a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.weak.modular.expect @@ -54,7 +54,7 @@ class Bar*> extends core::Object { synthetic constructor •() → self::Bar* : super core::Object::•() ; - method foo(covariant-by-class self::Bar::T* t) → dynamic async { + method foo(covariant-by-class self::Bar::T* t) → dynamic async /* futureValueType= dynamic */ { await for (core::String* i in t) { core::int* x = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:17:44: Error: A value of type 'String' can't be assigned to a variable of type 'int'. int x = /*error:INVALID_ASSIGNMENT*/ i; @@ -76,7 +76,7 @@ class Baz* : super core::Object::•() ; - method foo(covariant-by-class self::Baz::S* t) → dynamic async { + method foo(covariant-by-class self::Baz::S* t) → dynamic async /* futureValueType= dynamic */ { await for (self::Baz::T* i in t) { core::int* x = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:25:44: Error: A value of type 'T' can't be assigned to a variable of type 'int'. int x = /*error:INVALID_ASSIGNMENT*/ i; @@ -146,7 +146,7 @@ abstract class MyStream extends asy::Stream core::Object::runtimeType abstract member-signature method listen((self::MyStream::T*) →* void onData, {core::Function* onError = #C1, () →* void onDone = #C1, core::bool* cancelOnError = #C1}) → asy::StreamSubscription*; -> asy::Stream::listen } -static method test() → dynamic async { +static method test() → dynamic async /* futureValueType= dynamic */ { self::MyStream* myStream = self::MyStream::•(); await for (self::Foo* x in myStream) { core::String* y = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:38:45: Error: A value of type 'Foo' can't be assigned to a variable of type 'String'. diff --git a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.weak.transformed.expect index f060c757bc9..170116d0dda 100644 --- a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.weak.transformed.expect @@ -55,7 +55,7 @@ class Bar*> extends core::Object { synthetic constructor •() → self::Bar* : super core::Object::•() ; - method foo(covariant-by-class self::Bar::T* t) → dynamic /* originally async */ { + method foo(covariant-by-class self::Bar::T* t) → dynamic /* futureValueType= dynamic */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; dynamic :return_value; @@ -124,7 +124,7 @@ class Baz* : super core::Object::•() ; - method foo(covariant-by-class self::Baz::S* t) → dynamic /* originally async */ { + method foo(covariant-by-class self::Baz::S* t) → dynamic /* futureValueType= dynamic */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; dynamic :return_value; @@ -241,7 +241,7 @@ abstract class MyStream extends asy::Stream core::Object::runtimeType abstract member-signature method listen((self::MyStream::T*) →* void onData, {core::Function* onError = #C1, () →* void onDone = #C1, core::bool* cancelOnError = #C1}) → asy::StreamSubscription*; -> asy::Stream::listen } -static method test() → dynamic /* originally async */ { +static method test() → dynamic /* futureValueType= dynamic */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; dynamic :return_value; diff --git a/pkg/front_end/testcases/inference/local_return_and_yield.dart.weak.expect b/pkg/front_end/testcases/inference/local_return_and_yield.dart.weak.expect index 421e71c56d6..67f213e8331 100644 --- a/pkg/front_end/testcases/inference/local_return_and_yield.dart.weak.expect +++ b/pkg/front_end/testcases/inference/local_return_and_yield.dart.weak.expect @@ -18,7 +18,7 @@ static method main() → dynamic { function a() → (core::int*) →* core::int* { return (core::int* x) → core::int* => x; } - function b() → asy::Future<(core::int*) →* core::int*>* async { + function b() → asy::Future<(core::int*) →* core::int*>* async /* futureValueType= (core::int*) →* core::int* */ { return invalid-expression "pkg/front_end/testcases/inference/local_return_and_yield.dart:19:38: Error: A value of type 'Future' can't be assigned to a variable of type 'FutureOr'. - 'Future' is from 'dart:async'. return /*@ returnType=dynamic */ (/*@ type=dynamic */ x) => x; diff --git a/pkg/front_end/testcases/inference/local_return_and_yield.dart.weak.modular.expect b/pkg/front_end/testcases/inference/local_return_and_yield.dart.weak.modular.expect index 421e71c56d6..67f213e8331 100644 --- a/pkg/front_end/testcases/inference/local_return_and_yield.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/local_return_and_yield.dart.weak.modular.expect @@ -18,7 +18,7 @@ static method main() → dynamic { function a() → (core::int*) →* core::int* { return (core::int* x) → core::int* => x; } - function b() → asy::Future<(core::int*) →* core::int*>* async { + function b() → asy::Future<(core::int*) →* core::int*>* async /* futureValueType= (core::int*) →* core::int* */ { return invalid-expression "pkg/front_end/testcases/inference/local_return_and_yield.dart:19:38: Error: A value of type 'Future' can't be assigned to a variable of type 'FutureOr'. - 'Future' is from 'dart:async'. return /*@ returnType=dynamic */ (/*@ type=dynamic */ x) => x; diff --git a/pkg/front_end/testcases/inference/local_return_and_yield.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/local_return_and_yield.dart.weak.transformed.expect index 285cb478eef..fbcd7197719 100644 --- a/pkg/front_end/testcases/inference/local_return_and_yield.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/local_return_and_yield.dart.weak.transformed.expect @@ -18,7 +18,7 @@ static method main() → dynamic { function a() → (core::int*) →* core::int* { return (core::int* x) → core::int* => x; } - function b() → asy::Future<(core::int*) →* core::int*>* /* originally async */ { + function b() → asy::Future<(core::int*) →* core::int*>* /* futureValueType= (core::int*) →* core::int* */ /* originally async */ { final asy::_Future<(core::int*) →* core::int*>* :async_future = new asy::_Future::•<(core::int*) →* core::int*>(); core::bool* :is_sync = false; FutureOr<(core::int*) →* core::int*>* :return_value; diff --git a/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.weak.expect b/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.weak.expect index 3ca6230c0a9..f7164a594cf 100644 --- a/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.weak.expect +++ b/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.weak.expect @@ -17,7 +17,7 @@ typedef IntToInt = (core::int*) →* core::int*; static method a() → (core::int*) →* core::int* { return (core::int* x) → core::int* => x; } -static method b() → asy::Future<(core::int*) →* core::int*>* async { +static method b() → asy::Future<(core::int*) →* core::int*>* async /* futureValueType= (core::int*) →* core::int* */ { return invalid-expression "pkg/front_end/testcases/inference/top_level_return_and_yield.dart:18:36: Error: A value of type 'Future' can't be assigned to a variable of type 'FutureOr'. - 'Future' is from 'dart:async'. return /*@ returnType=dynamic */ (/*@ type=dynamic */ x) => x; diff --git a/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.weak.modular.expect b/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.weak.modular.expect index 3ca6230c0a9..f7164a594cf 100644 --- a/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.weak.modular.expect @@ -17,7 +17,7 @@ typedef IntToInt = (core::int*) →* core::int*; static method a() → (core::int*) →* core::int* { return (core::int* x) → core::int* => x; } -static method b() → asy::Future<(core::int*) →* core::int*>* async { +static method b() → asy::Future<(core::int*) →* core::int*>* async /* futureValueType= (core::int*) →* core::int* */ { return invalid-expression "pkg/front_end/testcases/inference/top_level_return_and_yield.dart:18:36: Error: A value of type 'Future' can't be assigned to a variable of type 'FutureOr'. - 'Future' is from 'dart:async'. return /*@ returnType=dynamic */ (/*@ type=dynamic */ x) => x; diff --git a/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.weak.transformed.expect index d7f66be1a0c..84ea22ce4eb 100644 --- a/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.weak.transformed.expect @@ -17,7 +17,7 @@ typedef IntToInt = (core::int*) →* core::int*; static method a() → (core::int*) →* core::int* { return (core::int* x) → core::int* => x; } -static method b() → asy::Future<(core::int*) →* core::int*>* /* originally async */ { +static method b() → asy::Future<(core::int*) →* core::int*>* /* futureValueType= (core::int*) →* core::int* */ /* originally async */ { final asy::_Future<(core::int*) →* core::int*>* :async_future = new asy::_Future::•<(core::int*) →* core::int*>(); core::bool* :is_sync = false; FutureOr<(core::int*) →* core::int*>* :return_value; diff --git a/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.weak.expect b/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.weak.expect index 727e04aef80..63943b61c0b 100644 --- a/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.weak.expect +++ b/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.weak.expect @@ -26,7 +26,7 @@ import self as self; import "dart:core" as core; import "dart:async" as asy; -static method test() → dynamic async { +static method test() → dynamic async /* futureValueType= dynamic */ { core::String* s; for (final dynamic #t1 in invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:10:17: Error: The type 'String' used in the 'for' loop must implement 'Iterable'. - 'Iterable' is from 'dart:core'. diff --git a/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.weak.modular.expect b/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.weak.modular.expect index 727e04aef80..63943b61c0b 100644 --- a/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.weak.modular.expect @@ -26,7 +26,7 @@ import self as self; import "dart:core" as core; import "dart:async" as asy; -static method test() → dynamic async { +static method test() → dynamic async /* futureValueType= dynamic */ { core::String* s; for (final dynamic #t1 in invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:10:17: Error: The type 'String' used in the 'for' loop must implement 'Iterable'. - 'Iterable' is from 'dart:core'. diff --git a/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.weak.transformed.expect index 2eaaf2a6f22..71aadc6e550 100644 --- a/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.weak.transformed.expect @@ -27,7 +27,7 @@ import "dart:async" as asy; import "dart:core" as core; import "dart:_internal" as _in; -static method test() → dynamic /* originally async */ { +static method test() → dynamic /* futureValueType= dynamic */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; dynamic :return_value; diff --git a/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.weak.expect b/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.weak.expect index e1955070e03..5c4c5e01d46 100644 --- a/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.weak.expect +++ b/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.weak.expect @@ -42,7 +42,7 @@ class B extends self::A { } static method f() → self::f::T* return null; -static method test() → dynamic async { +static method test() → dynamic async /* futureValueType= dynamic */ { core::Iterable* iterable; asy::Stream* stream; self::A* a; diff --git a/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.weak.modular.expect b/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.weak.modular.expect index e1955070e03..5c4c5e01d46 100644 --- a/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.weak.modular.expect @@ -42,7 +42,7 @@ class B extends self::A { } static method f() → self::f::T* return null; -static method test() → dynamic async { +static method test() → dynamic async /* futureValueType= dynamic */ { core::Iterable* iterable; asy::Stream* stream; self::A* a; diff --git a/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.weak.transformed.expect index 703f7d82016..c30707ea2c9 100644 --- a/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.weak.transformed.expect @@ -43,7 +43,7 @@ class B extends self::A { } static method f() → self::f::T* return null; -static method test() → dynamic /* originally async */ { +static method test() → dynamic /* futureValueType= dynamic */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; dynamic :return_value; diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41602.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/issue41602.dart.weak.expect index fd8e4a37be7..6608d90deb1 100644 --- a/pkg/front_end/testcases/nnbd_mixed/issue41602.dart.weak.expect +++ b/pkg/front_end/testcases/nnbd_mixed/issue41602.dart.weak.expect @@ -2,10 +2,10 @@ library; import self as self; import "dart:async" as asy; -static method returnFutureOfVoid() → asy::Future* async {} +static method returnFutureOfVoid() → asy::Future* async /* futureValueType= void */ {} static method returnVoid() → void {} -static method returnVoidAsync() → void async {} -static method main() → dynamic async { +static method returnVoidAsync() → void async /* futureValueType= void */ {} +static method main() → dynamic async /* futureValueType= dynamic */ { await self::returnVoid(); await self::returnFutureOfVoid(); await self::returnVoidAsync(); diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41602.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd_mixed/issue41602.dart.weak.modular.expect index fd8e4a37be7..6608d90deb1 100644 --- a/pkg/front_end/testcases/nnbd_mixed/issue41602.dart.weak.modular.expect +++ b/pkg/front_end/testcases/nnbd_mixed/issue41602.dart.weak.modular.expect @@ -2,10 +2,10 @@ library; import self as self; import "dart:async" as asy; -static method returnFutureOfVoid() → asy::Future* async {} +static method returnFutureOfVoid() → asy::Future* async /* futureValueType= void */ {} static method returnVoid() → void {} -static method returnVoidAsync() → void async {} -static method main() → dynamic async { +static method returnVoidAsync() → void async /* futureValueType= void */ {} +static method main() → dynamic async /* futureValueType= dynamic */ { await self::returnVoid(); await self::returnFutureOfVoid(); await self::returnVoidAsync(); diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41602.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/issue41602.dart.weak.transformed.expect index 19c9552f541..5dcce49057f 100644 --- a/pkg/front_end/testcases/nnbd_mixed/issue41602.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd_mixed/issue41602.dart.weak.transformed.expect @@ -4,7 +4,7 @@ import "dart:async" as asy; import "dart:core" as core; import "dart:_internal" as _in; -static method returnFutureOfVoid() → asy::Future* /* originally async */ { +static method returnFutureOfVoid() → asy::Future* /* futureValueType= void */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; void :return_value; @@ -29,7 +29,7 @@ static method returnFutureOfVoid() → asy::Future* /* originally async */ return :async_future; } static method returnVoid() → void {} -static method returnVoidAsync() → void /* originally async */ { +static method returnVoidAsync() → void /* futureValueType= void */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; dynamic :return_value; @@ -53,7 +53,7 @@ static method returnVoidAsync() → void /* originally async */ { :is_sync = true; return :async_future; } -static method main() → dynamic /* originally async */ { +static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; dynamic :return_value; diff --git a/pkg/front_end/testcases/nnbd_mixed/typedef_from_opt_in.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/typedef_from_opt_in.dart.weak.expect index bebc2213165..f52e2c90237 100644 --- a/pkg/front_end/testcases/nnbd_mixed/typedef_from_opt_in.dart.weak.expect +++ b/pkg/front_end/testcases/nnbd_mixed/typedef_from_opt_in.dart.weak.expect @@ -7,7 +7,7 @@ import "dart:core" as core; import "org-dartlang-testcase:///typedef_from_opt_in_lib.dart"; static method method1() → (typ::Request*) →* FutureOr* - return (typ::Request* r) → asy::Future* async => new typ::Response::•(); + return (typ::Request* r) → asy::Future* async /* futureValueType= typ::Response* */ => new typ::Response::•(); static method method2() → (core::int*) →* core::int* return (core::int* r) → core::int* => 0; static method main() → dynamic {} diff --git a/pkg/front_end/testcases/nnbd_mixed/typedef_from_opt_in.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd_mixed/typedef_from_opt_in.dart.weak.modular.expect index bebc2213165..f52e2c90237 100644 --- a/pkg/front_end/testcases/nnbd_mixed/typedef_from_opt_in.dart.weak.modular.expect +++ b/pkg/front_end/testcases/nnbd_mixed/typedef_from_opt_in.dart.weak.modular.expect @@ -7,7 +7,7 @@ import "dart:core" as core; import "org-dartlang-testcase:///typedef_from_opt_in_lib.dart"; static method method1() → (typ::Request*) →* FutureOr* - return (typ::Request* r) → asy::Future* async => new typ::Response::•(); + return (typ::Request* r) → asy::Future* async /* futureValueType= typ::Response* */ => new typ::Response::•(); static method method2() → (core::int*) →* core::int* return (core::int* r) → core::int* => 0; static method main() → dynamic {} diff --git a/pkg/front_end/testcases/nnbd_mixed/typedef_from_opt_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/typedef_from_opt_in.dart.weak.transformed.expect index 055f5afa4c7..05711ed2163 100644 --- a/pkg/front_end/testcases/nnbd_mixed/typedef_from_opt_in.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd_mixed/typedef_from_opt_in.dart.weak.transformed.expect @@ -7,7 +7,7 @@ import "dart:core" as core; import "org-dartlang-testcase:///typedef_from_opt_in_lib.dart"; static method method1() → (typ::Request*) →* FutureOr* - return (typ::Request* r) → asy::Future* /* originally async */ { + return (typ::Request* r) → asy::Future* /* futureValueType= typ::Response* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; typ::Response? :return_value; diff --git a/pkg/front_end/testcases/regress/issue_34850.dart.weak.expect b/pkg/front_end/testcases/regress/issue_34850.dart.weak.expect index ad3a1ce33e6..9e292667814 100644 --- a/pkg/front_end/testcases/regress/issue_34850.dart.weak.expect +++ b/pkg/front_end/testcases/regress/issue_34850.dart.weak.expect @@ -57,12 +57,12 @@ static method f1() → invalid-type { return null; } static method Future() → invalid-type {} -static method f2() → dynamic async +static method f2() → dynamic async /* futureValueType= dynamic */ return null; -static method f3() → invalid-type async { +static method f3() → invalid-type async /* futureValueType= invalid-type */ { return null; } -static method main() → dynamic async { +static method main() → dynamic async /* futureValueType= dynamic */ { core::print(self::f1()); core::print(await self::f2()); core::print(await self::f3()); diff --git a/pkg/front_end/testcases/regress/issue_34850.dart.weak.modular.expect b/pkg/front_end/testcases/regress/issue_34850.dart.weak.modular.expect index ad3a1ce33e6..9e292667814 100644 --- a/pkg/front_end/testcases/regress/issue_34850.dart.weak.modular.expect +++ b/pkg/front_end/testcases/regress/issue_34850.dart.weak.modular.expect @@ -57,12 +57,12 @@ static method f1() → invalid-type { return null; } static method Future() → invalid-type {} -static method f2() → dynamic async +static method f2() → dynamic async /* futureValueType= dynamic */ return null; -static method f3() → invalid-type async { +static method f3() → invalid-type async /* futureValueType= invalid-type */ { return null; } -static method main() → dynamic async { +static method main() → dynamic async /* futureValueType= dynamic */ { core::print(self::f1()); core::print(await self::f2()); core::print(await self::f3()); diff --git a/pkg/front_end/testcases/regress/issue_34850.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_34850.dart.weak.transformed.expect index 44637256e5e..6ded2e652d3 100644 --- a/pkg/front_end/testcases/regress/issue_34850.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/regress/issue_34850.dart.weak.transformed.expect @@ -59,7 +59,7 @@ static method f1() → invalid-type { return null; } static method Future() → invalid-type {} -static method f2() → dynamic /* originally async */ { +static method f2() → dynamic /* futureValueType= dynamic */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; @@ -86,7 +86,7 @@ static method f2() → dynamic /* originally async */ { :is_sync = true; return :async_future; } -static method f3() → invalid-type /* originally async */ { +static method f3() → invalid-type /* futureValueType= invalid-type */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; FutureOr* :return_value; @@ -113,7 +113,7 @@ static method f3() → invalid-type /* originally async */ { :is_sync = true; return :async_future; } -static method main() → dynamic /* originally async */ { +static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; dynamic :return_value; diff --git a/pkg/front_end/testcases/regress/issue_37681.dart.weak.expect b/pkg/front_end/testcases/regress/issue_37681.dart.weak.expect index c92257e0eda..668dece7f77 100644 --- a/pkg/front_end/testcases/regress/issue_37681.dart.weak.expect +++ b/pkg/front_end/testcases/regress/issue_37681.dart.weak.expect @@ -18,8 +18,8 @@ import self as self; import "dart:core" as core; import "dart:async" as asy; -static method main() → dynamic async { - function f_async() → core::int* async { +static method main() → dynamic async /* futureValueType= dynamic */ { + function f_async() → core::int* async /* futureValueType= core::int* */ { return 42; } core::print(await f_async(){() →* core::int*}); diff --git a/pkg/front_end/testcases/regress/issue_37681.dart.weak.modular.expect b/pkg/front_end/testcases/regress/issue_37681.dart.weak.modular.expect index c92257e0eda..668dece7f77 100644 --- a/pkg/front_end/testcases/regress/issue_37681.dart.weak.modular.expect +++ b/pkg/front_end/testcases/regress/issue_37681.dart.weak.modular.expect @@ -18,8 +18,8 @@ import self as self; import "dart:core" as core; import "dart:async" as asy; -static method main() → dynamic async { - function f_async() → core::int* async { +static method main() → dynamic async /* futureValueType= dynamic */ { + function f_async() → core::int* async /* futureValueType= core::int* */ { return 42; } core::print(await f_async(){() →* core::int*}); diff --git a/pkg/front_end/testcases/regress/issue_37681.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_37681.dart.weak.transformed.expect index 2048398dd41..9edac464674 100644 --- a/pkg/front_end/testcases/regress/issue_37681.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/regress/issue_37681.dart.weak.transformed.expect @@ -19,7 +19,7 @@ import "dart:async" as asy; import "dart:core" as core; import "dart:_internal" as _in; -static method main() → dynamic /* originally async */ { +static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; dynamic :return_value; @@ -35,7 +35,7 @@ static method main() → dynamic /* originally async */ { try { #L1: { - function f_async() → core::int* /* originally async */ { + function f_async() → core::int* /* futureValueType= core::int* */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; dynamic :return_value; diff --git a/pkg/front_end/testcases/set_literals/disambiguation_rule.dart.weak.expect b/pkg/front_end/testcases/set_literals/disambiguation_rule.dart.weak.expect index d565d03c832..358bace7ba8 100644 --- a/pkg/front_end/testcases/set_literals/disambiguation_rule.dart.weak.expect +++ b/pkg/front_end/testcases/set_literals/disambiguation_rule.dart.weak.expect @@ -52,7 +52,7 @@ import "dart:async" as asy; import "dart:async" show FutureOr; import "dart:collection" show LinkedHashMap, LinkedHashSet; -static method main() → dynamic async { +static method main() → dynamic async /* futureValueType= dynamic */ { core::Map* m = {}; core::Set* s = block { final core::Set* #t1 = col::LinkedHashSet::•(); @@ -85,17 +85,17 @@ Change the type of the map literal or the context in which it is used. col::LinkedHashSet* flhs2 = await self::lhsfun2(); col::LinkedHashMap* flhm2 = await self::lhmfun2(); } -static method mapfun() → asy::Future*>* async +static method mapfun() → asy::Future*>* async /* futureValueType= core::Map* */ return {}; -static method setfun() → asy::Future*>* async +static method setfun() → asy::Future*>* async /* futureValueType= core::Set* */ return block { final core::Set* #t4 = col::LinkedHashSet::•(); } =>#t4; -static method iterablefun() → asy::Future*>* async +static method iterablefun() → asy::Future*>* async /* futureValueType= core::Iterable* */ return block { final core::Set* #t5 = col::LinkedHashSet::•(); } =>#t5; -static method lhsfun() → asy::Future*>* async +static method lhsfun() → asy::Future*>* async /* futureValueType= col::LinkedHashSet* */ return invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule.dart:32:46: Error: The set literal type 'Future>' isn't of expected type 'Future>'. - 'Future' is from 'dart:async'. - 'Set' is from 'dart:core'. @@ -105,7 +105,7 @@ Future> lhsfun() async => {}; ^" in block { final core::Set* #t6 = col::LinkedHashSet::•(); } =>#t6; -static method lhmfun() → asy::Future*>* async +static method lhmfun() → asy::Future*>* async /* futureValueType= col::LinkedHashMap* */ return invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule.dart:33:52: Error: The map literal type 'Future>' isn't of expected type 'Future>'. - 'Future' is from 'dart:async'. - 'Map' is from 'dart:core'. diff --git a/pkg/front_end/testcases/set_literals/disambiguation_rule.dart.weak.modular.expect b/pkg/front_end/testcases/set_literals/disambiguation_rule.dart.weak.modular.expect index d565d03c832..358bace7ba8 100644 --- a/pkg/front_end/testcases/set_literals/disambiguation_rule.dart.weak.modular.expect +++ b/pkg/front_end/testcases/set_literals/disambiguation_rule.dart.weak.modular.expect @@ -52,7 +52,7 @@ import "dart:async" as asy; import "dart:async" show FutureOr; import "dart:collection" show LinkedHashMap, LinkedHashSet; -static method main() → dynamic async { +static method main() → dynamic async /* futureValueType= dynamic */ { core::Map* m = {}; core::Set* s = block { final core::Set* #t1 = col::LinkedHashSet::•(); @@ -85,17 +85,17 @@ Change the type of the map literal or the context in which it is used. col::LinkedHashSet* flhs2 = await self::lhsfun2(); col::LinkedHashMap* flhm2 = await self::lhmfun2(); } -static method mapfun() → asy::Future*>* async +static method mapfun() → asy::Future*>* async /* futureValueType= core::Map* */ return {}; -static method setfun() → asy::Future*>* async +static method setfun() → asy::Future*>* async /* futureValueType= core::Set* */ return block { final core::Set* #t4 = col::LinkedHashSet::•(); } =>#t4; -static method iterablefun() → asy::Future*>* async +static method iterablefun() → asy::Future*>* async /* futureValueType= core::Iterable* */ return block { final core::Set* #t5 = col::LinkedHashSet::•(); } =>#t5; -static method lhsfun() → asy::Future*>* async +static method lhsfun() → asy::Future*>* async /* futureValueType= col::LinkedHashSet* */ return invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule.dart:32:46: Error: The set literal type 'Future>' isn't of expected type 'Future>'. - 'Future' is from 'dart:async'. - 'Set' is from 'dart:core'. @@ -105,7 +105,7 @@ Future> lhsfun() async => {}; ^" in block { final core::Set* #t6 = col::LinkedHashSet::•(); } =>#t6; -static method lhmfun() → asy::Future*>* async +static method lhmfun() → asy::Future*>* async /* futureValueType= col::LinkedHashMap* */ return invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule.dart:33:52: Error: The map literal type 'Future>' isn't of expected type 'Future>'. - 'Future' is from 'dart:async'. - 'Map' is from 'dart:core'. diff --git a/pkg/front_end/testcases/set_literals/disambiguation_rule.dart.weak.transformed.expect b/pkg/front_end/testcases/set_literals/disambiguation_rule.dart.weak.transformed.expect index 15787235cf4..b7585e061fe 100644 --- a/pkg/front_end/testcases/set_literals/disambiguation_rule.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/set_literals/disambiguation_rule.dart.weak.transformed.expect @@ -53,7 +53,7 @@ import "dart:_internal" as _in; import "dart:async" show FutureOr; import "dart:collection" show LinkedHashMap, LinkedHashSet; -static method main() → dynamic /* originally async */ { +static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ { final asy::_Future* :async_future = new asy::_Future::•(); core::bool* :is_sync = false; dynamic :return_value; @@ -120,7 +120,7 @@ Change the type of the map literal or the context in which it is used. :is_sync = true; return :async_future; } -static method mapfun() → asy::Future*>* /* originally async */ { +static method mapfun() → asy::Future*>* /* futureValueType= core::Map* */ /* originally async */ { final asy::_Future*>* :async_future = new asy::_Future::•*>(); core::bool* :is_sync = false; core::Map? :return_value; @@ -147,7 +147,7 @@ static method mapfun() → asy::Future*>* /* :is_sync = true; return :async_future; } -static method setfun() → asy::Future*>* /* originally async */ { +static method setfun() → asy::Future*>* /* futureValueType= core::Set* */ /* originally async */ { final asy::_Future*>* :async_future = new asy::_Future::•*>(); core::bool* :is_sync = false; core::Set? :return_value; @@ -176,7 +176,7 @@ static method setfun() → asy::Future*>* /* originally as :is_sync = true; return :async_future; } -static method iterablefun() → asy::Future*>* /* originally async */ { +static method iterablefun() → asy::Future*>* /* futureValueType= core::Iterable* */ /* originally async */ { final asy::_Future*>* :async_future = new asy::_Future::•*>(); core::bool* :is_sync = false; core::Iterable? :return_value; @@ -205,7 +205,7 @@ static method iterablefun() → asy::Future*>* /* ori :is_sync = true; return :async_future; } -static method lhsfun() → asy::Future*>* /* originally async */ { +static method lhsfun() → asy::Future*>* /* futureValueType= col::LinkedHashSet* */ /* originally async */ { final asy::_Future*>* :async_future = new asy::_Future::•*>(); core::bool* :is_sync = false; FutureOr*>* :return_value; @@ -240,7 +240,7 @@ Future> lhsfun() async => {}; :is_sync = true; return :async_future; } -static method lhmfun() → asy::Future*>* /* originally async */ { +static method lhmfun() → asy::Future*>* /* futureValueType= col::LinkedHashMap* */ /* originally async */ { final asy::_Future*>* :async_future = new asy::_Future::•*>(); core::bool* :is_sync = false; FutureOr*>* :return_value; diff --git a/pkg/kernel/lib/ast.dart b/pkg/kernel/lib/ast.dart index cbf0d440532..28d8c84db49 100644 --- a/pkg/kernel/lib/ast.dart +++ b/pkg/kernel/lib/ast.dart @@ -3673,6 +3673,10 @@ class FunctionNode extends TreeNode { /// here the return types are `Future` and `FutureOr` for `method1` /// and `method2`, respectively, but the future value type is in both cases /// `Foo`. + /// + /// For pre-nnbd libraries, this is set to `flatten(T)` of the return type + /// `T`, which can be seen as the pre-nnbd equivalent of the future value + /// type. DartType? futureValueType; void Function()? lazyBuilder; diff --git a/pkg/kernel/lib/verifier.dart b/pkg/kernel/lib/verifier.dart index 051bc3adaf1..858e978aa3c 100644 --- a/pkg/kernel/lib/verifier.dart +++ b/pkg/kernel/lib/verifier.dart @@ -440,7 +440,6 @@ class VerifyingVisitor extends RecursiveResultVisitor { AsyncMarker savedAsyncMarker = currentAsyncMarker; currentAsyncMarker = node.asyncMarker; if (!isOutline && - currentMember!.isNonNullableByDefault && node.asyncMarker == AsyncMarker.Async && node.futureValueType == null) { problem(node,