Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(26)

Unified Diff: pkg/analyzer/lib/src/summary/link.dart

Issue 2456803004: fixes #27586, prefer context type in generic inference (Closed)
Patch Set: fix Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
}
}
« no previous file with comments | « pkg/analyzer/lib/src/summary/fasta/summary_builder.dart ('k') | pkg/analyzer/test/generated/strong_mode_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698