Index: pkg/analyzer/lib/src/generated/element.dart |
diff --git a/pkg/analyzer/lib/src/generated/element.dart b/pkg/analyzer/lib/src/generated/element.dart |
index 24344aae432ecac820252d7241b5f33c41a4f541..e5bf3a101b2c90344e8c631cb132c4968a44e5b5 100644 |
--- a/pkg/analyzer/lib/src/generated/element.dart |
+++ b/pkg/analyzer/lib/src/generated/element.dart |
@@ -3593,6 +3593,12 @@ abstract class ExecutableElement implements Element { |
* Return the type of function defined by this executable element. |
*/ |
FunctionType get type; |
+ |
+ /** |
+ * Return a list containing all of the type parameters defined for this |
+ * executable element. |
+ */ |
+ List<TypeParameterElement> get typeParameters; |
} |
/** |
@@ -3630,6 +3636,11 @@ abstract class ExecutableElementImpl extends ElementImpl |
List<ParameterElement> _parameters = ParameterElement.EMPTY_LIST; |
/** |
+ * A list containing all of the type parameters defined for this function. |
scheglov
2015/07/06 15:03:21
"for this executable element"?
Brian Wilkerson
2015/07/09 22:02:27
Done
|
+ */ |
+ List<TypeParameterElement> _typeParameters = TypeParameterElement.EMPTY_LIST; |
+ |
+ /** |
* The return type defined by this executable element. |
*/ |
DartType returnType; |
@@ -3746,8 +3757,33 @@ abstract class ExecutableElementImpl extends ElementImpl |
} |
@override |
+ List<TypeParameterElement> get typeParameters => _typeParameters; |
+ |
+ /** |
+ * Set the type parameters defined by this executable element to the given |
+ * [typeParameters]. |
+ */ |
+ void set typeParameters(List<TypeParameterElement> typeParameters) { |
+ for (TypeParameterElement parameter in typeParameters) { |
+ (parameter as TypeParameterElementImpl).enclosingElement = this; |
+ } |
+ this._typeParameters = typeParameters; |
+ } |
+ |
+ @override |
void appendTo(StringBuffer buffer) { |
if (this.kind != ElementKind.GETTER) { |
+ int typeParameterCount = _typeParameters.length; |
+ if (typeParameterCount > 0) { |
+ buffer.write('<'); |
+ for (int i = 0; i < typeParameterCount; i++) { |
+ if (i > 0) { |
+ buffer.write(", "); |
+ } |
+ (_typeParameters[i] as TypeParameterElementImpl).appendTo(buffer); |
+ } |
+ buffer.write('>'); |
+ } |
buffer.write("("); |
String closing = null; |
ParameterKind kind = ParameterKind.REQUIRED; |
@@ -3903,6 +3939,9 @@ abstract class ExecutableMember extends Member implements ExecutableElement { |
FunctionType get type => substituteFor(baseElement.type); |
@override |
+ List<TypeParameterElement> get typeParameters => baseElement.typeParameters; |
+ |
+ @override |
void visitChildren(ElementVisitor visitor) { |
// TODO(brianwilkerson) We need to finish implementing the accessors used |
// below so that we can safely invoke them. |
@@ -8604,6 +8643,13 @@ abstract class ParameterElement |
*/ |
List<ParameterElement> get parameters; |
+ /** |
+ * Return a list containing all of the type parameters defined by this |
+ * parameter. A parameter will only define other parameters if it is a |
+ * function typed parameter. |
+ */ |
+ List<TypeParameterElement> get typeParameters; |
+ |
@override |
FormalParameter computeNode(); |
} |
@@ -8627,6 +8673,13 @@ class ParameterElementImpl extends VariableElementImpl |
List<ParameterElement> _parameters = ParameterElement.EMPTY_LIST; |
/** |
+ * A list containing all of the type parameters defined for this parameter |
+ * element. There will only be parameters if this parameter is a function |
+ * typed parameter. |
+ */ |
+ List<TypeParameterElement> _typeParameters = TypeParameterElement.EMPTY_LIST; |
+ |
+ /** |
* The kind of this parameter. |
*/ |
ParameterKind parameterKind; |
@@ -8697,6 +8750,20 @@ class ParameterElementImpl extends VariableElementImpl |
} |
@override |
+ List<TypeParameterElement> get typeParameters => _typeParameters; |
+ |
+ /** |
+ * Set the type parameters defined by this executable element to the given |
scheglov
2015/07/06 15:03:21
"defined by this parameter element"?
Brian Wilkerson
2015/07/09 22:02:28
Done
|
+ * [typeParameters]. |
+ */ |
+ void set typeParameters(List<TypeParameterElement> typeParameters) { |
+ for (TypeParameterElement parameter in typeParameters) { |
+ (parameter as TypeParameterElementImpl).enclosingElement = this; |
+ } |
+ this._typeParameters = typeParameters; |
+ } |
+ |
+ @override |
SourceRange get visibleRange { |
if (_visibleRangeLength < 0) { |
return null; |
@@ -8852,6 +8919,9 @@ class ParameterMember extends VariableMember implements ParameterElement { |
} |
@override |
+ List<TypeParameterElement> get typeParameters => baseElement.typeParameters; |
+ |
+ @override |
SourceRange get visibleRange => baseElement.visibleRange; |
@override |