Index: pkg/analyzer/lib/src/dart/element/element.dart |
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart |
index 87532b0c8504577f3b7b9e976633a751aa922641..dbd18f3a7f76a1e2766c3f0c290ba6ae5aadbe49 100644 |
--- a/pkg/analyzer/lib/src/dart/element/element.dart |
+++ b/pkg/analyzer/lib/src/dart/element/element.dart |
@@ -2879,7 +2879,7 @@ abstract class ExecutableElementImpl extends ElementImpl |
* A list containing all of the type parameters defined for this executable |
* element. |
*/ |
- List<TypeParameterElement> _typeParameters = TypeParameterElement.EMPTY_LIST; |
+ List<TypeParameterElement> _typeParameters; |
/** |
* The return type defined by this executable element. |
@@ -3188,13 +3188,19 @@ abstract class ExecutableElementImpl extends ElementImpl |
TypeParameterizedElementMixin get typeParameterContext => this; |
@override |
- List<TypeParameterElement> get typeParameters => _typeParameters; |
+ List<TypeParameterElement> get typeParameters { |
+ if (serializedExecutable != null) { |
+ return super.typeParameters; |
+ } |
+ return _typeParameters ?? const <TypeParameterElement>[]; |
+ } |
/** |
* Set the type parameters defined by this executable element to the given |
* [typeParameters]. |
*/ |
void set typeParameters(List<TypeParameterElement> typeParameters) { |
+ assert(serializedExecutable == null); |
for (TypeParameterElement parameter in typeParameters) { |
(parameter as TypeParameterElementImpl).enclosingElement = this; |
} |
@@ -3208,14 +3214,14 @@ abstract class ExecutableElementImpl extends ElementImpl |
@override |
void appendTo(StringBuffer buffer) { |
if (this.kind != ElementKind.GETTER) { |
- int typeParameterCount = _typeParameters.length; |
+ 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); |
+ (typeParameters[i] as TypeParameterElementImpl).appendTo(buffer); |
} |
buffer.write('>'); |
} |
@@ -7164,11 +7170,6 @@ class TypeParameterElementImpl extends ElementImpl |
final UnlinkedTypeParam _unlinkedTypeParam; |
/** |
- * The [TypeParameterizedElement] enclosing this one. |
- */ |
- final TypeParameterizedElementMixin _enclosingTypeParameterizedElement; |
- |
- /** |
* The number of type parameters whose scope overlaps this one, and which are |
* declared earlier in the file. |
* |
@@ -7194,7 +7195,6 @@ class TypeParameterElementImpl extends ElementImpl |
TypeParameterElementImpl(String name, int offset) |
: _unlinkedTypeParam = null, |
nestingLevel = null, |
- _enclosingTypeParameterizedElement = null, |
super(name, offset); |
/** |
@@ -7203,17 +7203,13 @@ class TypeParameterElementImpl extends ElementImpl |
TypeParameterElementImpl.forNode(Identifier name) |
: _unlinkedTypeParam = null, |
nestingLevel = null, |
- _enclosingTypeParameterizedElement = null, |
super.forNode(name); |
/** |
* Initialize using the given serialized information. |
*/ |
- TypeParameterElementImpl.forSerialized( |
- this._unlinkedTypeParam, |
- ElementImpl enclosingElement, |
- this._enclosingTypeParameterizedElement, |
- this.nestingLevel) |
+ TypeParameterElementImpl.forSerialized(this._unlinkedTypeParam, |
+ TypeParameterizedElementMixin enclosingElement, this.nestingLevel) |
: super.forSerialized(enclosingElement); |
/** |
@@ -7223,7 +7219,6 @@ class TypeParameterElementImpl extends ElementImpl |
TypeParameterElementImpl.synthetic(String name) |
: _unlinkedTypeParam = null, |
nestingLevel = null, |
- _enclosingTypeParameterizedElement = null, |
super(name, -1) { |
synthetic = true; |
} |
@@ -7265,14 +7260,6 @@ class TypeParameterElementImpl extends ElementImpl |
String get displayName => name; |
@override |
- Element get enclosingElement { |
- if (_unlinkedTypeParam != null) { |
- return _enclosingTypeParameterizedElement; |
- } |
- return super.enclosingElement; |
- } |
- |
- @override |
ElementKind get kind => ElementKind.TYPE_PARAMETER; |
@override |
@@ -7384,7 +7371,7 @@ abstract class TypeParameterizedElementMixin |
new List<TypeParameterElement>(numTypeParameters); |
for (int i = 0; i < numTypeParameters; i++) { |
_typeParameterElements[i] = new TypeParameterElementImpl.forSerialized( |
- unlinkedTypeParams[i], this, this, enclosingNestingLevel + i); |
+ unlinkedTypeParams[i], this, enclosingNestingLevel + i); |
} |
} |
return _typeParameterElements; |