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) { |