| Index: pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
|
| diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
|
| index a708c3d066d258e6495ca80fe5fa92bd3a0e94c4..fc6476d6a6edce75691183cfd8dd7f80a504044f 100644
|
| --- a/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
|
| +++ b/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
|
| @@ -110,8 +110,16 @@ class KernelAwaitExpression extends AwaitExpression
|
| @override
|
| DartType _inferExpression(
|
| KernelTypeInferrer inferrer, DartType typeContext, bool typeNeeded) {
|
| - // TODO(scheglov): implement.
|
| - return typeNeeded ? const DynamicType() : null;
|
| + typeNeeded =
|
| + inferrer.listener.awaitExpressionEnter(this, typeContext) || typeNeeded;
|
| + if (!inferrer.typeSchemaEnvironment.isEmptyContext(typeContext)) {
|
| + typeContext = inferrer.wrapFutureOrType(typeContext);
|
| + }
|
| + var inferredType =
|
| + inferrer.inferExpression(operand, typeContext, typeNeeded);
|
| + inferredType = inferrer.typeSchemaEnvironment.flattenFutures(inferredType);
|
| + inferrer.listener.awaitExpressionExit(this, inferredType);
|
| + return inferredType;
|
| }
|
| }
|
|
|
|
|