| 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 14a09003d835335b392e3d6a1aa13c964184edef..f6e197fba4f77a738f880c3927c47dd3deba07dd 100644
|
| --- a/pkg/analyzer/lib/src/summary/resynthesize.dart
|
| +++ b/pkg/analyzer/lib/src/summary/resynthesize.dart
|
| @@ -750,116 +750,6 @@ class _ConstExprBuilder {
|
| }
|
|
|
| /**
|
| - * A class element that has been resynthesized from a summary. The actual
|
| - * element won't be constructed until it is requested. But properties
|
| - * [context], [displayName], [enclosingElement] and [name] can be used without
|
| - * creating the actual element. This allows to put these elements into
|
| - * namespaces without creating actual elements until they are really needed.
|
| - */
|
| -class _DeferredClassElement extends ClassElementHandle {
|
| - final _UnitResynthesizer unitResynthesizer;
|
| - final CompilationUnitElement unitElement;
|
| - final UnlinkedClass serializedClass;
|
| -
|
| - ClassElementImpl _actualElement;
|
| -
|
| - /**
|
| - * We don't resynthesize executables of classes until they are requested.
|
| - * TODO(scheglov) Check whether we need separate flags for separate kinds.
|
| - */
|
| - bool _executablesResynthesized = false;
|
| -
|
| - @override
|
| - final String name;
|
| -
|
| - factory _DeferredClassElement(_UnitResynthesizer unitResynthesizer,
|
| - CompilationUnitElement unitElement, UnlinkedClass serializedClass) {
|
| - String name = serializedClass.name;
|
| - List<String> components =
|
| - unitResynthesizer.unit.location.components.toList();
|
| - components.add(name);
|
| - ElementLocationImpl location = new ElementLocationImpl.con3(components);
|
| - return new _DeferredClassElement._(
|
| - unitResynthesizer, unitElement, serializedClass, name, location);
|
| - }
|
| -
|
| - _DeferredClassElement._(this.unitResynthesizer, this.unitElement,
|
| - this.serializedClass, this.name, ElementLocation location)
|
| - : super(null, location);
|
| -
|
| - @override
|
| - List<PropertyAccessorElement> get accessors {
|
| - _ensureExecutables();
|
| - return actualElement.accessors;
|
| - }
|
| -
|
| - @override
|
| - ClassElementImpl get actualElement {
|
| - if (_actualElement == null) {
|
| - _actualElement = unitResynthesizer.buildClassImpl(serializedClass, this);
|
| - _actualElement.enclosingElement = unitElement;
|
| - }
|
| - return _actualElement;
|
| - }
|
| -
|
| - @override
|
| - List<ConstructorElement> get constructors {
|
| - _ensureExecutables();
|
| - return actualElement.constructors;
|
| - }
|
| -
|
| - @override
|
| - AnalysisContext get context => unitElement.context;
|
| -
|
| - @override
|
| - String get displayName => name;
|
| -
|
| - @override
|
| - CompilationUnitElement get enclosingElement {
|
| - return unitElement;
|
| - }
|
| -
|
| - @override
|
| - List<FieldElement> get fields {
|
| - _ensureExecutables();
|
| - return actualElement.fields;
|
| - }
|
| -
|
| - @override
|
| - List<MethodElement> get methods {
|
| - _ensureExecutables();
|
| - return actualElement.methods;
|
| - }
|
| -
|
| - @override
|
| - void ensureAccessorsReady() {
|
| - _ensureExecutables();
|
| - }
|
| -
|
| - @override
|
| - void ensureActualElementComplete() {
|
| - _ensureExecutables();
|
| - }
|
| -
|
| - @override
|
| - void ensureConstructorsReady() {
|
| - _ensureExecutables();
|
| - }
|
| -
|
| - @override
|
| - void ensureMethodsReady() {
|
| - _ensureExecutables();
|
| - }
|
| -
|
| - /**
|
| - * Ensure that we have [actualElement], and it has all executables.
|
| - */
|
| - void _ensureExecutables() {
|
| - // TODO(scheglov) remove and clean up Handle
|
| - }
|
| -}
|
| -
|
| -/**
|
| * Local function element representing the initializer for a variable that has
|
| * been resynthesized from a summary. The actual element won't be constructed
|
| * until it is requested. But properties [context] and [enclosingElement] can
|
| @@ -1634,32 +1524,14 @@ class _UnitResynthesizer {
|
| * Resynthesize a [ClassElement] and place it in [unitHolder].
|
| */
|
| void buildClass(UnlinkedClass serializedClass) {
|
| - ClassElement classElement;
|
| - if (libraryResynthesizer.isCoreLibrary &&
|
| - serializedClass.supertype == null) {
|
| - classElement = buildClassImpl(serializedClass, null);
|
| - } else {
|
| - classElement = new _DeferredClassElement(this, unit, serializedClass);
|
| - }
|
| - unitHolder.addType(classElement);
|
| - }
|
| -
|
| - /**
|
| - * 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.
|
| - */
|
| - ClassElementImpl buildClassImpl(
|
| - UnlinkedClass serializedClass, ClassElementHandle handle) {
|
| ClassElementImpl classElement =
|
| new ClassElementImpl.forSerialized(serializedClass, unit);
|
| classElement.hasBeenInferred = summaryResynthesizer.strongMode;
|
| - InterfaceTypeImpl correspondingType =
|
| - new InterfaceTypeImpl(handle ?? classElement);
|
| + InterfaceTypeImpl correspondingType = new InterfaceTypeImpl(classElement);
|
| // TODO(scheglov) move to ClassElementImpl
|
| correspondingType.typeArguments = classElement.typeParameterTypes;
|
| classElement.type = correspondingType;
|
| - return classElement;
|
| + unitHolder.addType(classElement);
|
| }
|
|
|
| /**
|
|
|