From 62068bf741f82b302870cfe3cf91e67e8b385381 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 20 Nov 2013 19:58:22 +0400 Subject: [PATCH] Pull up getUnsubstitutedInnerClassesScope() --- .../descriptors/DeserializedClassDescriptor.java | 9 --------- .../lazy/descriptors/LazyClassDescriptor.java | 8 -------- .../descriptors/impl/AbstractClassDescriptor.java | 14 ++++++++++++++ .../impl/MutableClassDescriptorLite.java | 14 +------------- 4 files changed, 15 insertions(+), 30 deletions(-) diff --git a/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/descriptors/DeserializedClassDescriptor.java b/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/descriptors/DeserializedClassDescriptor.java index ab9098972d7..a2ed714c4d4 100644 --- a/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/descriptors/DeserializedClassDescriptor.java +++ b/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/descriptors/DeserializedClassDescriptor.java @@ -28,7 +28,6 @@ import org.jetbrains.jet.lang.resolve.DescriptorFactory; import org.jetbrains.jet.lang.resolve.DescriptorUtils; import org.jetbrains.jet.lang.resolve.OverridingUtil; import org.jetbrains.jet.lang.resolve.name.Name; -import org.jetbrains.jet.lang.resolve.scopes.InnerClassesScopeWrapper; import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.receivers.ClassReceiver; import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue; @@ -72,7 +71,6 @@ public class DeserializedClassDescriptor extends AbstractClassDescriptor impleme private final Visibility visibility; private final ClassKind kind; private final boolean isInner; - private final InnerClassesScopeWrapper innerClassesScope; private final DescriptorFinder descriptorFinder; public DeserializedClassDescriptor( @@ -106,7 +104,6 @@ public class DeserializedClassDescriptor extends AbstractClassDescriptor impleme this.typeConstructor = new DeserializedClassTypeConstructor(typeParameters); this.memberScope = new DeserializedClassMemberScope(storageManager, this); - this.innerClassesScope = new InnerClassesScopeWrapper(memberScope); this.thisAsReceiverParameter = new LazyClassReceiverParameterDescriptor(); int flags = classProto.getFlags(); @@ -212,12 +209,6 @@ public class DeserializedClassDescriptor extends AbstractClassDescriptor impleme return memberScope; } - @NotNull - @Override - public JetScope getUnsubstitutedInnerClassesScope() { - return innerClassesScope; - } - @Nullable private ConstructorDescriptor computePrimaryConstructor() { if (!classProto.hasPrimaryConstructor()) return null; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java index 9dfa9636005..6321d379ee1 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java @@ -82,7 +82,6 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyDesc private final NullableLazyValue classObjectDescriptor; private final LazyClassMemberScope unsubstitutedMemberScope; - private final JetScope unsubstitutedInnerClassesScope; private final NotNullLazyValue scopeForClassHeaderResolution; private final NotNullLazyValue scopeForMemberDeclarationResolution; @@ -108,7 +107,6 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyDesc resolveSession.getDeclarationProviderFactory().getClassMemberDeclarationProvider(classLikeInfoForMembers); this.unsubstitutedMemberScope = new LazyClassMemberScope(resolveSession, declarationProvider, this); - this.unsubstitutedInnerClassesScope = new InnerClassesScopeWrapper(unsubstitutedMemberScope); this.typeConstructor = new LazyClassTypeConstructor(); @@ -172,12 +170,6 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyDesc return unsubstitutedMemberScope; } - @NotNull - @Override - public JetScope getUnsubstitutedInnerClassesScope() { - return unsubstitutedInnerClassesScope; - } - @NotNull public JetScope getScopeForClassHeaderResolution() { return scopeForClassHeaderResolution.invoke(); diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/AbstractClassDescriptor.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/AbstractClassDescriptor.java index e206de42276..380e6387c87 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/AbstractClassDescriptor.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/AbstractClassDescriptor.java @@ -24,6 +24,7 @@ import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptorVisitor; import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor; import org.jetbrains.jet.lang.resolve.name.Name; +import org.jetbrains.jet.lang.resolve.scopes.InnerClassesScopeWrapper; import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.SubstitutingScope; import org.jetbrains.jet.lang.types.*; @@ -36,6 +37,7 @@ import java.util.Map; public abstract class AbstractClassDescriptor implements ClassDescriptor { private final Name name; protected final NotNullLazyValue defaultType; + private final NotNullLazyValue unsubstitutedInnerClassesScope; public AbstractClassDescriptor(@NotNull StorageManager storageManager, @NotNull Name name) { this.name = name; @@ -45,6 +47,12 @@ public abstract class AbstractClassDescriptor implements ClassDescriptor { return TypeUtils.makeUnsubstitutedType(AbstractClassDescriptor.this, getScopeForMemberLookup()); } }); + this.unsubstitutedInnerClassesScope = storageManager.createLazyValue(new Function0() { + @Override + public JetScope invoke() { + return new InnerClassesScopeWrapper(getScopeForMemberLookup()); + } + }); } @NotNull @@ -69,6 +77,12 @@ public abstract class AbstractClassDescriptor implements ClassDescriptor { return classObject == null ? null : classObject.getDefaultType(); } + @NotNull + @Override + public JetScope getUnsubstitutedInnerClassesScope() { + return unsubstitutedInnerClassesScope.invoke(); + } + @NotNull @Override public JetScope getMemberScope(List typeArguments) { diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/MutableClassDescriptorLite.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/MutableClassDescriptorLite.java index e634359005c..6a8e16d51cc 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/MutableClassDescriptorLite.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/MutableClassDescriptorLite.java @@ -23,7 +23,6 @@ import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.resolve.DescriptorFactory; import org.jetbrains.jet.lang.resolve.name.Name; -import org.jetbrains.jet.lang.resolve.scopes.InnerClassesScopeWrapper; import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.WritableScope; import org.jetbrains.jet.lang.types.JetType; @@ -56,7 +55,6 @@ public abstract class MutableClassDescriptorLite extends ClassDescriptorBase { private final ClassKind kind; private JetScope scopeForMemberLookup; - private JetScope innerClassesScope; private ReceiverParameterDescriptor implicitReceiver; @@ -76,9 +74,8 @@ public abstract class MutableClassDescriptorLite extends ClassDescriptorBase { return typeConstructor; } - public void setScopeForMemberLookup(JetScope scopeForMemberLookup) { + public void setScopeForMemberLookup(@NotNull JetScope scopeForMemberLookup) { this.scopeForMemberLookup = scopeForMemberLookup; - this.innerClassesScope = new InnerClassesScopeWrapper(scopeForMemberLookup); } public void createTypeConstructor() { @@ -149,15 +146,6 @@ public abstract class MutableClassDescriptorLite extends ClassDescriptorBase { return classObjectDescriptor; } - - - @NotNull - @Override - public JetScope getUnsubstitutedInnerClassesScope() { - return innerClassesScope; - } - - public void addSupertype(@NotNull JetType supertype) { assert !supertype.isError() : "Error types must be filtered out in DescriptorResolver"; if (TypeUtils.getClassDescriptor(supertype) != null) {