[cfe] Refactor FunctionNode.futureValueType into emitted value type

Previously we would encode the type of the value returned in `async`
functions as the field `futureValueType` on `FunctionNode`. For all
other kinds of functions, such as `sync`, `sync*`, and `async*`, that
field would be null. This CL renames `futureValueType` into
`emittedVAlueType`, and for functions of kinds `async`, `sync*`, and
`async*` that is expected to be the type of values emitted via
`return` or `yield` statements. For `sync` functions that field is
supposed to contain `null`.

In response to https://github.com/dart-lang/sdk/issues/54159

TEST=existing

Change-Id: I1efdbcc4e75d150f5618c7ca50cfe49a0e54fce6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/341662
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Ömer Ağacan <omersa@google.com>
Commit-Queue: Chloe Stefantsova <cstefantsova@google.com>
Reviewed-by: Mayank Patke <fishythefish@google.com>
This commit is contained in:
Chloe Stefantsova 2023-12-19 08:44:43 +00:00 committed by Commit Queue
parent 8d8c4c6125
commit 3eeba4a4e2
755 changed files with 2289 additions and 2266 deletions

View file

@ -202,7 +202,7 @@ class ImpactBuilder extends StaticTypeVisitor implements ImpactRegistry {
break;
case ir.AsyncMarker.Async:
registerAsync(function.futureValueType!);
registerAsync(function.emittedValueType!);
break;
case ir.AsyncMarker.AsyncStar:

View file

@ -2254,7 +2254,7 @@ class JsElementEnvironment extends ElementEnvironment
return _getSyncStarElementType(returnType);
case AsyncMarker.ASYNC:
return elementMap.getDartType(
getFunctionNode(elementMap, function)!.futureValueType!);
getFunctionNode(elementMap, function)!.emittedValueType!);
case AsyncMarker.ASYNC_STAR:
return _getAsyncStarElementType(returnType);
}

View file

