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
@@ -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) {