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

Unified Diff: pkg/analyzer/lib/src/generated/testing/element_factory.dart

Issue 1442883003: generic method type parameter inference (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 1 month 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/generated/testing/element_factory.dart
diff --git a/pkg/analyzer/lib/src/generated/testing/element_factory.dart b/pkg/analyzer/lib/src/generated/testing/element_factory.dart
index dff33e9fc75407b3b2835469da6a4a66516af484..441410337ae26a245d608c8ae4b8356f62d75e8f 100644
--- a/pkg/analyzer/lib/src/generated/testing/element_factory.dart
+++ b/pkg/analyzer/lib/src/generated/testing/element_factory.dart
@@ -49,19 +49,10 @@ class ElementFactory {
if (parameterNames != null) {
int count = parameterNames.length;
if (count > 0) {
- List<TypeParameterElementImpl> typeParameters =
- new List<TypeParameterElementImpl>(count);
- List<TypeParameterTypeImpl> typeParameterTypes =
- new List<TypeParameterTypeImpl>(count);
- for (int i = 0; i < count; i++) {
- TypeParameterElementImpl typeParameter =
- typeParameterElement(parameterNames[i]);
- typeParameters[i] = typeParameter;
- typeParameterTypes[i] = new TypeParameterTypeImpl(typeParameter);
- typeParameter.type = typeParameterTypes[i];
- }
- element.typeParameters = typeParameters;
- type.typeArguments = typeParameterTypes;
+ element.typeParameters = typeParameters(parameterNames);
+ type.typeArguments = new List<DartType>.from(
+ element.typeParameters.map((p) => p.type),
+ growable: false);
}
}
return element;
@@ -243,12 +234,12 @@ class ElementFactory {
functionElement4(functionName, null, null, null, null);
static FunctionElementImpl functionElement2(
- String functionName, ClassElement returnElement) =>
+ String functionName, TypeDefiningElement returnElement) =>
functionElement3(functionName, returnElement, null, null);
static FunctionElementImpl functionElement3(
String functionName,
- ClassElement returnElement,
+ TypeDefiningElement returnElement,
List<TypeDefiningElement> normalParameters,
List<TypeDefiningElement> optionalParameters) {
// We don't create parameter elements because we don't have parameter names
@@ -611,4 +602,25 @@ class ElementFactory {
element.type = new TypeParameterTypeImpl(element);
return element;
}
+
+ static List<TypeParameterElement> typeParameters(List<String> names) {
+ int count = names.length;
+ if (count == 0) {
+ return TypeParameterElement.EMPTY_LIST;
+ }
+ List<TypeParameterElementImpl> typeParameters =
+ new List<TypeParameterElementImpl>(count);
+ for (int i = 0; i < count; i++) {
+ typeParameters[i] = typeParameterWithType(names[i]);
+ }
+ return typeParameters;
+ }
+
+ static TypeParameterElementImpl typeParameterWithType(String name,
+ [DartType bound]) {
+ TypeParameterElementImpl typeParameter = typeParameterElement(name);
+ typeParameter.type = new TypeParameterTypeImpl(typeParameter);
+ typeParameter.bound = bound;
+ return typeParameter;
+ }
}

Powered by Google App Engine
This is Rietveld 408576698