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

Unified Diff: pkg/analyzer/lib/src/dart/element/element.dart

Issue 2023043002: Resynthesize type parameters of executables lazily. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 7 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
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/summary/resynthesize.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/summary/resynthesize.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698