Index: pkg/analyzer/lib/src/summary/resynthesize.dart |
diff --git a/pkg/analyzer/lib/src/summary/resynthesize.dart b/pkg/analyzer/lib/src/summary/resynthesize.dart |
index 8dc8e78e33e17b3745cc76ae9cee4907cd63fd8c..14a09003d835335b392e3d6a1aa13c964184edef 100644 |
--- a/pkg/analyzer/lib/src/summary/resynthesize.dart |
+++ b/pkg/analyzer/lib/src/summary/resynthesize.dart |
@@ -855,10 +855,7 @@ class _DeferredClassElement extends ClassElementHandle { |
* Ensure that we have [actualElement], and it has all executables. |
*/ |
void _ensureExecutables() { |
- if (!_executablesResynthesized) { |
- _executablesResynthesized = true; |
- unitResynthesizer.buildClassExecutables(actualElement, serializedClass); |
- } |
+ // TODO(scheglov) remove and clean up Handle |
} |
} |
@@ -1648,83 +1645,6 @@ class _UnitResynthesizer { |
} |
/** |
- * Resynthesize an [ExecutableElement] and place it in the given [holder]. |
- */ |
- void buildClassExecutable(UnlinkedExecutable serializedExecutable, |
- ElementImpl enclosingElement, ElementHolder holder) { |
- bool isTopLevel = holder == null; |
- if (holder == null) { |
- holder = unitHolder; |
- } |
- UnlinkedExecutableKind kind = serializedExecutable.kind; |
- String name = serializedExecutable.name; |
- if (kind == UnlinkedExecutableKind.setter) { |
- assert(name.endsWith('=')); |
- name = name.substring(0, name.length - 1); |
- } |
- switch (kind) { |
- case UnlinkedExecutableKind.getter: |
- case UnlinkedExecutableKind.setter: |
- // Top-level accessors are created lazily. |
- if (isTopLevel) { |
- break; |
- } |
- // Class member accessors. |
- PropertyAccessorElementImpl executableElement = |
- new PropertyAccessorElementImpl.forSerialized( |
- serializedExecutable, enclosingElement); |
- DartType type; |
- if (kind == UnlinkedExecutableKind.getter) { |
- type = executableElement.returnType; |
- } else { |
- type = executableElement.parameters[0].type; |
- } |
- holder.addAccessor(executableElement); |
- FieldElementImpl field = buildImplicitField(name, type, kind, holder); |
- field.static = serializedExecutable.isStatic; |
- executableElement.variable = field; |
- if (kind == UnlinkedExecutableKind.getter) { |
- field.getter = executableElement; |
- } else { |
- field.setter = executableElement; |
- } |
- break; |
- default: |
- // The only other executable type is a constructor, and that is handled |
- // separately (in [buildConstructor]. So this code should be |
- // unreachable. |
- assert(false); |
- } |
- } |
- |
- /** |
- * Fill the given [ClassElementImpl] with executable elements and fields. |
- */ |
- void buildClassExecutables( |
- ClassElementImpl classElement, UnlinkedClass serializedClass) { |
- ElementHolder memberHolder = new ElementHolder(); |
- for (UnlinkedVariable serializedVariable in serializedClass.fields) { |
- buildField(classElement, serializedVariable, memberHolder); |
- } |
- for (UnlinkedExecutable serializedExecutable |
- in serializedClass.executables) { |
- switch (serializedExecutable.kind) { |
- case UnlinkedExecutableKind.getter: |
- case UnlinkedExecutableKind.setter: |
- buildClassExecutable( |
- serializedExecutable, classElement, memberHolder); |
- break; |
- case UnlinkedExecutableKind.constructor: |
- case UnlinkedExecutableKind.functionOrMethod: |
- // Resynthesized lazily. |
- break; |
- } |
- } |
- classElement.accessors = memberHolder.accessors; |
- classElement.fields = memberHolder.fields; |
- } |
- |
- /** |
* Resynthesize a [ClassElementImpl]. If [handle] is not `null`, then |
* executables are not resynthesized, and [InterfaceTypeImpl] is created |
* around the [handle], so that executables are resynthesized lazily. |
@@ -1739,11 +1659,6 @@ class _UnitResynthesizer { |
// TODO(scheglov) move to ClassElementImpl |
correspondingType.typeArguments = classElement.typeParameterTypes; |
classElement.type = correspondingType; |
- // TODO(scheglov) Somehow Observatory shows too much time spent here |
- // during DDC run on the large codebase. I would expect only Object here. |
- if (handle == null) { |
- buildClassExecutables(classElement, serializedClass); |
- } |
return classElement; |
} |
@@ -1823,17 +1738,8 @@ class _UnitResynthesizer { |
*/ |
void buildField(ClassElementImpl enclosingClass, |
UnlinkedVariable serializedVariable, ElementHolder holder) { |
- FieldElementImpl element; |
- if (serializedVariable.initializer?.bodyExpr != null && |
- (serializedVariable.isConst || |
- serializedVariable.isFinal && !serializedVariable.isStatic)) { |
- element = new ConstFieldElementImpl.forSerialized( |
- serializedVariable, enclosingClass); |
- } else { |
- element = new FieldElementImpl.forSerialized( |
- serializedVariable, enclosingClass); |
- } |
- element.static = serializedVariable.isStatic; |
+ FieldElementImpl element = new FieldElementImpl.forSerializedFactory( |
+ serializedVariable, enclosingClass); |
holder.addField(element); |
buildImplicitAccessors(element, holder); |
} |
@@ -1853,27 +1759,6 @@ class _UnitResynthesizer { |
} |
/** |
- * Build the implicit field associated with a getter or setter, and place it |
- * in [holder]. |
- */ |
- FieldElementImpl buildImplicitField(String name, DartType type, |
- UnlinkedExecutableKind kind, ElementHolder holder) { |
- FieldElementImpl field = holder.getField(name); |
- if (field == null) { |
- field = new FieldElementImpl(name, -1); |
- field.synthetic = true; |
- field.final2 = kind == UnlinkedExecutableKind.getter; |
- field.type = type; |
- holder.addField(field); |
- return field; |
- } else { |
- // TODO(paulberry): what if the getter and setter have a type mismatch? |
- field.final2 = false; |
- return field; |
- } |
- } |
- |
- /** |
* Build an implicit getter for the given [property] and bind it to the |
* [property] and to its enclosing element. |
*/ |