Index: pkg/analyzer/lib/src/summary/link.dart |
diff --git a/pkg/analyzer/lib/src/summary/link.dart b/pkg/analyzer/lib/src/summary/link.dart |
index 0945db285db9aa2665e25ad4a065d2e5870baef5..8c08db63497ce9bfad1ff425e0b95a5f700fa9b7 100644 |
--- a/pkg/analyzer/lib/src/summary/link.dart |
+++ b/pkg/analyzer/lib/src/summary/link.dart |
@@ -2599,13 +2599,13 @@ class ExprTypeComputer { |
} |
} else if (rawMethodType.typeFormals.isNotEmpty && |
ts is StrongTypeSystemImpl) { |
- List<DartType> paramTypes = <DartType>[]; |
+ List<ParameterElement> params = <ParameterElement>[]; |
List<DartType> argTypes = <DartType>[]; |
// Add positional parameter and argument types. |
for (int i = 0; i < numPositional; i++) { |
ParameterElement parameter = rawMethodType.parameters[i]; |
if (parameter != null) { |
- paramTypes.add(parameter.type); |
+ params.add(parameter); |
argTypes.add(positionalArgTypes[i]); |
} |
} |
@@ -2617,18 +2617,20 @@ class ExprTypeComputer { |
namedArgTypes[name] = type; |
} |
// Add named parameter and argument types. |
- Map<String, DartType> namedParameterTypes = |
- rawMethodType.namedParameterTypes; |
+ Map<String, ParameterElement> namedParameters = new Map.fromIterable( |
+ rawMethodType.parameters |
+ .where((p) => p.parameterKind == ParameterKind.NAMED), |
+ key: (p) => p.name); |
namedArgTypes.forEach((String name, DartType argType) { |
- DartType parameterType = namedParameterTypes[name]; |
- if (parameterType != null) { |
- paramTypes.add(parameterType); |
+ ParameterElement parameter = namedParameters[name]; |
+ if (parameter != null) { |
+ params.add(parameter); |
argTypes.add(argType); |
} |
}); |
// Perform inference. |
- FunctionType inferred = ts.inferGenericFunctionCall(rawMethodType, |
- paramTypes, argTypes, rawMethodType.returnType, null); |
+ FunctionType inferred = ts.inferGenericFunctionOrType( |
+ rawMethodType, params, argTypes, null); |
return inferred; |
} |
} |