Pull up getUnsubstitutedInnerClassesScope()

This commit is contained in:
Alexander Udalov
2013-11-20 19:58:22 +04:00
parent e9f102f3e6
commit 62068bf741
4 changed files with 15 additions and 30 deletions
@@ -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;
@@ -82,7 +82,6 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyDesc
private final NullableLazyValue<ClassDescriptor> classObjectDescriptor;
private final LazyClassMemberScope unsubstitutedMemberScope;
private final JetScope unsubstitutedInnerClassesScope;
private final NotNullLazyValue<JetScope> scopeForClassHeaderResolution;
private final NotNullLazyValue<JetScope> 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();
@@ -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<JetType> defaultType;
private final NotNullLazyValue<JetScope> 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<JetScope>() {
@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<? extends TypeProjection> typeArguments) {
@@ -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) {