@ -36,7 +36,7 @@ class AsyncLowering {
bool _shouldTryAsyncLowering(FunctionNode node) =>
node.asyncMarker == AsyncMarker.Async &&
node.futureValueType != null &&
node.emittedValueType != null &&
_functions.last.shouldLower;
void enterFunction(FunctionNode node) {
@ -54,7 +54,7 @@ class AsyncLowering {
void _wrapBodySync(FunctionNode node) {
node.asyncMarker = AsyncMarker.Sync;
final futureValueType = node.futureValueType!;
final futureValueType = node.emittedValueType!;
_updateFunctionBody(
node,
ReturnStatement(StaticInvocation(
@ -69,7 +69,7 @@ class AsyncLowering {
}
void _wrapReturns(_FunctionData functionData, FunctionNode node) {
final futureValueType = node.futureValueType!;
final futureValueType = node.emittedValueType!;
for (final returnStatement in functionData.returnStatements) {
final expression = returnStatement.expression;
// Ensure the returned future has a runtime type (T) matching the

View file

@ -464,7 +464,7 @@ class _WasmTransformer extends Transformer {
_addCompleterToController(controller, completer, fileOffset)),
tryFinally,
]),
futureValueType: const VoidType(),
emittedValueType: const VoidType(),
returnType: InterfaceType(
coreTypes.futureClass, Nullability.nonNullable, [const VoidType()]),
asyncMarker: AsyncMarker.Async,
@ -544,7 +544,7 @@ class _WasmTransformer extends Transformer {
coreTypes.objectNullableRawType, Nullability.nonNullable),
asyncMarker: AsyncMarker.Async,
dartAsyncMarker: AsyncMarker.Async,
futureValueType: coreTypes.objectNullableRawType,
emittedValueType: coreTypes.objectNullableRawType,
));
// Call `asyncMap`.

View file

@ -4192,7 +4192,7 @@ class ProgramCompiler extends ComputeOnceConstantVisitor<js_ast.Expression>
// In the body of an `async`, `await` is generated simply as `yield`.
var gen = emitGeneratorFn((_) => []);
var returnType = _currentLibrary!.isNonNullableByDefault
? function.futureValueType!
? function.emittedValueType!
// Otherwise flatten the return type because futureValueType(T) is not
// defined for legacy libraries.
: _types.flatten(function

View file

@ -1305,11 +1305,9 @@ class BodyBuilder extends StackListenerImpl
asyncModifier,
body);
body = inferredFunctionBody.body;
function.futureValueType = inferredFunctionBody.futureValueType;
assert(
!(function.asyncMarker == AsyncMarker.Async &&
function.futureValueType == null),
"No future value type computed.");
function.emittedValueType = inferredFunctionBody.emittedValueType;
assert(function.asyncMarker == AsyncMarker.Sync ||
function.emittedValueType != null);
}
if (_context.returnType is! OmittedTypeBuilder) {

View file

@ -40,7 +40,7 @@ abstract class ClosureContext {
/// the unknown type.
DartType get yieldContext;
DartType? get futureValueType;
DartType? get emittedValueType;
factory ClosureContext(InferenceVisitorBase inferrer, AsyncMarker asyncMarker,
DartType returnContext, bool needToInferReturnType) {
@ -142,6 +142,9 @@ class _SyncClosureContext implements ClosureContext {
@override
DartType get yieldContext => const UnknownType();
@override
DartType? get emittedValueType => null;
final DartType _declaredReturnType;
final bool _needToInferReturnType;
@ -161,9 +164,6 @@ class _SyncClosureContext implements ClosureContext {
/// being inferred.
List<DartType>? _returnExpressionTypes;
@override
DartType? get futureValueType => null;
_SyncClosureContext(this.inferrer, this._returnContext,
this._declaredReturnType, this._needToInferReturnType) {
if (_needToInferReturnType) {
@ -493,6 +493,9 @@ class _AsyncClosureContext implements ClosureContext {
@override
DartType get yieldContext => const UnknownType();
@override
DartType? emittedValueType;
final DartType _declaredReturnType;
final bool _needToInferReturnType;
@ -512,15 +515,12 @@ class _AsyncClosureContext implements ClosureContext {
/// being inferred.
List<DartType>? _returnExpressionTypes;
@override
DartType? futureValueType;
_AsyncClosureContext(
this.inferrer,
this._returnContext,
this._declaredReturnType,
this._needToInferReturnType,
this.futureValueType) {
this.emittedValueType) {
if (_needToInferReturnType) {
_returnStatements = [];
_returnExpressionTypes = [];
@ -531,14 +531,14 @@ class _AsyncClosureContext implements ClosureContext {
DartType returnType, ReturnStatement statement, DartType expressionType) {
if (inferrer.isNonNullableByDefault) {
assert(
futureValueType != null, "Future value type has not been computed.");
emittedValueType != null, "Future value type has not been computed.");
if (statement.expression == null) {
// It is a compile-time error if s is `return;`, unless T_v is void,
// dynamic, or Null.
if (futureValueType is VoidType ||
futureValueType is DynamicType ||
futureValueType is NullType) {
if (emittedValueType is VoidType ||
emittedValueType is DynamicType ||
emittedValueType is NullType) {
// Valid return;
} else {
statement.expression = inferrer.helper.wrapInProblem(
@ -560,7 +560,7 @@ class _AsyncClosureContext implements ClosureContext {
DartType flattenedExpressionType =
inferrer.typeSchemaEnvironment.flatten(expressionType);
if (futureValueType is VoidType &&
if (emittedValueType is VoidType &&
!(flattenedExpressionType is VoidType ||
flattenedExpressionType is DynamicType ||
flattenedExpressionType is NullType)) {
@ -573,8 +573,8 @@ class _AsyncClosureContext implements ClosureContext {
statement.expression!.fileOffset,
noLength)
..parent = statement;
} else if (!(futureValueType is VoidType ||
futureValueType is DynamicType) &&
} else if (!(emittedValueType is VoidType ||
emittedValueType is DynamicType) &&
flattenedExpressionType is VoidType) {
// It is a compile-time error if s is `return e;`, T_v is neither void
// nor dynamic, and flatten(S) is void.
@ -588,13 +588,13 @@ class _AsyncClosureContext implements ClosureContext {
} else if (flattenedExpressionType is! VoidType &&
!inferrer.typeSchemaEnvironment
.performNullabilityAwareSubtypeCheck(
flattenedExpressionType, futureValueType!)
flattenedExpressionType, emittedValueType!)
.isSubtypeWhenUsingNullabilities()) {
// It is a compile-time error if s is `return e;`, flatten(S) is not
// void, S is not assignable to T_v, and flatten(S) is not a subtype
// of T_v.
statement.expression = inferrer.ensureAssignable(
futureValueType!, expressionType, statement.expression!,
emittedValueType!, expressionType, statement.expression!,
fileOffset: statement.expression!.fileOffset,
runtimeCheckedType:
inferrer.computeGreatestClosure2(_returnContext),
@ -831,10 +831,10 @@ class _AsyncClosureContext implements ClosureContext {
}
if (inferrer.isNonNullableByDefault) {
futureValueType =
emittedValueType =
computeFutureValueType(inferrer.coreTypes, inferredType);
} else {
futureValueType = inferrer.typeSchemaEnvironment.flatten(inferredType);
emittedValueType = inferrer.typeSchemaEnvironment.flatten(inferredType);
}
for (int i = 0; i < _returnStatements!.length; ++i) {
@ -915,21 +915,25 @@ class _SyncStarClosureContext implements ClosureContext {
@override
DartType get yieldContext => _yieldElementContext;
@override
DartType? get emittedValueType => _emittedValueType;
final DartType _declaredReturnType;
DartType? _emittedValueType;
final bool _needToInferReturnType;
/// A list of return expression types in functions whose return type is
/// being inferred.
List<DartType>? _yieldElementTypes;
@override
DartType? get futureValueType => null;
_SyncStarClosureContext(this.inferrer, this._yieldElementContext,
this._declaredReturnType, this._needToInferReturnType) {
if (_needToInferReturnType) {
_yieldElementTypes = [];
} else {
_emittedValueType = inferrer.computeGreatestClosure(_yieldElementContext);
}
}
@ -1009,8 +1013,13 @@ class _SyncStarClosureContext implements ClosureContext {
inferredType = inferrer.computeGreatestClosure2(_declaredReturnType);
}
return demoteTypeInLibrary(inferredType,
DartType demotedType = demoteTypeInLibrary(inferredType,
isNonNullableByDefault: inferrer.isNonNullableByDefault);
_emittedValueType = inferrer.getTypeArgumentOf(
inferrer.typeSchemaEnvironment.getUnionFreeType(demotedType,
isNonNullableByDefault: inferrer.isNonNullableByDefault),
inferrer.coreTypes.iterableClass);
return demotedType;
}
@override
@ -1050,21 +1059,25 @@ class _AsyncStarClosureContext implements ClosureContext {
@override
DartType get yieldContext => _yieldElementContext;
@override
DartType? get emittedValueType => _emittedValueType;
final DartType _declaredReturnType;
DartType? _emittedValueType;
final bool _needToInferReturnType;
/// A list of return expression types in functions whose return type is
/// being inferred.
List<DartType>? _yieldElementTypes;
@override
DartType? get futureValueType => null;
_AsyncStarClosureContext(this.inferrer, this._yieldElementContext,
this._declaredReturnType, this._needToInferReturnType) {
if (_needToInferReturnType) {
_yieldElementTypes = [];
} else {
_emittedValueType = inferrer.computeGreatestClosure(_yieldElementContext);
}
}
@ -1142,8 +1155,13 @@ class _AsyncStarClosureContext implements ClosureContext {
inferredType = inferrer.computeGreatestClosure2(_declaredReturnType);
}
return demoteTypeInLibrary(inferredType,
DartType demotedType = demoteTypeInLibrary(inferredType,
isNonNullableByDefault: inferrer.isNonNullableByDefault);
_emittedValueType = inferrer.getTypeArgumentOf(
inferrer.typeSchemaEnvironment.getUnionFreeType(demotedType,
isNonNullableByDefault: inferrer.isNonNullableByDefault),
inferrer.coreTypes.streamClass);
return demotedType;
}
@override

View file

@ -2326,11 +2326,7 @@ abstract class InferenceVisitorBase implements InferenceVisitor {
}
bodyResult = closureContext.handleImplicitReturn(
this, function.body!, bodyResult, fileOffset);
function.futureValueType = closureContext.futureValueType;
assert(
!(function.asyncMarker == AsyncMarker.Async &&
function.futureValueType == null),
"No future value type computed.");
function.emittedValueType = closureContext.emittedValueType;
if (bodyResult.hasChanged) {
function.body = bodyResult.statement..parent = function;
@ -3778,7 +3774,7 @@ abstract class InferenceVisitorBase implements InferenceVisitor {
/// Computes the `futureValueTypeSchema` for the type schema [type].
///
/// This is the same as the [futureValueType] except that this handles
/// This is the same as the [emittedValueType] except that this handles
/// the unknown type.
DartType computeFutureValueTypeSchema(DartType type) {
return type.accept1(new FutureValueTypeVisitor(unhandledTypeHandler:

View file

@ -206,12 +206,11 @@ class TypeInferrerImpl implements TypeInferrer {
result =
closureContext.handleImplicitReturn(visitor, body, result, fileOffset);
visitor.checkCleanState();
DartType? futureValueType = closureContext.futureValueType;
assert(!(asyncMarker == AsyncMarker.Async && futureValueType == null),
"No future value type computed.");
DartType? emittedValueType = closureContext.emittedValueType;
assert(asyncMarker == AsyncMarker.Sync || emittedValueType != null);
flowAnalysis.finish();
return new InferredFunctionBody(
result.hasChanged ? result.statement : body, futureValueType);
result.hasChanged ? result.statement : body, emittedValueType);
}
@override
@ -432,7 +431,7 @@ class TypeInferrerImplBenchmarked implements TypeInferrer {
class InferredFunctionBody {
final Statement body;
final DartType? futureValueType;
final DartType? emittedValueType;
InferredFunctionBody(this.body, this.futureValueType);
InferredFunctionBody(this.body, this.emittedValueType);
}

View file

@ -36,7 +36,7 @@ macro class MethodMacro extends core::Object implements api::ClassDeclarationsMa
: super core::Object::•()
;
@#C2
method buildDeclarationsForClass(api::ClassDeclaration clazz, api::MemberDeclarationBuilder builder) → FutureOr<void> async /* futureValueType= void */ {}
method buildDeclarationsForClass(api::ClassDeclaration clazz, api::MemberDeclarationBuilder builder) → FutureOr<void> async /* emittedValueType= void */ {}
}
library;

View file

@ -33,7 +33,7 @@ macro class MethodMacro extends core::Object implements api::ClassDeclarationsMa
: super core::Object::•()
;
@#C2
method buildDeclarationsForClass(api::ClassDeclaration clazz, api::MemberDeclarationBuilder builder) → FutureOr<void> async /* futureValueType= void */ {
method buildDeclarationsForClass(api::ClassDeclaration clazz, api::MemberDeclarationBuilder builder) → FutureOr<void> async /* emittedValueType= void */ {
builder.{api::MemberDeclarationBuilder::declareInType}(new api::DeclarationCode::fromString(mac2::generateBody())){(api::DeclarationCode) → void};
}
}

View file

@ -35,7 +35,7 @@ macro class MethodMacro extends core::Object implements api::ClassDeclarationsMa
: super core::Object::•()
;
@#C2
method buildDeclarationsForClass(api::ClassDeclaration clazz, api::MemberDeclarationBuilder builder) → FutureOr<void> async /* futureValueType= void */ {
method buildDeclarationsForClass(api::ClassDeclaration clazz, api::MemberDeclarationBuilder builder) → FutureOr<void> async /* emittedValueType= void */ {
builder.{api::MemberDeclarationBuilder::declareInType}(new api::DeclarationCode::fromString(mac2::generateBody())){(api::DeclarationCode) → void};
}
}

View file

@ -96,8 +96,8 @@ class StaticTypeDataExtractor extends CfeDataExtractor<String> {
@override
String? computeMemberValue(Id id, Member node) {
if (node is Procedure && node.function.futureValueType != null) {
return 'futureValueType=${typeToText(node.function.futureValueType!)}';
if (node is Procedure && node.function.emittedValueType != null) {
return 'futureValueType=${typeToText(node.function.emittedValueType!)}';
}
return null;
}
@ -109,9 +109,10 @@ class StaticTypeDataExtractor extends CfeDataExtractor<String> {
}
if (node is Expression) {
DartType type = node.getStaticType(_staticTypeContext!);
if (node is FunctionExpression && node.function.futureValueType != null) {
if (node is FunctionExpression &&
node.function.emittedValueType != null) {
return '${typeToText(type)},'
'futureValueType=${typeToText(node.function.futureValueType!)}';
'futureValueType=${typeToText(node.function.emittedValueType!)}';
}
return typeToText(type);
} else if (node is Arguments) {
@ -123,8 +124,8 @@ class StaticTypeDataExtractor extends CfeDataExtractor<String> {
return typeToText(node.getElementType(_staticTypeContext!));
}
} else if (node is FunctionDeclaration) {
if (node.function.futureValueType != null) {
return 'futureValueType=${typeToText(node.function.futureValueType!)}';
if (node.function.emittedValueType != null) {
return 'futureValueType=${typeToText(node.function.emittedValueType!)}';
}
}
return null;

View file

@ -6,15 +6,15 @@ import "dart:core" as core;
static method bar() → asy::Future<core::int> {
return asy::Future::value<core::int>(123);
}
static method foo1() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo1() → asy::Future<core::int> async /* emittedValueType= core::int */ {
return await self::bar();
}
static method foo2(core::bool x) → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo2(core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ {
if(x)
return await asy::Future::value<core::int>(345);
return await self::bar();
}
static method foo3(core::bool x) → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo3(core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ {
if(x)
return 234;
return await asy::Future::value<core::int>(123);

View file

@ -6,17 +6,17 @@ import "dart:core" as core;
static method bar() → asy::Future<core::int> {
return asy::Future::value<core::int>(123);
}
static method foo1() → asy::Future<core::int> /* futureValueType= core::int */ /* originally async */
static method foo1() → asy::Future<core::int> /* emittedValueType= core::int */ /* originally async */
return asy::Future::sync<core::int>(() → FutureOr<core::int> {
return asy::Future::value<core::int>(self::bar());
});
static method foo2(core::bool x) → asy::Future<core::int> /* futureValueType= core::int */ /* originally async */
static method foo2(core::bool x) → asy::Future<core::int> /* emittedValueType= core::int */ /* originally async */
return asy::Future::sync<core::int>(() → FutureOr<core::int> {
if(x)
return asy::Future::value<core::int>(asy::Future::value<core::int>(345));
return asy::Future::value<core::int>(self::bar());
});
static method foo3(core::bool x) → asy::Future<core::int> /* futureValueType= core::int */ /* originally async */
static method foo3(core::bool x) → asy::Future<core::int> /* emittedValueType= core::int */ /* originally async */
return asy::Future::sync<core::int>(() → FutureOr<core::int> {
if(x)
return asy::Future::value<core::int>(234);

View file

@ -6,15 +6,15 @@ import "dart:core" as core;
static method bar() → asy::Future<core::int> {
return asy::Future::value<core::int>(123);
}
static method foo1() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo1() → asy::Future<core::int> async /* emittedValueType= core::int */ {
return await self::bar();
}
static method foo2(core::bool x) → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo2(core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ {
if(x)
return await asy::Future::value<core::int>(345);
return await self::bar();
}
static method foo3(core::bool x) → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo3(core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ {
if(x)
return 234;
return await asy::Future::value<core::int>(123);

View file

@ -6,15 +6,15 @@ import "dart:core" as core;
static method bar() → asy::Future<core::int> {
return asy::Future::value<core::int>(123);
}
static method foo1() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo1() → asy::Future<core::int> async /* emittedValueType= core::int */ {
return await self::bar();
}
static method foo2(core::bool x) → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo2(core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ {
if(x)
return await asy::Future::value<core::int>(345);
return await self::bar();
}
static method foo3(core::bool x) → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo3(core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ {
if(x)
return 234;
return await asy::Future::value<core::int>(123);

View file

@ -6,17 +6,17 @@ import "dart:core" as core;
static method bar() → asy::Future<core::int> {
return asy::Future::value<core::int>(123);
}
static method foo1() → asy::Future<core::int> /* futureValueType= core::int */ /* originally async */
static method foo1() → asy::Future<core::int> /* emittedValueType= core::int */ /* originally async */
return asy::Future::sync<core::int>(() → FutureOr<core::int> {
return asy::Future::value<core::int>(self::bar());
});
static method foo2(core::bool x) → asy::Future<core::int> /* futureValueType= core::int */ /* originally async */
static method foo2(core::bool x) → asy::Future<core::int> /* emittedValueType= core::int */ /* originally async */
return asy::Future::sync<core::int>(() → FutureOr<core::int> {
if(x)
return asy::Future::value<core::int>(asy::Future::value<core::int>(345));
return asy::Future::value<core::int>(self::bar());
});
static method foo3(core::bool x) → asy::Future<core::int> /* futureValueType= core::int */ /* originally async */
static method foo3(core::bool x) → asy::Future<core::int> /* emittedValueType= core::int */ /* originally async */
return asy::Future::sync<core::int>(() → FutureOr<core::int> {
if(x)
return asy::Future::value<core::int>(234);

View file

@ -3,7 +3,7 @@ import self as self;
import "dart:async" as asy;
import "dart:core" as core;
static method foo() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo() → asy::Future<core::int> async /* emittedValueType= core::int */ {
final core::int c = 3;
return c;
}

View file

@ -3,7 +3,7 @@ import self as self;
import "dart:async" as asy;
import "dart:core" as core;
static method foo() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo() → asy::Future<core::int> async /* emittedValueType= core::int */ {
final core::int c = 3;
return c;
}

View file

@ -3,7 +3,7 @@ import self as self;
import "dart:async" as asy;
import "dart:core" as core;
static method foo() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo() → asy::Future<core::int> async /* emittedValueType= core::int */ {
final core::int c = 3;
return c;
}

View file

@ -3,7 +3,7 @@ import self as self;
import "dart:async" as asy;
import "dart:core" as core;
static method foo() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo() → asy::Future<core::int> async /* emittedValueType= core::int */ {
final core::int c = 3;
return c;
}

View file

@ -3,7 +3,7 @@ import self as self;
import "dart:async" as asy;
import "dart:core" as core;
static method foo() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo() → asy::Future<core::int> async /* emittedValueType= core::int */ {
final core::int c = 3;
return c;
}

View file

@ -3,25 +3,25 @@ import self as self;
import "dart:async" as asy;
import "dart:core" as core;
static method foo1() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo1() → asy::Future<core::int> async /* emittedValueType= core::int */ {
final core::int c = 3;
return c;
}
static method foo2() → asy::Future<void> async /* futureValueType= void */ {
static method foo2() → asy::Future<void> async /* emittedValueType= void */ {
final core::int c = 3;
}
static method foo3() → dynamic async /* futureValueType= dynamic */ {
static method foo3() → dynamic async /* emittedValueType= dynamic */ {
return 234;
}
static method bar(() → asy::Future<core::int> func) → void {
func(){() → asy::Future<core::int>};
}
static method foo4() → asy::Future<core::bool> async /* futureValueType= core::bool */ {
static method foo4() → asy::Future<core::bool> async /* emittedValueType= core::bool */ {
await asy::Future::value<core::int>(2);
self::bar(() → asy::Future<core::int> async /* futureValueType= core::int */ => 3);
self::bar(() → asy::Future<core::int> async /* emittedValueType= core::int */ => 3);
return true;
}
static method foo5(core::bool x) → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo5(core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ {
if(x)
return 123;
return 234;

View file

@ -3,28 +3,28 @@ import self as self;
import "dart:async" as asy;
import "dart:core" as core;
static method foo1() → asy::Future<core::int> /* futureValueType= core::int */ /* originally async */
static method foo1() → asy::Future<core::int> /* emittedValueType= core::int */ /* originally async */
return asy::Future::sync<core::int>(() → FutureOr<core::int> {
final core::int c = 3;
return asy::Future::value<core::int>(c);
});
static method foo2() → asy::Future<void> /* futureValueType= void */ /* originally async */
static method foo2() → asy::Future<void> /* emittedValueType= void */ /* originally async */
return asy::Future::sync<void>(() → FutureOr<void>? {
final core::int c = 3;
});
static method foo3() → dynamic /* futureValueType= dynamic */ /* originally async */
static method foo3() → dynamic /* emittedValueType= dynamic */ /* originally async */
return asy::Future::sync<dynamic>(() → FutureOr<dynamic>? {
return asy::Future::value<dynamic>(234);
});
static method bar(() → asy::Future<core::int> func) → void {
func(){() → asy::Future<core::int>};
}
static method foo4() → asy::Future<core::bool> async /* futureValueType= core::bool */ {
static method foo4() → asy::Future<core::bool> async /* emittedValueType= core::bool */ {
await asy::Future::value<core::int>(2);
self::bar(() → asy::Future<core::int> /* futureValueType= core::int */ /* originally async */ => asy::Future::sync<core::int>(() → FutureOr<core::int> => asy::Future::value<core::int>(3)));
self::bar(() → asy::Future<core::int> /* emittedValueType= core::int */ /* originally async */ => asy::Future::sync<core::int>(() → FutureOr<core::int> => asy::Future::value<core::int>(3)));
return true;
}
static method foo5(core::bool x) → asy::Future<core::int> /* futureValueType= core::int */ /* originally async */
static method foo5(core::bool x) → asy::Future<core::int> /* emittedValueType= core::int */ /* originally async */
return asy::Future::sync<core::int>(() → FutureOr<core::int> {
if(x)
return asy::Future::value<core::int>(123);

View file

@ -3,25 +3,25 @@ import self as self;
import "dart:async" as asy;
import "dart:core" as core;
static method foo1() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo1() → asy::Future<core::int> async /* emittedValueType= core::int */ {
final core::int c = 3;
return c;
}
static method foo2() → asy::Future<void> async /* futureValueType= void */ {
static method foo2() → asy::Future<void> async /* emittedValueType= void */ {
final core::int c = 3;
}
static method foo3() → dynamic async /* futureValueType= dynamic */ {
static method foo3() → dynamic async /* emittedValueType= dynamic */ {
return 234;
}
static method bar(() → asy::Future<core::int> func) → void {
func(){() → asy::Future<core::int>};
}
static method foo4() → asy::Future<core::bool> async /* futureValueType= core::bool */ {
static method foo4() → asy::Future<core::bool> async /* emittedValueType= core::bool */ {
await asy::Future::value<core::int>(2);
self::bar(() → asy::Future<core::int> async /* futureValueType= core::int */ => 3);
self::bar(() → asy::Future<core::int> async /* emittedValueType= core::int */ => 3);
return true;
}
static method foo5(core::bool x) → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo5(core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ {
if(x)
return 123;
return 234;

View file

@ -3,25 +3,25 @@ import self as self;
import "dart:async" as asy;
import "dart:core" as core;
static method foo1() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo1() → asy::Future<core::int> async /* emittedValueType= core::int */ {
final core::int c = 3;
return c;
}
static method foo2() → asy::Future<void> async /* futureValueType= void */ {
static method foo2() → asy::Future<void> async /* emittedValueType= void */ {
final core::int c = 3;
}
static method foo3() → dynamic async /* futureValueType= dynamic */ {
static method foo3() → dynamic async /* emittedValueType= dynamic */ {
return 234;
}
static method bar(() → asy::Future<core::int> func) → void {
func(){() → asy::Future<core::int>};
}
static method foo4() → asy::Future<core::bool> async /* futureValueType= core::bool */ {
static method foo4() → asy::Future<core::bool> async /* emittedValueType= core::bool */ {
await asy::Future::value<core::int>(2);
self::bar(() → asy::Future<core::int> async /* futureValueType= core::int */ => 3);
self::bar(() → asy::Future<core::int> async /* emittedValueType= core::int */ => 3);
return true;
}
static method foo5(core::bool x) → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo5(core::bool x) → asy::Future<core::int> async /* emittedValueType= core::int */ {
if(x)
return 123;
return 234;

View file

@ -3,28 +3,28 @@ import self as self;
import "dart:async" as asy;
import "dart:core" as core;
static method foo1() → asy::Future<core::int> /* futureValueType= core::int */ /* originally async */
static method foo1() → asy::Future<core::int> /* emittedValueType= core::int */ /* originally async */
return asy::Future::sync<core::int>(() → FutureOr<core::int> {
final core::int c = 3;
return asy::Future::value<core::int>(c);
});
static method foo2() → asy::Future<void> /* futureValueType= void */ /* originally async */
static method foo2() → asy::Future<void> /* emittedValueType= void */ /* originally async */
return asy::Future::sync<void>(() → FutureOr<void>? {
final core::int c = 3;
});
static method foo3() → dynamic /* futureValueType= dynamic */ /* originally async */
static method foo3() → dynamic /* emittedValueType= dynamic */ /* originally async */
return asy::Future::sync<dynamic>(() → FutureOr<dynamic>? {
return asy::Future::value<dynamic>(234);
});
static method bar(() → asy::Future<core::int> func) → void {
func(){() → asy::Future<core::int>};
}
static method foo4() → asy::Future<core::bool> async /* futureValueType= core::bool */ {
static method foo4() → asy::Future<core::bool> async /* emittedValueType= core::bool */ {
await asy::Future::value<core::int>(2);
self::bar(() → asy::Future<core::int> /* futureValueType= core::int */ /* originally async */ => asy::Future::sync<core::int>(() → FutureOr<core::int> => asy::Future::value<core::int>(3)));
self::bar(() → asy::Future<core::int> /* emittedValueType= core::int */ /* originally async */ => asy::Future::sync<core::int>(() → FutureOr<core::int> => asy::Future::value<core::int>(3)));
return true;
}
static method foo5(core::bool x) → asy::Future<core::int> /* futureValueType= core::int */ /* originally async */
static method foo5(core::bool x) → asy::Future<core::int> /* emittedValueType= core::int */ /* originally async */
return asy::Future::sync<core::int>(() → FutureOr<core::int> {
if(x)
return asy::Future::value<core::int>(123);

View file

@ -3,19 +3,19 @@ import self as self;
import "dart:async" as asy;
import "dart:core" as core;
static method foo1() → asy::Future<void> async /* futureValueType= void */ {
static method foo1() → asy::Future<void> async /* emittedValueType= void */ {
await 6 /* runtimeCheckType= asy::Future<core::int> */ ;
}
static method foo2() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo2() → asy::Future<core::int> async /* emittedValueType= core::int */ {
return (await 6 /* runtimeCheckType= asy::Future<core::int> */ ).{core::num::+}(3){(core::num) → core::int};
}
static method foo3() → asy::Future<void> async /* futureValueType= void */ {
static method foo3() → asy::Future<void> async /* emittedValueType= void */ {
#L1:
await for (final dynamic x in new asy::_EmptyStream::•<dynamic>()) {
break #L1;
}
}
static method foo4() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo4() → asy::Future<core::int> async /* emittedValueType= core::int */ {
try {
return 3;
}
@ -23,7 +23,7 @@ static method foo4() → asy::Future<core::int> async /* futureValueType= core::
return 2;
}
}
static method foo5() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo5() → asy::Future<core::int> async /* emittedValueType= core::int */ {
try {
return 3;
}

View file

@ -3,19 +3,19 @@ import self as self;
import "dart:async" as asy;
import "dart:core" as core;
static method foo1() → asy::Future<void> async /* futureValueType= void */ {
static method foo1() → asy::Future<void> async /* emittedValueType= void */ {
await asy::_wrapAwaitedExpression<core::int>(6);
}
static method foo2() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo2() → asy::Future<core::int> async /* emittedValueType= core::int */ {
return (await asy::_wrapAwaitedExpression<core::int>(6)).{core::num::+}(3){(core::num) → core::int};
}
static method foo3() → asy::Future<void> async /* futureValueType= void */ {
static method foo3() → asy::Future<void> async /* emittedValueType= void */ {
#L1:
await for (final dynamic x in new asy::_EmptyStream::•<dynamic>()) {
break #L1;
}
}
static method foo4() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo4() → asy::Future<core::int> async /* emittedValueType= core::int */ {
try {
return 3;
}
@ -23,7 +23,7 @@ static method foo4() → asy::Future<core::int> async /* futureValueType= core::
return 2;
}
}
static method foo5() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo5() → asy::Future<core::int> async /* emittedValueType= core::int */ {
try {
return 3;
}

View file

@ -3,19 +3,19 @@ import self as self;
import "dart:async" as asy;
import "dart:core" as core;
static method foo1() → asy::Future<void> async /* futureValueType= void */ {
static method foo1() → asy::Future<void> async /* emittedValueType= void */ {
await 6 /* runtimeCheckType= asy::Future<core::int> */ ;
}
static method foo2() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo2() → asy::Future<core::int> async /* emittedValueType= core::int */ {
return (await 6 /* runtimeCheckType= asy::Future<core::int> */ ).{core::num::+}(3){(core::num) → core::int};
}
static method foo3() → asy::Future<void> async /* futureValueType= void */ {
static method foo3() → asy::Future<void> async /* emittedValueType= void */ {
#L1:
await for (final dynamic x in new asy::_EmptyStream::•<dynamic>()) {
break #L1;
}
}
static method foo4() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo4() → asy::Future<core::int> async /* emittedValueType= core::int */ {
try {
return 3;
}
@ -23,7 +23,7 @@ static method foo4() → asy::Future<core::int> async /* futureValueType= core::
return 2;
}
}
static method foo5() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo5() → asy::Future<core::int> async /* emittedValueType= core::int */ {
try {
return 3;
}

View file

@ -3,19 +3,19 @@ import self as self;
import "dart:async" as asy;
import "dart:core" as core;
static method foo1() → asy::Future<void> async /* futureValueType= void */ {
static method foo1() → asy::Future<void> async /* emittedValueType= void */ {
await 6 /* runtimeCheckType= asy::Future<core::int> */ ;
}
static method foo2() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo2() → asy::Future<core::int> async /* emittedValueType= core::int */ {
return (await 6 /* runtimeCheckType= asy::Future<core::int> */ ).{core::num::+}(3){(core::num) → core::int};
}
static method foo3() → asy::Future<void> async /* futureValueType= void */ {
static method foo3() → asy::Future<void> async /* emittedValueType= void */ {
#L1:
await for (final dynamic x in new asy::_EmptyStream::•<dynamic>()) {
break #L1;
}
}
static method foo4() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo4() → asy::Future<core::int> async /* emittedValueType= core::int */ {
try {
return 3;
}
@ -23,7 +23,7 @@ static method foo4() → asy::Future<core::int> async /* futureValueType= core::
return 2;
}
}
static method foo5() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo5() → asy::Future<core::int> async /* emittedValueType= core::int */ {
try {
return 3;
}

View file

@ -3,19 +3,19 @@ import self as self;
import "dart:async" as asy;
import "dart:core" as core;
static method foo1() → asy::Future<void> async /* futureValueType= void */ {
static method foo1() → asy::Future<void> async /* emittedValueType= void */ {
await asy::_wrapAwaitedExpression<core::int>(6);
}
static method foo2() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo2() → asy::Future<core::int> async /* emittedValueType= core::int */ {
return (await asy::_wrapAwaitedExpression<core::int>(6)).{core::num::+}(3){(core::num) → core::int};
}
static method foo3() → asy::Future<void> async /* futureValueType= void */ {
static method foo3() → asy::Future<void> async /* emittedValueType= void */ {
#L1:
await for (final dynamic x in new asy::_EmptyStream::•<dynamic>()) {
break #L1;
}
}
static method foo4() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo4() → asy::Future<core::int> async /* emittedValueType= core::int */ {
try {
return 3;
}
@ -23,7 +23,7 @@ static method foo4() → asy::Future<core::int> async /* futureValueType= core::
return 2;
}
}
static method foo5() → asy::Future<core::int> async /* futureValueType= core::int */ {
static method foo5() → asy::Future<core::int> async /* emittedValueType= core::int */ {
try {
return 3;
}

View file

@ -8,7 +8,7 @@ static method method(core::Iterable<core::int> iterable) → dynamic {
core::print(i);
}
}
static method asyncMethod(asy::Stream<core::int> stream) → dynamic async /* futureValueType= dynamic */ {
static method asyncMethod(asy::Stream<core::int> stream) → dynamic async /* emittedValueType= dynamic */ {
await for (core::int i in stream) {
core::print(i);
}

View file

@ -14,7 +14,7 @@ static method method(core::Iterable<core::int> iterable) → dynamic {
}
}
}
static method asyncMethod(asy::Stream<core::int> stream) → dynamic async /* futureValueType= dynamic */ {
static method asyncMethod(asy::Stream<core::int> stream) → dynamic async /* emittedValueType= dynamic */ {
core::bool :async_temporary_0;
dynamic :async_temporary_1;
{

View file

@ -8,14 +8,14 @@ import "dart:typed_data";
static method getBinaryTestProto() → asy::Future<typ::Uint8List>
return self::readFileWeb("test.binary.pb");
static method readFileWeb(core::String path) → asy::Future<typ::Uint8List> async /* futureValueType= typ::Uint8List */ {
static method readFileWeb(core::String path) → asy::Future<typ::Uint8List> async /* emittedValueType= typ::Uint8List */ {
throw "";
}
static method runBench([typ::Uint8List? data = #C1]) → void async /* futureValueType= void */ {
static method runBench([typ::Uint8List? data = #C1]) → void async /* emittedValueType= void */ {
data == null ?{typ::Uint8List?} data = await self::getBinaryTestProto() : null;
core::print(data{typ::Uint8List});
}
static method main() → void async /* futureValueType= void */ {
static method main() → void async /* emittedValueType= void */ {
typ::Uint8List data = await self::getBinaryTestProto();
core::print("File successfully read, contents: ${data}");
self::runBench(data);

View file

@ -8,10 +8,10 @@ import "dart:typed_data";
static method getBinaryTestProto() → asy::Future<typ::Uint8List>
return self::readFileWeb("test.binary.pb");
static method readFileWeb(core::String path) → asy::Future<typ::Uint8List> async /* futureValueType= typ::Uint8List */ {
static method readFileWeb(core::String path) → asy::Future<typ::Uint8List> async /* emittedValueType= typ::Uint8List */ {
throw "";
}
static method runBench([typ::Uint8List? data = #C1]) → void async /* futureValueType= void */ {
static method runBench([typ::Uint8List? data = #C1]) → void async /* emittedValueType= void */ {
typ::Uint8List :async_temporary_0;
typ::Uint8List? :async_temporary_1;
if(data == null) {
@ -24,7 +24,7 @@ static method runBench([typ::Uint8List? data = #C1]) → void async /* futureVal
:async_temporary_1 as{ForLegacy} dynamic;
core::print(data{typ::Uint8List});
}
static method main() → void async /* futureValueType= void */ {
static method main() → void async /* emittedValueType= void */ {
typ::Uint8List :async_temporary_0;
:async_temporary_0 = await self::getBinaryTestProto();
typ::Uint8List data = :async_temporary_0 as{ForLegacy} dynamic;

View file

@ -3,12 +3,12 @@ import self as self;
import "dart:core" as core;
import "dart:async" as asy;
static method method(core::Iterable<core::int> iterable) → core::Iterable<core::int> sync* {
static method method(core::Iterable<core::int> iterable) → core::Iterable<core::int> sync* /* emittedValueType= core::int */ {
yield 1;
yield 2;
yield* iterable;
}
static method asyncMethod(asy::Stream<core::int> stream) → asy::Stream<core::int> async* {
static method asyncMethod(asy::Stream<core::int> stream) → asy::Stream<core::int> async* /* emittedValueType= core::int */ {
yield 1;
yield 2;
yield* stream;

View file

@ -3,14 +3,14 @@ import self as self;
import "dart:core" as core;
import "dart:async" as asy;
static method method(core::Iterable<core::int> iterable) → core::Iterable<core::int> sync* {
static method method(core::Iterable<core::int> iterable) → core::Iterable<core::int> sync* /* emittedValueType= core::int */ {
yield 1;
yield 2;
yield* iterable;
}
static method asyncMethod(asy::Stream<core::int> stream) → asy::Stream<core::int> {
synthesized asy::StreamController<core::Object?> #controller = asy::StreamController::•<core::Object?>();
synthesized () → asy::Future<void> #body = () → asy::Future<void> async /* futureValueType= void */ {
synthesized () → asy::Future<void> #body = () → asy::Future<void> async /* emittedValueType= void */ {
core::bool :async_temporary_0;
core::bool :async_temporary_1;
core::bool :async_temporary_2;
@ -96,7 +96,7 @@ static method asyncMethod(asy::Stream<core::int> stream) → asy::Stream<core::i
synthesized core::bool #isFirst = #C2;
synthesized core::bool #isEven = #C1;
#controller.{asy::StreamController::add}(#C3){(core::Object?) → void};
return #controller.{asy::StreamController::stream}{asy::Stream<core::Object?>}.{asy::Stream::asyncMap}<core::Object?>((synthesized core::Object? value) → FutureOr<core::Object?> async /* futureValueType= core::Object? */ {
return #controller.{asy::StreamController::stream}{asy::Stream<core::Object?>}.{asy::Stream::asyncMap}<core::Object?>((synthesized core::Object? value) → FutureOr<core::Object?> async /* emittedValueType= core::Object? */ {
if(#isFirst) {
#body(){() → asy::Future<void>};
return #C3;

View file

@ -25,7 +25,7 @@ static extension-type-member method V2|constructor#<T extends asy::Future<core::
}
static extension-type-member method V2|constructor#_#new#tearOff<T extends asy::Future<core::Object>>(self::V2|constructor#_#new#tearOff::T id) → self::V2<self::V2|constructor#_#new#tearOff::T> /* = self::V2|constructor#_#new#tearOff::T */
return self::V2|constructor#<self::V2|constructor#_#new#tearOff::T>(id);
static method main() → dynamic async /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= dynamic */ {
self::V1 /* = asy::Future<core::int> */ v1 = self::V1|constructor#(asy::Future::value<core::int>(42));
core::int _v1 = await v1;
self::expect(42, _v1);

View file

@ -25,7 +25,7 @@ static extension-type-member method V2|constructor#<T extends asy::Future<core::
}
static extension-type-member method V2|constructor#_#new#tearOff<T extends asy::Future<core::Object>>(self::V2|constructor#_#new#tearOff::T id) → self::V2<self::V2|constructor#_#new#tearOff::T> /* = self::V2|constructor#_#new#tearOff::T */
return self::V2|constructor#<self::V2|constructor#_#new#tearOff::T>(id);
static method main() → dynamic async /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= dynamic */ {
self::V1 /* = asy::Future<core::int> */ v1 = self::V1|constructor#(asy::Future::value<core::int>(42));
core::int _v1 = await v1;
self::expect(42, _v1);

View file

@ -25,7 +25,7 @@ static extension-type-member method V2|constructor#<T extends asy::Future<core::
}
static extension-type-member method V2|constructor#_#new#tearOff<T extends asy::Future<core::Object>>(self::V2|constructor#_#new#tearOff::T id) → self::V2<self::V2|constructor#_#new#tearOff::T> /* = self::V2|constructor#_#new#tearOff::T */
return self::V2|constructor#<self::V2|constructor#_#new#tearOff::T>(id);
static method main() → dynamic async /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= dynamic */ {
self::V1 /* = asy::Future<core::int> */ v1 = self::V1|constructor#(asy::Future::value<core::int>(42));
core::int _v1 = await v1;
self::expect(42, _v1);

View file

@ -25,7 +25,7 @@ static extension-type-member method V2|constructor#<T extends asy::Future<core::
}
static extension-type-member method V2|constructor#_#new#tearOff<T extends asy::Future<core::Object>>(self::V2|constructor#_#new#tearOff::T id) → self::V2<self::V2|constructor#_#new#tearOff::T> /* = self::V2|constructor#_#new#tearOff::T */
return self::V2|constructor#<self::V2|constructor#_#new#tearOff::T>(id);
static method main() → dynamic async /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= dynamic */ {
self::V1 /* = asy::Future<core::int> */ v1 = self::V1|constructor#(asy::Future::value<core::int>(42));
core::int _v1 = await v1;
self::expect(42, _v1);

View file

@ -25,7 +25,7 @@ static extension-type-member method V2|constructor#<T extends asy::Future<core::
}
static extension-type-member method V2|constructor#_#new#tearOff<T extends asy::Future<core::Object>>(self::V2|constructor#_#new#tearOff::T id) → self::V2<self::V2|constructor#_#new#tearOff::T> /* = self::V2|constructor#_#new#tearOff::T */
return self::V2|constructor#<self::V2|constructor#_#new#tearOff::T>(id);
static method main() → dynamic async /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= dynamic */ {
self::V1 /* = asy::Future<core::int> */ v1 = self::V1|constructor#(asy::Future::value<core::int>(42));
core::int _v1 = await v1;
self::expect(42, _v1);

View file

@ -131,7 +131,7 @@ static extension-type-member method F4|constructor#<X extends asy::Future<core::
}
static extension-type-member method F4|constructor#_#new#tearOff<X extends asy::Future<core::num>>(self::F4|constructor#_#new#tearOff::X foo) → self::F4<self::F4|constructor#_#new#tearOff::X> /* = self::F4|constructor#_#new#tearOff::X */
return self::F4|constructor#<self::F4|constructor#_#new#tearOff::X>(foo);
static method test(self::E1 /* = asy::Future<core::int> */ e1, self::E2<asy::Future<core::String>> /* = asy::Future<core::String> */ e2, self::E3 /* = FutureOr<core::bool>*/ e3, self::E4<asy::Future<core::double>> /* = asy::Future<core::double> */ e4, self::E5<core::Object> /* = core::Object */ e5object, self::E5<asy::Future<core::num>> /* = asy::Future<core::num> */ e5future, self::F1 /* = asy::Future<core::int> */ f1, self::F2<asy::Future<core::num>> /* = asy::Future<core::num> */ f2, self::F3<asy::Future<core::String>> /* = asy::Future<core::String> */ f3, self::F4<asy::Future<core::int>> /* = asy::Future<core::int> */ f4) → dynamic async /* futureValueType= dynamic */ {
static method test(self::E1 /* = asy::Future<core::int> */ e1, self::E2<asy::Future<core::String>> /* = asy::Future<core::String> */ e2, self::E3 /* = FutureOr<core::bool>*/ e3, self::E4<asy::Future<core::double>> /* = asy::Future<core::double> */ e4, self::E5<core::Object> /* = core::Object */ e5object, self::E5<asy::Future<core::num>> /* = asy::Future<core::num> */ e5future, self::F1 /* = asy::Future<core::int> */ f1, self::F2<asy::Future<core::num>> /* = asy::Future<core::num> */ f2, self::F3<asy::Future<core::String>> /* = asy::Future<core::String> */ f3, self::F4<asy::Future<core::int>> /* = asy::Future<core::int> */ f4) → dynamic async /* emittedValueType= dynamic */ {
await invalid-expression "pkg/front_end/testcases/extension_types/issue53207.dart:21:9: Error: The 'await' expression can't be used for an expression with an extension type that is not a subtype of 'Future'.
await e1; // Error.
^" in e1 /* runtimeCheckType= asy::Future<self::E1 /* = asy::Future<core::int> */> */ ;

View file

@ -131,7 +131,7 @@ static extension-type-member method F4|constructor#<X extends asy::Future<core::
}
static extension-type-member method F4|constructor#_#new#tearOff<X extends asy::Future<core::num>>(self::F4|constructor#_#new#tearOff::X foo) → self::F4<self::F4|constructor#_#new#tearOff::X> /* = self::F4|constructor#_#new#tearOff::X */
return self::F4|constructor#<self::F4|constructor#_#new#tearOff::X>(foo);
static method test(self::E1 /* = asy::Future<core::int> */ e1, self::E2<asy::Future<core::String>> /* = asy::Future<core::String> */ e2, self::E3 /* = FutureOr<core::bool>*/ e3, self::E4<asy::Future<core::double>> /* = asy::Future<core::double> */ e4, self::E5<core::Object> /* = core::Object */ e5object, self::E5<asy::Future<core::num>> /* = asy::Future<core::num> */ e5future, self::F1 /* = asy::Future<core::int> */ f1, self::F2<asy::Future<core::num>> /* = asy::Future<core::num> */ f2, self::F3<asy::Future<core::String>> /* = asy::Future<core::String> */ f3, self::F4<asy::Future<core::int>> /* = asy::Future<core::int> */ f4) → dynamic async /* futureValueType= dynamic */ {
static method test(self::E1 /* = asy::Future<core::int> */ e1, self::E2<asy::Future<core::String>> /* = asy::Future<core::String> */ e2, self::E3 /* = FutureOr<core::bool>*/ e3, self::E4<asy::Future<core::double>> /* = asy::Future<core::double> */ e4, self::E5<core::Object> /* = core::Object */ e5object, self::E5<asy::Future<core::num>> /* = asy::Future<core::num> */ e5future, self::F1 /* = asy::Future<core::int> */ f1, self::F2<asy::Future<core::num>> /* = asy::Future<core::num> */ f2, self::F3<asy::Future<core::String>> /* = asy::Future<core::String> */ f3, self::F4<asy::Future<core::int>> /* = asy::Future<core::int> */ f4) → dynamic async /* emittedValueType= dynamic */ {
await invalid-expression "pkg/front_end/testcases/extension_types/issue53207.dart:21:9: Error: The 'await' expression can't be used for an expression with an extension type that is not a subtype of 'Future'.
await e1; // Error.
^" in e1 /* runtimeCheckType= asy::Future<self::E1 /* = asy::Future<core::int> */> */ ;

View file

@ -131,7 +131,7 @@ static extension-type-member method F4|constructor#<X extends asy::Future<core::
}
static extension-type-member method F4|constructor#_#new#tearOff<X extends asy::Future<core::num>>(self::F4|constructor#_#new#tearOff::X foo) → self::F4<self::F4|constructor#_#new#tearOff::X> /* = self::F4|constructor#_#new#tearOff::X */
return self::F4|constructor#<self::F4|constructor#_#new#tearOff::X>(foo);
static method test(self::E1 /* = asy::Future<core::int> */ e1, self::E2<asy::Future<core::String>> /* = asy::Future<core::String> */ e2, self::E3 /* = FutureOr<core::bool>*/ e3, self::E4<asy::Future<core::double>> /* = asy::Future<core::double> */ e4, self::E5<core::Object> /* = core::Object */ e5object, self::E5<asy::Future<core::num>> /* = asy::Future<core::num> */ e5future, self::F1 /* = asy::Future<core::int> */ f1, self::F2<asy::Future<core::num>> /* = asy::Future<core::num> */ f2, self::F3<asy::Future<core::String>> /* = asy::Future<core::String> */ f3, self::F4<asy::Future<core::int>> /* = asy::Future<core::int> */ f4) → dynamic async /* futureValueType= dynamic */ {
static method test(self::E1 /* = asy::Future<core::int> */ e1, self::E2<asy::Future<core::String>> /* = asy::Future<core::String> */ e2, self::E3 /* = FutureOr<core::bool>*/ e3, self::E4<asy::Future<core::double>> /* = asy::Future<core::double> */ e4, self::E5<core::Object> /* = core::Object */ e5object, self::E5<asy::Future<core::num>> /* = asy::Future<core::num> */ e5future, self::F1 /* = asy::Future<core::int> */ f1, self::F2<asy::Future<core::num>> /* = asy::Future<core::num> */ f2, self::F3<asy::Future<core::String>> /* = asy::Future<core::String> */ f3, self::F4<asy::Future<core::int>> /* = asy::Future<core::int> */ f4) → dynamic async /* emittedValueType= dynamic */ {
await invalid-expression "pkg/front_end/testcases/extension_types/issue53207.dart:21:9: Error: The 'await' expression can't be used for an expression with an extension type that is not a subtype of 'Future'.
await e1; // Error.
^" in e1 /* runtimeCheckType= asy::Future<self::E1 /* = asy::Future<core::int> */> */ ;

View file

@ -131,7 +131,7 @@ static extension-type-member method F4|constructor#<X extends asy::Future<core::
}
static extension-type-member method F4|constructor#_#new#tearOff<X extends asy::Future<core::num>>(self::F4|constructor#_#new#tearOff::X foo) → self::F4<self::F4|constructor#_#new#tearOff::X> /* = self::F4|constructor#_#new#tearOff::X */
return self::F4|constructor#<self::F4|constructor#_#new#tearOff::X>(foo);
static method test(self::E1 /* = asy::Future<core::int> */ e1, self::E2<asy::Future<core::String>> /* = asy::Future<core::String> */ e2, self::E3 /* = FutureOr<core::bool>*/ e3, self::E4<asy::Future<core::double>> /* = asy::Future<core::double> */ e4, self::E5<core::Object> /* = core::Object */ e5object, self::E5<asy::Future<core::num>> /* = asy::Future<core::num> */ e5future, self::F1 /* = asy::Future<core::int> */ f1, self::F2<asy::Future<core::num>> /* = asy::Future<core::num> */ f2, self::F3<asy::Future<core::String>> /* = asy::Future<core::String> */ f3, self::F4<asy::Future<core::int>> /* = asy::Future<core::int> */ f4) → dynamic async /* futureValueType= dynamic */ {
static method test(self::E1 /* = asy::Future<core::int> */ e1, self::E2<asy::Future<core::String>> /* = asy::Future<core::String> */ e2, self::E3 /* = FutureOr<core::bool>*/ e3, self::E4<asy::Future<core::double>> /* = asy::Future<core::double> */ e4, self::E5<core::Object> /* = core::Object */ e5object, self::E5<asy::Future<core::num>> /* = asy::Future<core::num> */ e5future, self::F1 /* = asy::Future<core::int> */ f1, self::F2<asy::Future<core::num>> /* = asy::Future<core::num> */ f2, self::F3<asy::Future<core::String>> /* = asy::Future<core::String> */ f3, self::F4<asy::Future<core::int>> /* = asy::Future<core::int> */ f4) → dynamic async /* emittedValueType= dynamic */ {
await invalid-expression "pkg/front_end/testcases/extension_types/issue53207.dart:21:9: Error: The 'await' expression can't be used for an expression with an extension type that is not a subtype of 'Future'.
await e1; // Error.
^" in e1 /* runtimeCheckType= asy::Future<self::E1 /* = asy::Future<core::int> */> */ ;

View file

@ -131,7 +131,7 @@ static extension-type-member method F4|constructor#<X extends asy::Future<core::
}
static extension-type-member method F4|constructor#_#new#tearOff<X extends asy::Future<core::num>>(self::F4|constructor#_#new#tearOff::X foo) → self::F4<self::F4|constructor#_#new#tearOff::X> /* = self::F4|constructor#_#new#tearOff::X */
return self::F4|constructor#<self::F4|constructor#_#new#tearOff::X>(foo);
static method test(self::E1 /* = asy::Future<core::int> */ e1, self::E2<asy::Future<core::String>> /* = asy::Future<core::String> */ e2, self::E3 /* = FutureOr<core::bool>*/ e3, self::E4<asy::Future<core::double>> /* = asy::Future<core::double> */ e4, self::E5<core::Object> /* = core::Object */ e5object, self::E5<asy::Future<core::num>> /* = asy::Future<core::num> */ e5future, self::F1 /* = asy::Future<core::int> */ f1, self::F2<asy::Future<core::num>> /* = asy::Future<core::num> */ f2, self::F3<asy::Future<core::String>> /* = asy::Future<core::String> */ f3, self::F4<asy::Future<core::int>> /* = asy::Future<core::int> */ f4) → dynamic async /* futureValueType= dynamic */ {
static method test(self::E1 /* = asy::Future<core::int> */ e1, self::E2<asy::Future<core::String>> /* = asy::Future<core::String> */ e2, self::E3 /* = FutureOr<core::bool>*/ e3, self::E4<asy::Future<core::double>> /* = asy::Future<core::double> */ e4, self::E5<core::Object> /* = core::Object */ e5object, self::E5<asy::Future<core::num>> /* = asy::Future<core::num> */ e5future, self::F1 /* = asy::Future<core::int> */ f1, self::F2<asy::Future<core::num>> /* = asy::Future<core::num> */ f2, self::F3<asy::Future<core::String>> /* = asy::Future<core::String> */ f3, self::F4<asy::Future<core::int>> /* = asy::Future<core::int> */ f4) → dynamic async /* emittedValueType= dynamic */ {
await invalid-expression "pkg/front_end/testcases/extension_types/issue53207.dart:21:9: Error: The 'await' expression can't be used for an expression with an extension type that is not a subtype of 'Future'.
await e1; // Error.
^" in e1 /* runtimeCheckType= asy::Future<self::E1 /* = asy::Future<core::int> */> */ ;

View file

@ -27,13 +27,13 @@ static extension-type-member method MyStream|constructor#<T extends core::Object
}
static extension-type-member method MyStream|constructor#_#new#tearOff<T extends core::Object? = dynamic>(asy::Stream<self::MyStream|constructor#_#new#tearOff::T%> it) → self::MyStream<self::MyStream|constructor#_#new#tearOff::T%> /* = asy::Stream<self::MyStream|constructor#_#new#tearOff::T%> */
return self::MyStream|constructor#<self::MyStream|constructor#_#new#tearOff::T%>(it);
static method method1(self::MyList<core::int> /* = core::List<core::int> */ list, self::MyStream<core::int> /* = asy::Stream<core::int> */ stream) → dynamic async /* futureValueType= dynamic */ {
static method method1(self::MyList<core::int> /* = core::List<core::int> */ list, self::MyStream<core::int> /* = asy::Stream<core::int> */ stream) → dynamic async /* emittedValueType= dynamic */ {
for (core::int a in list) {
}
await for (core::int a in stream) {
}
}
static method method2(self::MyList<(core::int, core::String)> /* = core::List<(core::int, core::String)> */ list, self::MyStream<(core::int, core::String)> /* = asy::Stream<(core::int, core::String)> */ stream) → dynamic async /* futureValueType= dynamic */ {
static method method2(self::MyList<(core::int, core::String)> /* = core::List<(core::int, core::String)> */ list, self::MyStream<(core::int, core::String)> /* = asy::Stream<(core::int, core::String)> */ stream) → dynamic async /* emittedValueType= dynamic */ {
for (final(core::int, core::String) #t1 in list) {
hoisted core::int a;
hoisted core::String b;

View file

@ -27,7 +27,7 @@ static extension-type-member method MyStream|constructor#<T extends core::Object
}
static extension-type-member method MyStream|constructor#_#new#tearOff<T extends core::Object? = dynamic>(asy::Stream<self::MyStream|constructor#_#new#tearOff::T%> it) → self::MyStream<self::MyStream|constructor#_#new#tearOff::T%> /* = asy::Stream<self::MyStream|constructor#_#new#tearOff::T%> */
return self::MyStream|constructor#<self::MyStream|constructor#_#new#tearOff::T%>(it);
static method method1(self::MyList<core::int> /* = core::List<core::int> */ list, self::MyStream<core::int> /* = asy::Stream<core::int> */ stream) → dynamic async /* futureValueType= dynamic */ {
static method method1(self::MyList<core::int> /* = core::List<core::int> */ list, self::MyStream<core::int> /* = asy::Stream<core::int> */ stream) → dynamic async /* emittedValueType= dynamic */ {
{
synthesized core::Iterator<core::int> :sync-for-iterator = list.{core::Iterable::iterator}{core::Iterator<core::int>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@ -48,7 +48,7 @@ static method method1(self::MyList<core::int> /* = core::List<core::int> */ list
await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
}
}
static method method2(self::MyList<(core::int, core::String)> /* = core::List<(core::int, core::String)> */ list, self::MyStream<(core::int, core::String)> /* = asy::Stream<(core::int, core::String)> */ stream) → dynamic async /* futureValueType= dynamic */ {
static method method2(self::MyList<(core::int, core::String)> /* = core::List<(core::int, core::String)> */ list, self::MyStream<(core::int, core::String)> /* = asy::Stream<(core::int, core::String)> */ stream) → dynamic async /* emittedValueType= dynamic */ {
{
synthesized core::Iterator<(core::int, core::String)> :sync-for-iterator = list.{core::Iterable::iterator}{core::Iterator<(core::int, core::String)>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {

View file

@ -27,13 +27,13 @@ static extension-type-member method MyStream|constructor#<T extends core::Object
}
static extension-type-member method MyStream|constructor#_#new#tearOff<T extends core::Object? = dynamic>(asy::Stream<self::MyStream|constructor#_#new#tearOff::T%> it) → self::MyStream<self::MyStream|constructor#_#new#tearOff::T%> /* = asy::Stream<self::MyStream|constructor#_#new#tearOff::T%> */
return self::MyStream|constructor#<self::MyStream|constructor#_#new#tearOff::T%>(it);
static method method1(self::MyList<core::int> /* = core::List<core::int> */ list, self::MyStream<core::int> /* = asy::Stream<core::int> */ stream) → dynamic async /* futureValueType= dynamic */ {
static method method1(self::MyList<core::int> /* = core::List<core::int> */ list, self::MyStream<core::int> /* = asy::Stream<core::int> */ stream) → dynamic async /* emittedValueType= dynamic */ {
for (core::int a in list) {
}
await for (core::int a in stream) {
}
}
static method method2(self::MyList<(core::int, core::String)> /* = core::List<(core::int, core::String)> */ list, self::MyStream<(core::int, core::String)> /* = asy::Stream<(core::int, core::String)> */ stream) → dynamic async /* futureValueType= dynamic */ {
static method method2(self::MyList<(core::int, core::String)> /* = core::List<(core::int, core::String)> */ list, self::MyStream<(core::int, core::String)> /* = asy::Stream<(core::int, core::String)> */ stream) → dynamic async /* emittedValueType= dynamic */ {
for (final(core::int, core::String) #t1 in list) {
hoisted core::int a;
hoisted core::String b;

View file

@ -27,13 +27,13 @@ static extension-type-member method MyStream|constructor#<T extends core::Object
}
static extension-type-member method MyStream|constructor#_#new#tearOff<T extends core::Object? = dynamic>(asy::Stream<self::MyStream|constructor#_#new#tearOff::T%> it) → self::MyStream<self::MyStream|constructor#_#new#tearOff::T%> /* = asy::Stream<self::MyStream|constructor#_#new#tearOff::T%> */
return self::MyStream|constructor#<self::MyStream|constructor#_#new#tearOff::T%>(it);
static method method1(self::MyList<core::int> /* = core::List<core::int> */ list, self::MyStream<core::int> /* = asy::Stream<core::int> */ stream) → dynamic async /* futureValueType= dynamic */ {
static method method1(self::MyList<core::int> /* = core::List<core::int> */ list, self::MyStream<core::int> /* = asy::Stream<core::int> */ stream) → dynamic async /* emittedValueType= dynamic */ {
for (core::int a in list) {
}
await for (core::int a in stream) {
}
}
static method method2(self::MyList<(core::int, core::String)> /* = core::List<(core::int, core::String)> */ list, self::MyStream<(core::int, core::String)> /* = asy::Stream<(core::int, core::String)> */ stream) → dynamic async /* futureValueType= dynamic */ {
static method method2(self::MyList<(core::int, core::String)> /* = core::List<(core::int, core::String)> */ list, self::MyStream<(core::int, core::String)> /* = asy::Stream<(core::int, core::String)> */ stream) → dynamic async /* emittedValueType= dynamic */ {
for (final(core::int, core::String) #t1 in list) {
hoisted core::int a;
hoisted core::String b;

View file

@ -27,7 +27,7 @@ static extension-type-member method MyStream|constructor#<T extends core::Object
}
static extension-type-member method MyStream|constructor#_#new#tearOff<T extends core::Object? = dynamic>(asy::Stream<self::MyStream|constructor#_#new#tearOff::T%> it) → self::MyStream<self::MyStream|constructor#_#new#tearOff::T%> /* = asy::Stream<self::MyStream|constructor#_#new#tearOff::T%> */
return self::MyStream|constructor#<self::MyStream|constructor#_#new#tearOff::T%>(it);
static method method1(self::MyList<core::int> /* = core::List<core::int> */ list, self::MyStream<core::int> /* = asy::Stream<core::int> */ stream) → dynamic async /* futureValueType= dynamic */ {
static method method1(self::MyList<core::int> /* = core::List<core::int> */ list, self::MyStream<core::int> /* = asy::Stream<core::int> */ stream) → dynamic async /* emittedValueType= dynamic */ {
{
synthesized core::Iterator<core::int> :sync-for-iterator = list.{core::Iterable::iterator}{core::Iterator<core::int>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
@ -48,7 +48,7 @@ static method method1(self::MyList<core::int> /* = core::List<core::int> */ list
await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
}
}
static method method2(self::MyList<(core::int, core::String)> /* = core::List<(core::int, core::String)> */ list, self::MyStream<(core::int, core::String)> /* = asy::Stream<(core::int, core::String)> */ stream) → dynamic async /* futureValueType= dynamic */ {
static method method2(self::MyList<(core::int, core::String)> /* = core::List<(core::int, core::String)> */ list, self::MyStream<(core::int, core::String)> /* = asy::Stream<(core::int, core::String)> */ stream) → dynamic async /* emittedValueType= dynamic */ {
{
synthesized core::Iterator<(core::int, core::String)> :sync-for-iterator = list.{core::Iterable::iterator}{core::Iterator<(core::int, core::String)>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {

View file

@ -26,10 +26,10 @@ static extension-type-member method MyStream|constructor#<T extends core::Object
static extension-type-member method MyStream|constructor#_#new#tearOff<T extends core::Object? = dynamic>(asy::Stream<self::MyStream|constructor#_#new#tearOff::T%> it) → self::MyStream<self::MyStream|constructor#_#new#tearOff::T%> /* = asy::Stream<self::MyStream|constructor#_#new#tearOff::T%> */
return self::MyStream|constructor#<self::MyStream|constructor#_#new#tearOff::T%>(it);
static method method(self::MyList<core::int> /* = core::List<core::int> */ list, self::MyStream<core::String> /* = asy::Stream<core::String> */ stream) → dynamic {
() → core::Iterable<core::int> a = () → core::Iterable<core::int> sync* {
() → core::Iterable<core::int> a = () → core::Iterable<core::int> sync* /* emittedValueType= core::int */ {
yield* list;
};
() → asy::Stream<core::String> b = () → asy::Stream<core::String> async* {
() → asy::Stream<core::String> b = () → asy::Stream<core::String> async* /* emittedValueType= core::String */ {
yield* stream;
};
}

View file

@ -26,10 +26,10 @@ static extension-type-member method MyStream|constructor#<T extends core::Object
static extension-type-member method MyStream|constructor#_#new#tearOff<T extends core::Object? = dynamic>(asy::Stream<self::MyStream|constructor#_#new#tearOff::T%> it) → self::MyStream<self::MyStream|constructor#_#new#tearOff::T%> /* = asy::Stream<self::MyStream|constructor#_#new#tearOff::T%> */
return self::MyStream|constructor#<self::MyStream|constructor#_#new#tearOff::T%>(it);
static method method(self::MyList<core::int> /* = core::List<core::int> */ list, self::MyStream<core::String> /* = asy::Stream<core::String> */ stream) → dynamic {
() → core::Iterable<core::int> a = () → core::Iterable<core::int> sync* {
() → core::Iterable<core::int> a = () → core::Iterable<core::int> sync* /* emittedValueType= core::int */ {
yield* list;
};
() → asy::Stream<core::String> b = () → asy::Stream<core::String> async* {
() → asy::Stream<core::String> b = () → asy::Stream<core::String> async* /* emittedValueType= core::String */ {
yield* stream;
};
}

View file

@ -26,10 +26,10 @@ static extension-type-member method MyStream|constructor#<T extends core::Object
static extension-type-member method MyStream|constructor#_#new#tearOff<T extends core::Object? = dynamic>(asy::Stream<self::MyStream|constructor#_#new#tearOff::T%> it) → self::MyStream<self::MyStream|constructor#_#new#tearOff::T%> /* = asy::Stream<self::MyStream|constructor#_#new#tearOff::T%> */
return self::MyStream|constructor#<self::MyStream|constructor#_#new#tearOff::T%>(it);
static method method(self::MyList<core::int> /* = core::List<core::int> */ list, self::MyStream<core::String> /* = asy::Stream<core::String> */ stream) → dynamic {
() → core::Iterable<core::int> a = () → core::Iterable<core::int> sync* {
() → core::Iterable<core::int> a = () → core::Iterable<core::int> sync* /* emittedValueType= core::int */ {
yield* list;
};
() → asy::Stream<core::String> b = () → asy::Stream<core::String> async* {
() → asy::Stream<core::String> b = () → asy::Stream<core::String> async* /* emittedValueType= core::String */ {
yield* stream;
};
}

View file

@ -26,10 +26,10 @@ static extension-type-member method MyStream|constructor#<T extends core::Object
static extension-type-member method MyStream|constructor#_#new#tearOff<T extends core::Object? = dynamic>(asy::Stream<self::MyStream|constructor#_#new#tearOff::T%> it) → self::MyStream<self::MyStream|constructor#_#new#tearOff::T%> /* = asy::Stream<self::MyStream|constructor#_#new#tearOff::T%> */
return self::MyStream|constructor#<self::MyStream|constructor#_#new#tearOff::T%>(it);
static method method(self::MyList<core::int> /* = core::List<core::int> */ list, self::MyStream<core::String> /* = asy::Stream<core::String> */ stream) → dynamic {
() → core::Iterable<core::int> a = () → core::Iterable<core::int> sync* {
() → core::Iterable<core::int> a = () → core::Iterable<core::int> sync* /* emittedValueType= core::int */ {
yield* list;
};
() → asy::Stream<core::String> b = () → asy::Stream<core::String> async* {
() → asy::Stream<core::String> b = () → asy::Stream<core::String> async* /* emittedValueType= core::String */ {
yield* stream;
};
}

View file

@ -26,10 +26,10 @@ static extension-type-member method MyStream|constructor#<T extends core::Object
static extension-type-member method MyStream|constructor#_#new#tearOff<T extends core::Object? = dynamic>(asy::Stream<self::MyStream|constructor#_#new#tearOff::T%> it) → self::MyStream<self::MyStream|constructor#_#new#tearOff::T%> /* = asy::Stream<self::MyStream|constructor#_#new#tearOff::T%> */
return self::MyStream|constructor#<self::MyStream|constructor#_#new#tearOff::T%>(it);
static method method(self::MyList<core::int> /* = core::List<core::int> */ list, self::MyStream<core::String> /* = asy::Stream<core::String> */ stream) → dynamic {
() → core::Iterable<core::int> a = () → core::Iterable<core::int> sync* {
() → core::Iterable<core::int> a = () → core::Iterable<core::int> sync* /* emittedValueType= core::int */ {
yield* list;
};
() → asy::Stream<core::String> b = () → asy::Stream<core::String> async* {
() → asy::Stream<core::String> b = () → asy::Stream<core::String> async* /* emittedValueType= core::String */ {
yield* stream;
};
}

View file

@ -10,13 +10,13 @@ extension Extension on core::int {
method asyncStarMethod = self::Extension|asyncStarMethod;
method tearoff asyncStarMethod = self::Extension|get#asyncStarMethod;
}
static extension-member method Extension|syncStarMethod(lowered final core::int #this) → dynamic sync* {}
static extension-member method Extension|syncStarMethod(lowered final core::int #this) → dynamic sync* /* emittedValueType= dynamic */ {}
static extension-member method Extension|get#syncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|syncStarMethod(#this);
static extension-member method Extension|asyncMethod(lowered final core::int #this) → dynamic async /* futureValueType= dynamic */ {}
static extension-member method Extension|asyncMethod(lowered final core::int #this) → dynamic async /* emittedValueType= dynamic */ {}
static extension-member method Extension|get#asyncMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncMethod(#this);
static extension-member method Extension|asyncStarMethod(lowered final core::int #this) → dynamic async* {}
static extension-member method Extension|asyncStarMethod(lowered final core::int #this) → dynamic async* /* emittedValueType= dynamic */ {}
static extension-member method Extension|get#asyncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncStarMethod(#this);
static method main() → dynamic {

View file

@ -10,13 +10,13 @@ extension Extension on core::int {
method asyncStarMethod = self::Extension|asyncStarMethod;
method tearoff asyncStarMethod = self::Extension|get#asyncStarMethod;
}
static extension-member method Extension|syncStarMethod(lowered final core::int #this) → dynamic sync* {}
static extension-member method Extension|syncStarMethod(lowered final core::int #this) → dynamic sync* /* emittedValueType= dynamic */ {}
static extension-member method Extension|get#syncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|syncStarMethod(#this);
static extension-member method Extension|asyncMethod(lowered final core::int #this) → dynamic async /* futureValueType= dynamic */ {}
static extension-member method Extension|asyncMethod(lowered final core::int #this) → dynamic async /* emittedValueType= dynamic */ {}
static extension-member method Extension|get#asyncMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncMethod(#this);
static extension-member method Extension|asyncStarMethod(lowered final core::int #this) → dynamic async* {}
static extension-member method Extension|asyncStarMethod(lowered final core::int #this) → dynamic async* /* emittedValueType= dynamic */ {}
static extension-member method Extension|get#asyncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncStarMethod(#this);
static method main() → dynamic {

View file

@ -10,13 +10,13 @@ extension Extension on core::int {
method asyncStarMethod = self::Extension|asyncStarMethod;
method tearoff asyncStarMethod = self::Extension|get#asyncStarMethod;
}
static extension-member method Extension|syncStarMethod(lowered final core::int #this) → dynamic sync* {}
static extension-member method Extension|syncStarMethod(lowered final core::int #this) → dynamic sync* /* emittedValueType= dynamic */ {}
static extension-member method Extension|get#syncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|syncStarMethod(#this);
static extension-member method Extension|asyncMethod(lowered final core::int #this) → dynamic async /* futureValueType= dynamic */ {}
static extension-member method Extension|asyncMethod(lowered final core::int #this) → dynamic async /* emittedValueType= dynamic */ {}
static extension-member method Extension|get#asyncMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncMethod(#this);
static extension-member method Extension|asyncStarMethod(lowered final core::int #this) → dynamic async* {}
static extension-member method Extension|asyncStarMethod(lowered final core::int #this) → dynamic async* /* emittedValueType= dynamic */ {}
static extension-member method Extension|get#asyncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncStarMethod(#this);
static method main() → dynamic {

View file

@ -10,13 +10,13 @@ extension Extension on core::int {
method asyncStarMethod = self::Extension|asyncStarMethod;
method tearoff asyncStarMethod = self::Extension|get#asyncStarMethod;
}
static extension-member method Extension|syncStarMethod(lowered final core::int #this) → dynamic sync* {}
static extension-member method Extension|syncStarMethod(lowered final core::int #this) → dynamic sync* /* emittedValueType= dynamic */ {}
static extension-member method Extension|get#syncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|syncStarMethod(#this);
static extension-member method Extension|asyncMethod(lowered final core::int #this) → dynamic async /* futureValueType= dynamic */ {}
static extension-member method Extension|asyncMethod(lowered final core::int #this) → dynamic async /* emittedValueType= dynamic */ {}
static extension-member method Extension|get#asyncMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncMethod(#this);
static extension-member method Extension|asyncStarMethod(lowered final core::int #this) → dynamic async* {}
static extension-member method Extension|asyncStarMethod(lowered final core::int #this) → dynamic async* /* emittedValueType= dynamic */ {}
static extension-member method Extension|get#asyncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncStarMethod(#this);
static method main() → dynamic {

View file

@ -10,13 +10,13 @@ extension Extension on core::int {
method asyncStarMethod = self::Extension|asyncStarMethod;
method tearoff asyncStarMethod = self::Extension|get#asyncStarMethod;
}
static extension-member method Extension|syncStarMethod(lowered final core::int #this) → dynamic sync* {}
static extension-member method Extension|syncStarMethod(lowered final core::int #this) → dynamic sync* /* emittedValueType= dynamic */ {}
static extension-member method Extension|get#syncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|syncStarMethod(#this);
static extension-member method Extension|asyncMethod(lowered final core::int #this) → dynamic async /* futureValueType= dynamic */ {}
static extension-member method Extension|asyncMethod(lowered final core::int #this) → dynamic async /* emittedValueType= dynamic */ {}
static extension-member method Extension|get#asyncMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncMethod(#this);
static extension-member method Extension|asyncStarMethod(lowered final core::int #this) → dynamic async* {}
static extension-member method Extension|asyncStarMethod(lowered final core::int #this) → dynamic async* /* emittedValueType= dynamic */ {}
static extension-member method Extension|get#asyncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncStarMethod(#this);
static method main() → dynamic {

View file

@ -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 /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= 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));

View file

@ -13,7 +13,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 async /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= dynamic */ {
await LoadLibrary(prefix);
self::expect(0, let final core::Object* #t1 = CheckLibraryIsLoaded(prefix) in def::Extension|staticField);
self::expect(0, let final core::Object* #t2 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(0));

View file

@ -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 /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= 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));

View file

@ -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 /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= 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));

View file

@ -13,7 +13,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 async /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= dynamic */ {
await LoadLibrary(prefix);
self::expect(0, let final core::Object* #t1 = CheckLibraryIsLoaded(prefix) in def::Extension|staticField);
self::expect(0, let final core::Object* #t2 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(0));

View file

@ -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 /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= 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);

View file

@ -5,7 +5,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 async /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= dynamic */ {
await LoadLibrary(prefix);
self::expect(0, let final core::Object* #t1 = CheckLibraryIsLoaded(prefix) in def::topLevelField);
self::expect(42, let final core::Object* #t2 = CheckLibraryIsLoaded(prefix) in def::topLevelField = 42);

View file

@ -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 /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= 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);

View file

@ -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 /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= 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);

View file

@ -5,7 +5,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 async /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= dynamic */ {
await LoadLibrary(prefix);
self::expect(0, let final core::Object* #t1 = CheckLibraryIsLoaded(prefix) in def::topLevelField);
self::expect(42, let final core::Object* #t2 = CheckLibraryIsLoaded(prefix) in def::topLevelField = 42);

View file

@ -6,28 +6,28 @@ import "dart:core" as core;
import "dart:async";
static field core::List<core::String> stringList = <core::String>["bar"];
static method asyncString() → asy::Future<core::String> async /* futureValueType= core::String */ {
static method asyncString() → asy::Future<core::String> async /* emittedValueType= core::String */ {
return "foo";
}
static method asyncString2() → asy::Future<core::String> async /* futureValueType= core::String */ {
static method asyncString2() → asy::Future<core::String> async /* emittedValueType= core::String */ {
return self::asyncString();
}
static method syncStarString() → core::Iterable<core::String> sync* {
static method syncStarString() → core::Iterable<core::String> sync* /* emittedValueType= core::String */ {
yield "foo";
yield* self::syncStarString2();
yield* self::stringList;
}
static method syncStarString2() → core::Iterable<core::String> sync* {
static method syncStarString2() → core::Iterable<core::String> sync* /* emittedValueType= core::String */ {
yield "foo";
}
static method asyncStarString() → asy::Stream<core::String> async* {
static method asyncStarString() → asy::Stream<core::String> async* /* emittedValueType= core::String */ {
yield "foo";
yield* self::asyncStarString2();
yield await self::asyncString();
}
static method asyncStarString2() → asy::Stream<core::String> async* {
static method asyncStarString2() → asy::Stream<core::String> async* /* emittedValueType= core::String */ {
yield "bar";
}
static method main() → dynamic async /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= dynamic */ {
core::String str = await self::asyncString();
}

View file

@ -6,28 +6,28 @@ import "dart:core" as core;
import "dart:async";
static field core::List<core::String> stringList = core::_GrowableList::_literal1<core::String>("bar");
static method asyncString() → asy::Future<core::String> async /* futureValueType= core::String */ {
static method asyncString() → asy::Future<core::String> async /* emittedValueType= core::String */ {
return "foo";
}
static method asyncString2() → asy::Future<core::String> async /* futureValueType= core::String */ {
static method asyncString2() → asy::Future<core::String> async /* emittedValueType= core::String */ {
return self::asyncString();
}
static method syncStarString() → core::Iterable<core::String> sync* {
static method syncStarString() → core::Iterable<core::String> sync* /* emittedValueType= core::String */ {
yield "foo";
yield* self::syncStarString2();
yield* self::stringList;
}
static method syncStarString2() → core::Iterable<core::String> sync* {
static method syncStarString2() → core::Iterable<core::String> sync* /* emittedValueType= core::String */ {
yield "foo";
}
static method asyncStarString() → asy::Stream<core::String> async* {
static method asyncStarString() → asy::Stream<core::String> async* /* emittedValueType= core::String */ {
yield "foo";
yield* self::asyncStarString2();
yield await self::asyncString();
}
static method asyncStarString2() → asy::Stream<core::String> async* {
static method asyncStarString2() → asy::Stream<core::String> async* /* emittedValueType= core::String */ {
yield "bar";
}
static method main() → dynamic async /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= dynamic */ {
core::String str = await self::asyncString();
}

View file

@ -6,28 +6,28 @@ import "dart:core" as core;
import "dart:async";
static field core::List<core::String> stringList = <core::String>["bar"];
static method asyncString() → asy::Future<core::String> async /* futureValueType= core::String */ {
static method asyncString() → asy::Future<core::String> async /* emittedValueType= core::String */ {
return "foo";
}
static method asyncString2() → asy::Future<core::String> async /* futureValueType= core::String */ {
static method asyncString2() → asy::Future<core::String> async /* emittedValueType= core::String */ {
return self::asyncString();
}
static method syncStarString() → core::Iterable<core::String> sync* {
static method syncStarString() → core::Iterable<core::String> sync* /* emittedValueType= core::String */ {
yield "foo";
yield* self::syncStarString2();
yield* self::stringList;
}
static method syncStarString2() → core::Iterable<core::String> sync* {
static method syncStarString2() → core::Iterable<core::String> sync* /* emittedValueType= core::String */ {
yield "foo";
}
static method asyncStarString() → asy::Stream<core::String> async* {
static method asyncStarString() → asy::Stream<core::String> async* /* emittedValueType= core::String */ {
yield "foo";
yield* self::asyncStarString2();
yield await self::asyncString();
}
static method asyncStarString2() → asy::Stream<core::String> async* {
static method asyncStarString2() → asy::Stream<core::String> async* /* emittedValueType= core::String */ {
yield "bar";
}
static method main() → dynamic async /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= dynamic */ {
core::String str = await self::asyncString();
}

View file

@ -6,28 +6,28 @@ import "dart:core" as core;
import "dart:async";
static field core::List<core::String> stringList = <core::String>["bar"];
static method asyncString() → asy::Future<core::String> async /* futureValueType= core::String */ {
static method asyncString() → asy::Future<core::String> async /* emittedValueType= core::String */ {
return "foo";
}
static method asyncString2() → asy::Future<core::String> async /* futureValueType= core::String */ {
static method asyncString2() → asy::Future<core::String> async /* emittedValueType= core::String */ {
return self::asyncString();
}
static method syncStarString() → core::Iterable<core::String> sync* {
static method syncStarString() → core::Iterable<core::String> sync* /* emittedValueType= core::String */ {
yield "foo";
yield* self::syncStarString2();
yield* self::stringList;
}
static method syncStarString2() → core::Iterable<core::String> sync* {
static method syncStarString2() → core::Iterable<core::String> sync* /* emittedValueType= core::String */ {
yield "foo";
}
static method asyncStarString() → asy::Stream<core::String> async* {
static method asyncStarString() → asy::Stream<core::String> async* /* emittedValueType= core::String */ {
yield "foo";
yield* self::asyncStarString2();
yield await self::asyncString();
}
static method asyncStarString2() → asy::Stream<core::String> async* {
static method asyncStarString2() → asy::Stream<core::String> async* /* emittedValueType= core::String */ {
yield "bar";
}
static method main() → dynamic async /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= dynamic */ {
core::String str = await self::asyncString();
}

View file

@ -6,28 +6,28 @@ import "dart:core" as core;
import "dart:async";
static field core::List<core::String> stringList = core::_GrowableList::_literal1<core::String>("bar");
static method asyncString() → asy::Future<core::String> async /* futureValueType= core::String */ {
static method asyncString() → asy::Future<core::String> async /* emittedValueType= core::String */ {
return "foo";
}
static method asyncString2() → asy::Future<core::String> async /* futureValueType= core::String */ {
static method asyncString2() → asy::Future<core::String> async /* emittedValueType= core::String */ {
return self::asyncString();
}
static method syncStarString() → core::Iterable<core::String> sync* {
static method syncStarString() → core::Iterable<core::String> sync* /* emittedValueType= core::String */ {
yield "foo";
yield* self::syncStarString2();
yield* self::stringList;
}
static method syncStarString2() → core::Iterable<core::String> sync* {
static method syncStarString2() → core::Iterable<core::String> sync* /* emittedValueType= core::String */ {
yield "foo";
}
static method asyncStarString() → asy::Stream<core::String> async* {
static method asyncStarString() → asy::Stream<core::String> async* /* emittedValueType= core::String */ {
yield "foo";
yield* self::asyncStarString2();
yield await self::asyncString();
}
static method asyncStarString2() → asy::Stream<core::String> async* {
static method asyncStarString2() → asy::Stream<core::String> async* /* emittedValueType= core::String */ {
yield "bar";
}
static method main() → dynamic async /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= dynamic */ {
core::String str = await self::asyncString();
}

View file

@ -5,7 +5,7 @@ import "dart:core" as core;
import "dart:async";
static method main() → dynamic async /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= dynamic */ {
await self::returnsString();
await self::returnsFutureOrString();
await self::returnsAwaitFutureOrString();
@ -17,27 +17,27 @@ static method main() → dynamic async /* futureValueType= dynamic */ {
await self::returnsFutureObject();
await self::returnsAwaitFutureObject() /* runtimeCheckType= asy::Future<core::Object> */ ;
}
static method returnsString() → asy::Future<core::String> async /* futureValueType= core::String */
static method returnsString() → asy::Future<core::String> async /* emittedValueType= core::String */
return "a";
static method returnsFutureOrString() → asy::Future<core::String> async /* futureValueType= core::String */
static method returnsFutureOrString() → asy::Future<core::String> async /* emittedValueType= core::String */
return self::getFutureOr<core::String>("a");
static method returnsAwaitFutureOrString() → asy::Future<core::String> async /* futureValueType= core::String */
static method returnsAwaitFutureOrString() → asy::Future<core::String> async /* emittedValueType= core::String */
return await self::getFutureOr<core::String>("a") /* runtimeCheckType= asy::Future<core::String> */ ;
static method returnsFutureString() → asy::Future<core::String> async /* futureValueType= core::String */
static method returnsFutureString() → asy::Future<core::String> async /* emittedValueType= core::String */
return self::getFuture<core::String>("a");
static method returnsAwaitFutureString() → FutureOr<core::String> async /* futureValueType= core::String */
static method returnsAwaitFutureString() → FutureOr<core::String> async /* emittedValueType= core::String */
return await self::getFuture<core::String>("a");
static method returnsObject() → asy::Future<core::Object> async /* futureValueType= core::Object */
static method returnsObject() → asy::Future<core::Object> async /* emittedValueType= core::Object */
return new core::Object::•();
static method returnsFutureOrObject() → asy::Future<core::Object> async /* futureValueType= core::Object */
static method returnsFutureOrObject() → asy::Future<core::Object> async /* emittedValueType= core::Object */
return self::getFutureOr<core::Object>(new core::Object::•());
static method returnsAwaitFutureOrObject() → asy::Future<core::Object> async /* futureValueType= core::Object */
static method returnsAwaitFutureOrObject() → asy::Future<core::Object> async /* emittedValueType= core::Object */
return await self::getFutureOr<core::Object>(new core::Object::•()) /* runtimeCheckType= asy::Future<core::Object> */ ;
static method returnsFutureObject() → asy::Future<core::Object> async /* futureValueType= core::Object */
static method returnsFutureObject() → asy::Future<core::Object> async /* emittedValueType= core::Object */
return self::getFuture<core::Object>(new core::Object::•());
static method returnsAwaitFutureObject() → FutureOr<core::Object> async /* futureValueType= core::Object */
static method returnsAwaitFutureObject() → FutureOr<core::Object> async /* emittedValueType= core::Object */
return await self::getFuture<core::Object>(new core::Object::•());
static method getFutureOr<T extends core::Object? = dynamic>(self::getFutureOr::T% v) → FutureOr<self::getFutureOr::T%> async /* futureValueType= self::getFutureOr::T% */
static method getFutureOr<T extends core::Object? = dynamic>(self::getFutureOr::T% v) → FutureOr<self::getFutureOr::T%> async /* emittedValueType= self::getFutureOr::T% */
return v;
static method getFuture<T extends core::Object? = dynamic>(self::getFuture::T% v) → asy::Future<self::getFuture::T%> async /* futureValueType= self::getFuture::T% */
static method getFuture<T extends core::Object? = dynamic>(self::getFuture::T% v) → asy::Future<self::getFuture::T%> async /* emittedValueType= self::getFuture::T% */
return v;

View file

@ -5,7 +5,7 @@ import "dart:core" as core;
import "dart:async";
static method main() → dynamic async /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= dynamic */ {
await self::returnsString();
await self::returnsFutureOrString();
await self::returnsAwaitFutureOrString();
@ -17,27 +17,27 @@ static method main() → dynamic async /* futureValueType= dynamic */ {
await self::returnsFutureObject();
await self::returnsAwaitFutureObject() /* runtimeCheckType= asy::Future<core::Object> */ ;
}
static method returnsString() → asy::Future<core::String> async /* futureValueType= core::String */
static method returnsString() → asy::Future<core::String> async /* emittedValueType= core::String */
return "a";
static method returnsFutureOrString() → asy::Future<core::String> async /* futureValueType= core::String */
static method returnsFutureOrString() → asy::Future<core::String> async /* emittedValueType= core::String */
return self::getFutureOr<core::String>("a");
static method returnsAwaitFutureOrString() → asy::Future<core::String> async /* futureValueType= core::String */
static method returnsAwaitFutureOrString() → asy::Future<core::String> async /* emittedValueType= core::String */
return await self::getFutureOr<core::String>("a") /* runtimeCheckType= asy::Future<core::String> */ ;
static method returnsFutureString() → asy::Future<core::String> async /* futureValueType= core::String */
static method returnsFutureString() → asy::Future<core::String> async /* emittedValueType= core::String */
return self::getFuture<core::String>("a");
static method returnsAwaitFutureString() → FutureOr<core::String> async /* futureValueType= core::String */
static method returnsAwaitFutureString() → FutureOr<core::String> async /* emittedValueType= core::String */
return await self::getFuture<core::String>("a");
static method returnsObject() → asy::Future<core::Object> async /* futureValueType= core::Object */
static method returnsObject() → asy::Future<core::Object> async /* emittedValueType= core::Object */
return new core::Object::•();
static method returnsFutureOrObject() → asy::Future<core::Object> async /* futureValueType= core::Object */
static method returnsFutureOrObject() → asy::Future<core::Object> async /* emittedValueType= core::Object */
return self::getFutureOr<core::Object>(new core::Object::•());
static method returnsAwaitFutureOrObject() → asy::Future<core::Object> async /* futureValueType= core::Object */
static method returnsAwaitFutureOrObject() → asy::Future<core::Object> async /* emittedValueType= core::Object */
return await self::getFutureOr<core::Object>(new core::Object::•()) /* runtimeCheckType= asy::Future<core::Object> */ ;
static method returnsFutureObject() → asy::Future<core::Object> async /* futureValueType= core::Object */
static method returnsFutureObject() → asy::Future<core::Object> async /* emittedValueType= core::Object */
return self::getFuture<core::Object>(new core::Object::•());
static method returnsAwaitFutureObject() → FutureOr<core::Object> async /* futureValueType= core::Object */
static method returnsAwaitFutureObject() → FutureOr<core::Object> async /* emittedValueType= core::Object */
return await self::getFuture<core::Object>(new core::Object::•());
static method getFutureOr<T extends core::Object? = dynamic>(self::getFutureOr::T% v) → FutureOr<self::getFutureOr::T%> async /* futureValueType= self::getFutureOr::T% */
static method getFutureOr<T extends core::Object? = dynamic>(self::getFutureOr::T% v) → FutureOr<self::getFutureOr::T%> async /* emittedValueType= self::getFutureOr::T% */
return v;
static method getFuture<T extends core::Object? = dynamic>(self::getFuture::T% v) → asy::Future<self::getFuture::T%> async /* futureValueType= self::getFuture::T% */
static method getFuture<T extends core::Object? = dynamic>(self::getFuture::T% v) → asy::Future<self::getFuture::T%> async /* emittedValueType= self::getFuture::T% */
return v;

View file

@ -5,7 +5,7 @@ import "dart:core" as core;
import "dart:async";
static method main() → dynamic async /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= dynamic */ {
await self::returnsString();
await self::returnsFutureOrString();
await self::returnsAwaitFutureOrString();
@ -17,27 +17,27 @@ static method main() → dynamic async /* futureValueType= dynamic */ {
await self::returnsFutureObject();
await self::returnsAwaitFutureObject() /* runtimeCheckType= asy::Future<core::Object> */ ;
}
static method returnsString() → asy::Future<core::String> async /* futureValueType= core::String */
static method returnsString() → asy::Future<core::String> async /* emittedValueType= core::String */
return "a";
static method returnsFutureOrString() → asy::Future<core::String> async /* futureValueType= core::String */
static method returnsFutureOrString() → asy::Future<core::String> async /* emittedValueType= core::String */
return self::getFutureOr<core::String>("a");
static method returnsAwaitFutureOrString() → asy::Future<core::String> async /* futureValueType= core::String */
static method returnsAwaitFutureOrString() → asy::Future<core::String> async /* emittedValueType= core::String */
return await self::getFutureOr<core::String>("a") /* runtimeCheckType= asy::Future<core::String> */ ;
static method returnsFutureString() → asy::Future<core::String> async /* futureValueType= core::String */
static method returnsFutureString() → asy::Future<core::String> async /* emittedValueType= core::String */
return self::getFuture<core::String>("a");
static method returnsAwaitFutureString() → FutureOr<core::String> async /* futureValueType= core::String */
static method returnsAwaitFutureString() → FutureOr<core::String> async /* emittedValueType= core::String */
return await self::getFuture<core::String>("a");
static method returnsObject() → asy::Future<core::Object> async /* futureValueType= core::Object */
static method returnsObject() → asy::Future<core::Object> async /* emittedValueType= core::Object */
return new core::Object::•();
static method returnsFutureOrObject() → asy::Future<core::Object> async /* futureValueType= core::Object */
static method returnsFutureOrObject() → asy::Future<core::Object> async /* emittedValueType= core::Object */
return self::getFutureOr<core::Object>(new core::Object::•());
static method returnsAwaitFutureOrObject() → asy::Future<core::Object> async /* futureValueType= core::Object */
static method returnsAwaitFutureOrObject() → asy::Future<core::Object> async /* emittedValueType= core::Object */
return await self::getFutureOr<core::Object>(new core::Object::•()) /* runtimeCheckType= asy::Future<core::Object> */ ;
static method returnsFutureObject() → asy::Future<core::Object> async /* futureValueType= core::Object */
static method returnsFutureObject() → asy::Future<core::Object> async /* emittedValueType= core::Object */
return self::getFuture<core::Object>(new core::Object::•());
static method returnsAwaitFutureObject() → FutureOr<core::Object> async /* futureValueType= core::Object */
static method returnsAwaitFutureObject() → FutureOr<core::Object> async /* emittedValueType= core::Object */
return await self::getFuture<core::Object>(new core::Object::•());
static method getFutureOr<T extends core::Object? = dynamic>(self::getFutureOr::T% v) → FutureOr<self::getFutureOr::T%> async /* futureValueType= self::getFutureOr::T% */
static method getFutureOr<T extends core::Object? = dynamic>(self::getFutureOr::T% v) → FutureOr<self::getFutureOr::T%> async /* emittedValueType= self::getFutureOr::T% */
return v;
static method getFuture<T extends core::Object? = dynamic>(self::getFuture::T% v) → asy::Future<self::getFuture::T%> async /* futureValueType= self::getFuture::T% */
static method getFuture<T extends core::Object? = dynamic>(self::getFuture::T% v) → asy::Future<self::getFuture::T%> async /* emittedValueType= self::getFuture::T% */
return v;

View file

@ -5,7 +5,7 @@ import "dart:core" as core;
import "dart:async";
static method main() → dynamic async /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= dynamic */ {
await self::returnsString();
await self::returnsFutureOrString();
await self::returnsAwaitFutureOrString();
@ -17,27 +17,27 @@ static method main() → dynamic async /* futureValueType= dynamic */ {
await self::returnsFutureObject();
await self::returnsAwaitFutureObject() /* runtimeCheckType= asy::Future<core::Object> */ ;
}
static method returnsString() → asy::Future<core::String> async /* futureValueType= core::String */
static method returnsString() → asy::Future<core::String> async /* emittedValueType= core::String */
return "a";
static method returnsFutureOrString() → asy::Future<core::String> async /* futureValueType= core::String */
static method returnsFutureOrString() → asy::Future<core::String> async /* emittedValueType= core::String */
return self::getFutureOr<core::String>("a");
static method returnsAwaitFutureOrString() → asy::Future<core::String> async /* futureValueType= core::String */
static method returnsAwaitFutureOrString() → asy::Future<core::String> async /* emittedValueType= core::String */
return await self::getFutureOr<core::String>("a") /* runtimeCheckType= asy::Future<core::String> */ ;
static method returnsFutureString() → asy::Future<core::String> async /* futureValueType= core::String */
static method returnsFutureString() → asy::Future<core::String> async /* emittedValueType= core::String */
return self::getFuture<core::String>("a");
static method returnsAwaitFutureString() → FutureOr<core::String> async /* futureValueType= core::String */
static method returnsAwaitFutureString() → FutureOr<core::String> async /* emittedValueType= core::String */
return await self::getFuture<core::String>("a");
static method returnsObject() → asy::Future<core::Object> async /* futureValueType= core::Object */
static method returnsObject() → asy::Future<core::Object> async /* emittedValueType= core::Object */
return new core::Object::•();
static method returnsFutureOrObject() → asy::Future<core::Object> async /* futureValueType= core::Object */
static method returnsFutureOrObject() → asy::Future<core::Object> async /* emittedValueType= core::Object */
return self::getFutureOr<core::Object>(new core::Object::•());
static method returnsAwaitFutureOrObject() → asy::Future<core::Object> async /* futureValueType= core::Object */
static method returnsAwaitFutureOrObject() → asy::Future<core::Object> async /* emittedValueType= core::Object */
return await self::getFutureOr<core::Object>(new core::Object::•()) /* runtimeCheckType= asy::Future<core::Object> */ ;
static method returnsFutureObject() → asy::Future<core::Object> async /* futureValueType= core::Object */
static method returnsFutureObject() → asy::Future<core::Object> async /* emittedValueType= core::Object */
return self::getFuture<core::Object>(new core::Object::•());
static method returnsAwaitFutureObject() → FutureOr<core::Object> async /* futureValueType= core::Object */
static method returnsAwaitFutureObject() → FutureOr<core::Object> async /* emittedValueType= core::Object */
return await self::getFuture<core::Object>(new core::Object::•());
static method getFutureOr<T extends core::Object? = dynamic>(self::getFutureOr::T% v) → FutureOr<self::getFutureOr::T%> async /* futureValueType= self::getFutureOr::T% */
static method getFutureOr<T extends core::Object? = dynamic>(self::getFutureOr::T% v) → FutureOr<self::getFutureOr::T%> async /* emittedValueType= self::getFutureOr::T% */
return v;
static method getFuture<T extends core::Object? = dynamic>(self::getFuture::T% v) → asy::Future<self::getFuture::T%> async /* futureValueType= self::getFuture::T% */
static method getFuture<T extends core::Object? = dynamic>(self::getFuture::T% v) → asy::Future<self::getFuture::T%> async /* emittedValueType= self::getFuture::T% */
return v;

View file

@ -5,7 +5,7 @@ import "dart:core" as core;
import "dart:async";
static method main() → dynamic async /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= dynamic */ {
await self::returnsString();
await self::returnsFutureOrString();
await self::returnsAwaitFutureOrString();
@ -17,27 +17,27 @@ static method main() → dynamic async /* futureValueType= dynamic */ {
await self::returnsFutureObject();
await self::returnsAwaitFutureObject() /* runtimeCheckType= asy::Future<core::Object> */ ;
}
static method returnsString() → asy::Future<core::String> async /* futureValueType= core::String */
static method returnsString() → asy::Future<core::String> async /* emittedValueType= core::String */
return "a";
static method returnsFutureOrString() → asy::Future<core::String> async /* futureValueType= core::String */
static method returnsFutureOrString() → asy::Future<core::String> async /* emittedValueType= core::String */
return self::getFutureOr<core::String>("a");
static method returnsAwaitFutureOrString() → asy::Future<core::String> async /* futureValueType= core::String */
static method returnsAwaitFutureOrString() → asy::Future<core::String> async /* emittedValueType= core::String */
return await self::getFutureOr<core::String>("a") /* runtimeCheckType= asy::Future<core::String> */ ;
static method returnsFutureString() → asy::Future<core::String> async /* futureValueType= core::String */
static method returnsFutureString() → asy::Future<core::String> async /* emittedValueType= core::String */
return self::getFuture<core::String>("a");
static method returnsAwaitFutureString() → FutureOr<core::String> async /* futureValueType= core::String */
static method returnsAwaitFutureString() → FutureOr<core::String> async /* emittedValueType= core::String */
return await self::getFuture<core::String>("a");
static method returnsObject() → asy::Future<core::Object> async /* futureValueType= core::Object */
static method returnsObject() → asy::Future<core::Object> async /* emittedValueType= core::Object */
return new core::Object::•();
static method returnsFutureOrObject() → asy::Future<core::Object> async /* futureValueType= core::Object */
static method returnsFutureOrObject() → asy::Future<core::Object> async /* emittedValueType= core::Object */
return self::getFutureOr<core::Object>(new core::Object::•());
static method returnsAwaitFutureOrObject() → asy::Future<core::Object> async /* futureValueType= core::Object */
static method returnsAwaitFutureOrObject() → asy::Future<core::Object> async /* emittedValueType= core::Object */
return await self::getFutureOr<core::Object>(new core::Object::•()) /* runtimeCheckType= asy::Future<core::Object> */ ;
static method returnsFutureObject() → asy::Future<core::Object> async /* futureValueType= core::Object */
static method returnsFutureObject() → asy::Future<core::Object> async /* emittedValueType= core::Object */
return self::getFuture<core::Object>(new core::Object::•());
static method returnsAwaitFutureObject() → FutureOr<core::Object> async /* futureValueType= core::Object */
static method returnsAwaitFutureObject() → FutureOr<core::Object> async /* emittedValueType= core::Object */
return await self::getFuture<core::Object>(new core::Object::•());
static method getFutureOr<T extends core::Object? = dynamic>(self::getFutureOr::T% v) → FutureOr<self::getFutureOr::T%> async /* futureValueType= self::getFutureOr::T% */
static method getFutureOr<T extends core::Object? = dynamic>(self::getFutureOr::T% v) → FutureOr<self::getFutureOr::T%> async /* emittedValueType= self::getFutureOr::T% */
return v;
static method getFuture<T extends core::Object? = dynamic>(self::getFuture::T% v) → asy::Future<self::getFuture::T%> async /* futureValueType= self::getFuture::T% */
static method getFuture<T extends core::Object? = dynamic>(self::getFuture::T% v) → asy::Future<self::getFuture::T%> async /* emittedValueType= self::getFuture::T% */
return v;

View file

@ -8,7 +8,7 @@ library;
//
import self as self;
static method foo() → dynamic async /* futureValueType= dynamic */ {
static method foo() → dynamic async /* emittedValueType= dynamic */ {
invalid-type x;
for (dynamic y in x{<invalid>}.z) {
}

View file

@ -8,7 +8,7 @@ library;
//
import self as self;
static method foo() → dynamic async /* futureValueType= dynamic */ {
static method foo() → dynamic async /* emittedValueType= dynamic */ {
invalid-type x;
invalid-expression "Invalid iterable type in for-in";
}

View file

@ -8,7 +8,7 @@ library;
//
import self as self;
static method foo() → dynamic async /* futureValueType= dynamic */ {
static method foo() → dynamic async /* emittedValueType= dynamic */ {
invalid-type x;
for (dynamic y in x{<invalid>}.z) {
}

View file

@ -8,7 +8,7 @@ library;
//
import self as self;
static method foo() → dynamic async /* futureValueType= dynamic */ {
static method foo() → dynamic async /* emittedValueType= dynamic */ {
invalid-type x;
for (dynamic y in x{<invalid>}.z) {
}

View file

@ -8,7 +8,7 @@ library;
//
import self as self;
static method foo() → dynamic async /* futureValueType= dynamic */ {
static method foo() → dynamic async /* emittedValueType= dynamic */ {
invalid-type x;
invalid-expression "Invalid iterable type in for-in";
}

View file

@ -17,7 +17,7 @@ class Node extends core::Object {
return "${this.{self::Node::name}{core::String}} ${let final core::Iterable<dynamic>? #t3 = tmp in #t3 == null ?{core::String?} null : #t3{core::Iterable<dynamic>}.{core::Iterable::join}(" "){([core::String]) → core::String}}".{core::String::trim}(){() → core::String};
}
}
static method main() → void async /* futureValueType= void */ {
static method main() → void async /* emittedValueType= void */ {
core::String expected = "1 2 3 4 5 6 7 8 9 10";
self::Node node = new self::Node::•("1", <self::Node>[new self::Node::•("2", <self::Node>[]), await asy::Future::value<self::Node>(new self::Node::•("3", <self::Node>[await asy::Future::value<self::Node>(new self::Node::•("4", <self::Node>[new self::Node::•("5", <self::Node>[await asy::Future::value<self::Node>(new self::Node::•("6", <self::Node>[await asy::Future::value<self::Node>(new self::Node::•("7", <self::Node>[]))])), await asy::Future::value<self::Node>(new self::Node::•("8", <self::Node>[])), await asy::Future::value<self::Node>(new self::Node::•("9", <self::Node>[]))])]))])), await asy::Future::value<self::Node>(new self::Node::•("10", <self::Node>[]))]);
core::String actual = node.{self::Node::toSimpleString}(){() → dynamic} as{TypeError,ForDynamic} core::String;

View file

@ -17,7 +17,7 @@ class Node extends core::Object {
return "${this.{self::Node::name}{core::String}} ${let final core::Iterable<dynamic>? #t3 = tmp in #t3 == null ?{core::String?} null : #t3{core::Iterable<dynamic>}.{core::Iterable::join}(" "){([core::String]) → core::String}}".{core::String::trim}(){() → core::String};
}
}
static method main() → void async /* futureValueType= void */ {
static method main() → void async /* emittedValueType= void */ {
core::String expected = "1 2 3 4 5 6 7 8 9 10";
self::Node node = new self::Node::•("1", core::_GrowableList::_literal3<self::Node>(new self::Node::•("2", core::_GrowableList::•<self::Node>(0)), await asy::Future::value<self::Node>(new self::Node::•("3", core::_GrowableList::_literal1<self::Node>(await asy::Future::value<self::Node>(new self::Node::•("4", core::_GrowableList::_literal1<self::Node>(new self::Node::•("5", core::_GrowableList::_literal3<self::Node>(await asy::Future::value<self::Node>(new self::Node::•("6", core::_GrowableList::_literal1<self::Node>(await asy::Future::value<self::Node>(new self::Node::•("7", core::_GrowableList::•<self::Node>(0)))))), await asy::Future::value<self::Node>(new self::Node::•("8", core::_GrowableList::•<self::Node>(0))), await asy::Future::value<self::Node>(new self::Node::•("9", core::_GrowableList::•<self::Node>(0))))))))))), await asy::Future::value<self::Node>(new self::Node::•("10", core::_GrowableList::•<self::Node>(0)))));
core::String actual = node.{self::Node::toSimpleString}(){() → dynamic} as{TypeError,ForDynamic} core::String;

View file

@ -17,7 +17,7 @@ class Node extends core::Object {
return "${this.{self::Node::name}{core::String}} ${let final core::Iterable<dynamic>? #t3 = tmp in #t3 == null ?{core::String?} null : #t3{core::Iterable<dynamic>}.{core::Iterable::join}(" "){([core::String]) → core::String}}".{core::String::trim}(){() → core::String};
}
}
static method main() → void async /* futureValueType= void */ {
static method main() → void async /* emittedValueType= void */ {
core::String expected = "1 2 3 4 5 6 7 8 9 10";
self::Node node = new self::Node::•("1", <self::Node>[new self::Node::•("2", <self::Node>[]), await asy::Future::value<self::Node>(new self::Node::•("3", <self::Node>[await asy::Future::value<self::Node>(new self::Node::•("4", <self::Node>[new self::Node::•("5", <self::Node>[await asy::Future::value<self::Node>(new self::Node::•("6", <self::Node>[await asy::Future::value<self::Node>(new self::Node::•("7", <self::Node>[]))])), await asy::Future::value<self::Node>(new self::Node::•("8", <self::Node>[])), await asy::Future::value<self::Node>(new self::Node::•("9", <self::Node>[]))])]))])), await asy::Future::value<self::Node>(new self::Node::•("10", <self::Node>[]))]);
core::String actual = node.{self::Node::toSimpleString}(){() → dynamic} as{TypeError,ForDynamic} core::String;

View file

@ -17,7 +17,7 @@ class Node extends core::Object {
return "${this.{self::Node::name}{core::String}} ${let final core::Iterable<dynamic>? #t3 = tmp in #t3 == null ?{core::String?} null : #t3{core::Iterable<dynamic>}.{core::Iterable::join}(" "){([core::String]) → core::String}}".{core::String::trim}(){() → core::String};
}
}
static method main() → void async /* futureValueType= void */ {
static method main() → void async /* emittedValueType= void */ {
core::String expected = "1 2 3 4 5 6 7 8 9 10";
self::Node node = new self::Node::•("1", <self::Node>[new self::Node::•("2", <self::Node>[]), await asy::Future::value<self::Node>(new self::Node::•("3", <self::Node>[await asy::Future::value<self::Node>(new self::Node::•("4", <self::Node>[new self::Node::•("5", <self::Node>[await asy::Future::value<self::Node>(new self::Node::•("6", <self::Node>[await asy::Future::value<self::Node>(new self::Node::•("7", <self::Node>[]))])), await asy::Future::value<self::Node>(new self::Node::•("8", <self::Node>[])), await asy::Future::value<self::Node>(new self::Node::•("9", <self::Node>[]))])]))])), await asy::Future::value<self::Node>(new self::Node::•("10", <self::Node>[]))]);
core::String actual = node.{self::Node::toSimpleString}(){() → dynamic} as{TypeError,ForDynamic} core::String;

View file

@ -17,7 +17,7 @@ class Node extends core::Object {
return "${this.{self::Node::name}{core::String}} ${let final core::Iterable<dynamic>? #t3 = tmp in #t3 == null ?{core::String?} null : #t3{core::Iterable<dynamic>}.{core::Iterable::join}(" "){([core::String]) → core::String}}".{core::String::trim}(){() → core::String};
}
}
static method main() → void async /* futureValueType= void */ {
static method main() → void async /* emittedValueType= void */ {
core::String expected = "1 2 3 4 5 6 7 8 9 10";
self::Node node = new self::Node::•("1", core::_GrowableList::_literal3<self::Node>(new self::Node::•("2", core::_GrowableList::•<self::Node>(0)), await asy::Future::value<self::Node>(new self::Node::•("3", core::_GrowableList::_literal1<self::Node>(await asy::Future::value<self::Node>(new self::Node::•("4", core::_GrowableList::_literal1<self::Node>(new self::Node::•("5", core::_GrowableList::_literal3<self::Node>(await asy::Future::value<self::Node>(new self::Node::•("6", core::_GrowableList::_literal1<self::Node>(await asy::Future::value<self::Node>(new self::Node::•("7", core::_GrowableList::•<self::Node>(0)))))), await asy::Future::value<self::Node>(new self::Node::•("8", core::_GrowableList::•<self::Node>(0))), await asy::Future::value<self::Node>(new self::Node::•("9", core::_GrowableList::•<self::Node>(0))))))))))), await asy::Future::value<self::Node>(new self::Node::•("10", core::_GrowableList::•<self::Node>(0)))));
core::String actual = node.{self::Node::toSimpleString}(){() → dynamic} as{TypeError,ForDynamic} core::String;

View file

@ -2,6 +2,6 @@ library;
import self as self;
import "dart:core" as core;
static method main() → dynamic async /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= dynamic */ {
core::print(await "Hello, World!" /* runtimeCheckType= dart.async::Future<core::String> */ );
}

View file

@ -2,6 +2,6 @@ library;
import self as self;
import "dart:core" as core;
static method main() → dynamic async /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= dynamic */ {
core::print(await "Hello, World!" /* runtimeCheckType= dart.async::Future<core::String> */ );
}

View file

@ -2,6 +2,6 @@ library;
import self as self;
import "dart:core" as core;
static method main() → dynamic async /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= dynamic */ {
core::print(await "Hello, World!" /* runtimeCheckType= dart.async::Future<core::String> */ );
}

View file

@ -2,6 +2,6 @@ library;
import self as self;
import "dart:core" as core;
static method main() → dynamic async /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= dynamic */ {
core::print(await "Hello, World!" /* runtimeCheckType= dart.async::Future<core::String> */ );
}

View file

@ -2,6 +2,6 @@ library;
import self as self;
import "dart:core" as core;
static method main() → dynamic async /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= dynamic */ {
core::print(await "Hello, World!" /* runtimeCheckType= dart.async::Future<core::String> */ );
}

View file

@ -52,7 +52,7 @@ static set topLevelSetter(dynamic val) → void {
}
static method dummy() → dynamic
return 1;
static method staticMembers() → dynamic async /* futureValueType= dynamic */ {
static method staticMembers() → dynamic async /* emittedValueType= dynamic */ {
core::num a = self::C::staticField.{core::num::+}(await self::dummy() /* runtimeCheckType= asy::Future<dynamic> */ as{TypeError,ForDynamic} core::num){(core::num) → core::num};
self::expect(2, a);
core::num f = (self::C::staticField = 1).{core::num::+}(await self::dummy() /* runtimeCheckType= asy::Future<dynamic> */ as{TypeError,ForDynamic} core::num){(core::num) → core::num};
@ -66,7 +66,7 @@ static method staticMembers() → dynamic async /* futureValueType= dynamic */ {
core::num e = self::C::staticField.{core::num::+}(self::C::staticGetter){(core::num) → core::int}.{core::num::+}(self::C::staticSetter = 1){(core::num) → core::int}.{core::num::+}(self::C::staticFoo(1)){(core::num) → core::int}.{core::num::+}(await self::dummy() /* runtimeCheckType= asy::Future<dynamic> */ as{TypeError,ForDynamic} core::num){(core::num) → core::num};
self::expect(5, e);
}
static method topLevelMembers() → dynamic async /* futureValueType= dynamic */ {
static method topLevelMembers() → dynamic async /* emittedValueType= dynamic */ {
core::num a = self::globalVariable.{core::num::+}(await self::dummy() /* runtimeCheckType= asy::Future<dynamic> */ as{TypeError,ForDynamic} core::num){(core::num) → core::num};
self::expect(2, a);
core::num b = self::topLevelGetter.{core::num::+}(await self::dummy() /* runtimeCheckType= asy::Future<dynamic> */ as{TypeError,ForDynamic} core::num){(core::num) → core::num};
@ -78,7 +78,7 @@ static method topLevelMembers() → dynamic async /* futureValueType= dynamic */
core::num e = self::globalVariable.{core::num::+}(self::topLevelGetter){(core::num) → core::int}.{core::num::+}(self::topLevelSetter = 1){(core::num) → core::int}.{core::num::+}(self::topLevelFoo(1)){(core::num) → core::int}.{core::num::+}(await self::dummy() /* runtimeCheckType= asy::Future<dynamic> */ as{TypeError,ForDynamic} core::num){(core::num) → core::num};
self::expect(5, e);
}
static method instanceMembers() → dynamic async /* futureValueType= dynamic */ {
static method instanceMembers() → dynamic async /* emittedValueType= dynamic */ {
self::C inst = new self::C::•();
core::num a = inst.{self::C::field}{core::int}.{core::num::+}(await self::dummy() /* runtimeCheckType= asy::Future<dynamic> */ as{TypeError,ForDynamic} core::num){(core::num) → core::num};
self::expect(2, a);
@ -91,7 +91,7 @@ static method instanceMembers() → dynamic async /* futureValueType= dynamic */
core::num e = inst.{self::C::field}{core::int}.{core::num::+}(inst.{self::C::getter}{core::int}){(core::num) → core::int}.{core::num::+}(inst.{self::C::setter} = 1){(core::num) → core::int}.{core::num::+}(inst.{self::C::foo}(1){(core::int) → core::int}){(core::num) → core::int}.{core::num::+}(await self::dummy() /* runtimeCheckType= asy::Future<dynamic> */ as{TypeError,ForDynamic} core::num){(core::num) → core::num};
self::expect(5, e);
}
static method others() → dynamic async /* futureValueType= dynamic */ {
static method others() → dynamic async /* emittedValueType= dynamic */ {
core::String a = "${self::globalVariable} ${await self::dummy() /* runtimeCheckType= asy::Future<dynamic> */ } ".{core::String::+}(await "someString" /* runtimeCheckType= asy::Future<core::String> */ ){(core::String) → core::String};
self::expect("1 1 someString", a);
self::C c = new self::C::•();
@ -103,7 +103,7 @@ static method others() → dynamic async /* futureValueType= dynamic */ {
core::num e = b.{core::List::[]}(0){(core::int) → core::int}.{core::num::+}(await self::dummy() /* runtimeCheckType= asy::Future<dynamic> */ as{TypeError,ForDynamic} core::num){(core::num) → core::num};
self::expect(2, e);
}
static method conditionals() → dynamic async /* futureValueType= dynamic */ {
static method conditionals() → dynamic async /* emittedValueType= dynamic */ {
core::bool a = false;
core::bool b = true;
core::bool c = a || b || await self::dummy() /* runtimeCheckType= asy::Future<dynamic> */ as{TypeError,ForDynamic} core::bool;
@ -118,7 +118,7 @@ static method conditionals() → dynamic async /* futureValueType= dynamic */ {
on core::Object catch(final core::Object e) {
}
}
static method asserts() → dynamic async /* futureValueType= dynamic */ {
static method asserts() → dynamic async /* emittedValueType= dynamic */ {
for (final <T extends core::Object? = dynamic>(T%) → FutureOr<T%>func in <<T extends core::Object? = dynamic>(T%) → FutureOr<T%>>[#C1, #C2]) {
assert(await func<core::bool>(true){(core::bool) → FutureOr<core::bool>} /* runtimeCheckType= asy::Future<core::bool> */ );
assert(invalid-expression "pkg/front_end/testcases/general/await_complex.dart:120:12: Error: A value of type 'FutureOr<bool>' can't be assigned to a variable of type 'bool'.
@ -135,7 +135,7 @@ static method asserts() → dynamic async /* futureValueType= dynamic */ {
}
}
}
static method controlFlow() → dynamic async /* futureValueType= dynamic */ {
static method controlFlow() → dynamic async /* emittedValueType= dynamic */ {
for (final <T extends core::Object? = dynamic>(T%) → FutureOr<T%>func in <<T extends core::Object? = dynamic>(T%) → FutureOr<T%>>[#C1, #C2]) {
core::int c = 0;
for (core::int i = await func<core::int>(0){(core::int) → FutureOr<core::int>} /* runtimeCheckType= asy::Future<core::int> */ ; await func<core::bool>(i.{core::num::<}(5){(core::num) → core::bool}){(core::bool) → FutureOr<core::bool>} /* runtimeCheckType= asy::Future<core::bool> */ ; await func<core::int>(let final core::int #t1 = i in let final core::int #t2 = i = #t1.{core::num::+}(1){(core::num) → core::int} in #t1){(core::int) → FutureOr<core::int>} /* runtimeCheckType= asy::Future<core::int> */ ) {
@ -203,30 +203,30 @@ static method controlFlow() → dynamic async /* futureValueType= dynamic */ {
throw "unreachable";
}
}
self::expect(42, await(() → asy::Future<core::int> async /* futureValueType= core::int */ {
self::expect(42, await(() → asy::Future<core::int> async /* emittedValueType= core::int */ {
return await func<core::int>(42){(core::int) → FutureOr<core::int>} /* runtimeCheckType= asy::Future<core::int> */ ;
})(){() → asy::Future<core::int>});
self::expect(42, await(() → asy::Future<core::int> async /* futureValueType= core::int */ {
self::expect(42, await(() → asy::Future<core::int> async /* emittedValueType= core::int */ {
return func<core::int>(42){(core::int) → FutureOr<core::int>};
})(){() → asy::Future<core::int>});
function testStream1() → asy::Stream<core::int> async* {
function testStream1() → asy::Stream<core::int> async* /* emittedValueType= core::int */ {
yield await func<core::int>(42){(core::int) → FutureOr<core::int>} /* runtimeCheckType= asy::Future<core::int> */ ;
}
self::expectList(<dynamic>[42], await testStream1(){() → asy::Stream<core::int>}.{asy::Stream::toList}(){() → asy::Future<core::List<core::int>>});
function testStream2() → asy::Stream<core::int> async* {
function testStream2() → asy::Stream<core::int> async* /* emittedValueType= core::int */ {
yield* await func<asy::Stream<core::int>>(self::intStream()){(asy::Stream<core::int>) → FutureOr<asy::Stream<core::int>>} /* runtimeCheckType= asy::Future<asy::Stream<core::int>> */ ;
}
self::expectList(<dynamic>[42], await testStream2(){() → asy::Stream<core::int>}.{asy::Stream::toList}(){() → asy::Future<core::List<core::int>>});
}
}
static method future<T extends core::Object? = dynamic>(self::future::T% value) → FutureOr<self::future::T%> async /* futureValueType= self::future::T% */
static method future<T extends core::Object? = dynamic>(self::future::T% value) → FutureOr<self::future::T%> async /* emittedValueType= self::future::T% */
return value;
static method id<T extends core::Object? = dynamic>(self::id::T% value) → FutureOr<self::id::T%>
return value;
static method intStream() → asy::Stream<core::int> async* {
static method intStream() → asy::Stream<core::int> async* /* emittedValueType= core::int */ {
yield 42;
}
static method main() → dynamic async /* futureValueType= dynamic */ {
static method main() → dynamic async /* emittedValueType= dynamic */ {
for (core::int i = 0; i.{core::num::<}(11){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
await self::staticMembers() /* runtimeCheckType= asy::Future<dynamic> */ ;
await self::topLevelMembers() /* runtimeCheckType= asy::Future<dynamic> */ ;

Some files were not shown because too many files have changed in this diff Show more