| Index: pkg/analyzer/lib/src/generated/resolver.dart
|
| diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
|
| index 9d04dff3d942338de40855dede9712fbb063f200..e53f1fc0a57d9dddb69faf4c76533bce76f2adc0 100644
|
| --- a/pkg/analyzer/lib/src/generated/resolver.dart
|
| +++ b/pkg/analyzer/lib/src/generated/resolver.dart
|
| @@ -4963,7 +4963,11 @@ class InferenceContext {
|
| * inference.
|
| */
|
| static void setType(AstNode node, DartType type) {
|
| - node?.setProperty(_typeProperty, type);
|
| + if (type == null || type.isDynamic) {
|
| + clearType(node);
|
| + } else {
|
| + node?.setProperty(_typeProperty, type);
|
| + }
|
| }
|
|
|
| /**
|
| @@ -6625,8 +6629,10 @@ class ResolverVisitor extends ScopedVisitor {
|
| //
|
| // We can't represent this in Dart so we populate it here during
|
| // inference.
|
| - returnType = FutureUnionType.from(
|
| - futureThenType.returnType, typeProvider, typeSystem);
|
| + var typeParamS =
|
| + futureThenType.returnType.flattenFutures(typeSystem);
|
| + returnType =
|
| + FutureUnionType.from(typeParamS, typeProvider, typeSystem);
|
| } else {
|
| returnType = _computeReturnOrYieldType(functionType.returnType);
|
| }
|
| @@ -7185,7 +7191,8 @@ class ResolverVisitor extends ScopedVisitor {
|
| return (typeArgs?.length == 1) ? typeArgs[0] : null;
|
| }
|
| // async functions expect `Future<T> | T`
|
| - return new FutureUnionType(declaredType, typeProvider, typeSystem);
|
| + var futureTypeParam = declaredType.flattenFutures(typeSystem);
|
| + return FutureUnionType.from(futureTypeParam, typeProvider, typeSystem);
|
| }
|
| return declaredType;
|
| }
|
|
|