| Index: pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
|
| diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
|
| index 09cc16385b2ca1ce0666d6b15011ef484cf10dcc..4a814353195cbb36994b1512ca9d8fc3835c607b 100644
|
| --- a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
|
| +++ b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
|
| @@ -60,9 +60,8 @@ class ClosureContext {
|
| returnContext, inferrer.coreTypes.iterableClass);
|
| }
|
| } else if (isAsync) {
|
| - returnContext = inferrer.wrapType(
|
| - inferrer.typeSchemaEnvironment.flattenFutures(returnContext),
|
| - inferrer.coreTypes.futureOrClass);
|
| + returnContext = inferrer.wrapFutureOrType(
|
| + inferrer.typeSchemaEnvironment.flattenFutures(returnContext));
|
| }
|
| return new ClosureContext._(isAsync, isGenerator, returnContext);
|
| }
|
| @@ -532,7 +531,8 @@ abstract class TypeInferrerImpl extends TypeInferrer {
|
| }
|
| // TODO(paulberry): If [type] is a subtype of `Future`, should we just
|
| // return it unmodified?
|
| - return new InterfaceType(coreTypes.futureOrClass, <DartType>[type]);
|
| + return new InterfaceType(
|
| + coreTypes.futureOrClass, <DartType>[type ?? const DynamicType()]);
|
| }
|
|
|
| DartType wrapFutureType(DartType type) {
|
|
|