replace JavaClassDescriptor with MutableClassDescriptorLite
This commit is contained in:
+3
-5
@@ -1,9 +1,7 @@
|
||||
package org.jetbrains.jet.lang.descriptors;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Sets;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.psi.JetParameter;
|
||||
import org.jetbrains.jet.lang.resolve.AbstractScopeAdapter;
|
||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||
@@ -12,8 +10,6 @@ import org.jetbrains.jet.lang.resolve.TraceBasedRedeclarationHandler;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.*;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.ClassReceiver;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
|
||||
import org.jetbrains.jet.lang.types.*;
|
||||
import org.jetbrains.jet.resolve.DescriptorRenderer;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@@ -31,7 +27,7 @@ public class MutableClassDescriptor extends MutableClassDescriptorLite {
|
||||
private final WritableScope scopeForInitializers; //contains members + primary constructor value parameters + map for backing fields
|
||||
|
||||
public MutableClassDescriptor(@NotNull BindingTrace trace, @NotNull DeclarationDescriptor containingDeclaration, @NotNull JetScope outerScope, ClassKind kind) {
|
||||
super(containingDeclaration, kind, new TraceBasedRedeclarationHandler(trace));
|
||||
super(containingDeclaration, kind);
|
||||
|
||||
if (containingDeclaration instanceof ClassDescriptor
|
||||
|| containingDeclaration instanceof NamespaceLike
|
||||
@@ -43,6 +39,8 @@ public class MutableClassDescriptor extends MutableClassDescriptorLite {
|
||||
}
|
||||
|
||||
TraceBasedRedeclarationHandler redeclarationHandler = new TraceBasedRedeclarationHandler(trace);
|
||||
|
||||
setScopeForMemberLookup(new WritableScopeImpl(JetScope.EMPTY, this, redeclarationHandler).setDebugName("MemberLookup").changeLockLevel(WritableScope.LockLevel.BOTH));
|
||||
this.scopeForSupertypeResolution = new WritableScopeImpl(outerScope, this, redeclarationHandler).setDebugName("SupertypeResolution").changeLockLevel(WritableScope.LockLevel.BOTH);
|
||||
this.scopeForMemberResolution = new WritableScopeImpl(scopeForSupertypeResolution, this, redeclarationHandler).setDebugName("MemberResolution").changeLockLevel(WritableScope.LockLevel.BOTH);
|
||||
this.scopeForInitializers = new WritableScopeImpl(scopeForMemberResolution, this, redeclarationHandler).setDebugName("Initializers").changeLockLevel(WritableScope.LockLevel.BOTH);
|
||||
|
||||
+20
-17
@@ -55,15 +55,12 @@ public class MutableClassDescriptorLite extends MutableDeclarationDescriptor imp
|
||||
private JetType defaultType;
|
||||
private final ClassKind kind;
|
||||
|
||||
private final WritableScope scopeForMemberLookup;
|
||||
private JetScope scopeForMemberLookup;
|
||||
|
||||
private ClassReceiver implicitReceiver;
|
||||
|
||||
public MutableClassDescriptorLite(DeclarationDescriptor containingDeclaration, ClassKind kind, RedeclarationHandler redeclarationHandler) {
|
||||
public MutableClassDescriptorLite(DeclarationDescriptor containingDeclaration, ClassKind kind) {
|
||||
super(containingDeclaration);
|
||||
|
||||
this.scopeForMemberLookup = new WritableScopeImpl(JetScope.EMPTY, this, redeclarationHandler).setDebugName("MemberLookup").changeLockLevel(WritableScope.LockLevel.BOTH);
|
||||
|
||||
this.kind = kind;
|
||||
}
|
||||
|
||||
@@ -103,6 +100,10 @@ public class MutableClassDescriptorLite extends MutableDeclarationDescriptor imp
|
||||
return typeConstructor;
|
||||
}
|
||||
|
||||
public void setScopeForMemberLookup(JetScope scopeForMemberLookup) {
|
||||
this.scopeForMemberLookup = scopeForMemberLookup;
|
||||
}
|
||||
|
||||
public void createTypeConstructor() {
|
||||
assert typeConstructor == null : typeConstructor;
|
||||
this.typeConstructor = new TypeConstructorImpl(
|
||||
@@ -117,9 +118,14 @@ public class MutableClassDescriptorLite extends MutableDeclarationDescriptor imp
|
||||
}
|
||||
}
|
||||
|
||||
private WritableScope getScopeForMemberLookupAsWritableScope() {
|
||||
// hack
|
||||
return (WritableScope) scopeForMemberLookup;
|
||||
}
|
||||
|
||||
public void addSupertypesToScopeForMemberLookup() {
|
||||
for (JetType supertype : supertypes) {
|
||||
scopeForMemberLookup.importScope(supertype.getMemberScope());
|
||||
getScopeForMemberLookupAsWritableScope().importScope(supertype.getMemberScope());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -204,12 +210,9 @@ public class MutableClassDescriptorLite extends MutableDeclarationDescriptor imp
|
||||
return supertypes;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public void setSupertypes(@NotNull Collection<JetType> supertypes) {
|
||||
this.supertypes = supertypes;
|
||||
}
|
||||
|
||||
|
||||
public void setPrimaryConstructor(@NotNull ConstructorDescriptor constructorDescriptor, BindingTrace trace) {
|
||||
@@ -249,12 +252,12 @@ public class MutableClassDescriptorLite extends MutableDeclarationDescriptor imp
|
||||
|
||||
@Override
|
||||
public void addPropertyDescriptor(@NotNull PropertyDescriptor propertyDescriptor) {
|
||||
scopeForMemberLookup.addPropertyDescriptor(propertyDescriptor);
|
||||
getScopeForMemberLookupAsWritableScope().addPropertyDescriptor(propertyDescriptor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addFunctionDescriptor(@NotNull NamedFunctionDescriptor functionDescriptor) {
|
||||
scopeForMemberLookup.addFunctionDescriptor(functionDescriptor);
|
||||
getScopeForMemberLookupAsWritableScope().addFunctionDescriptor(functionDescriptor);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -269,7 +272,7 @@ public class MutableClassDescriptorLite extends MutableDeclarationDescriptor imp
|
||||
|
||||
@Override
|
||||
public void addClassifierDescriptor(@NotNull MutableClassDescriptor classDescriptor) {
|
||||
scopeForMemberLookup.addClassifierDescriptor(classDescriptor);
|
||||
getScopeForMemberLookupAsWritableScope().addClassifierDescriptor(classDescriptor);
|
||||
innerClassesAndObjects.put(classDescriptor.getName(), classDescriptor);
|
||||
}
|
||||
|
||||
@@ -287,7 +290,7 @@ public class MutableClassDescriptorLite extends MutableDeclarationDescriptor imp
|
||||
|
||||
@Override
|
||||
public void addObjectDescriptor(@NotNull MutableClassDescriptor objectDescriptor) {
|
||||
scopeForMemberLookup.addObjectDescriptor(objectDescriptor);
|
||||
getScopeForMemberLookupAsWritableScope().addObjectDescriptor(objectDescriptor);
|
||||
innerClassesAndObjects.put(objectDescriptor.getName(), objectDescriptor);
|
||||
}
|
||||
|
||||
@@ -309,7 +312,7 @@ public class MutableClassDescriptorLite extends MutableDeclarationDescriptor imp
|
||||
|
||||
|
||||
public void lockScopes() {
|
||||
scopeForMemberLookup.changeLockLevel(WritableScope.LockLevel.READING);
|
||||
getScopeForMemberLookupAsWritableScope().changeLockLevel(WritableScope.LockLevel.READING);
|
||||
if (classObjectDescriptor != null) {
|
||||
classObjectDescriptor.lockScopes();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user