Allow to only resolve declaration headers in classes, without forcing everything to be resolved
This commit is contained in:
@@ -23,9 +23,9 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.psi.*;
|
import org.jetbrains.jet.lang.psi.*;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.ForceResolveUtil;
|
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.LazyImportScope;
|
import org.jetbrains.jet.lang.resolve.lazy.LazyImportScope;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
||||||
|
import org.jetbrains.jet.lang.resolve.lazy.descriptors.LazyClassDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
@@ -213,7 +213,7 @@ public class LazyTopDownAnalyzer {
|
|||||||
|
|
||||||
createPropertyDescriptors(c, resolveSession, topLevelFqNames, properties);
|
createPropertyDescriptors(c, resolveSession, topLevelFqNames, properties);
|
||||||
|
|
||||||
forceResolveAllClasses(c);
|
resolveAllHeadersInClasses(c);
|
||||||
|
|
||||||
declarationResolver.checkRedeclarationsInPackages(resolveSession, topLevelFqNames);
|
declarationResolver.checkRedeclarationsInPackages(resolveSession, topLevelFqNames);
|
||||||
declarationResolver.checkRedeclarationsInInnerClassNames(c);
|
declarationResolver.checkRedeclarationsInInnerClassNames(c);
|
||||||
@@ -240,9 +240,9 @@ public class LazyTopDownAnalyzer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void forceResolveAllClasses(TopDownAnalysisContext c) {
|
private static void resolveAllHeadersInClasses(TopDownAnalysisContext c) {
|
||||||
for (ClassDescriptorWithResolutionScopes classDescriptor : c.getAllClasses()) {
|
for (ClassDescriptorWithResolutionScopes classDescriptor : c.getAllClasses()) {
|
||||||
ForceResolveUtil.forceResolveAllContents(classDescriptor);
|
((LazyClassDescriptor) classDescriptor).resolveMemberHeaders();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+20
-5
@@ -405,17 +405,28 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void doForceResolveAllContents() {
|
private void doForceResolveAllContents() {
|
||||||
ForceResolveUtil.forceResolveAllContents(getAnnotations());
|
resolveMemberHeaders();
|
||||||
|
|
||||||
ClassDescriptor classObjectDescriptor = getClassObjectDescriptor();
|
ClassDescriptor classObjectDescriptor = getClassObjectDescriptor();
|
||||||
if (classObjectDescriptor != null) {
|
if (classObjectDescriptor != null) {
|
||||||
ForceResolveUtil.forceResolveAllContents(classObjectDescriptor);
|
ForceResolveUtil.forceResolveAllContents(classObjectDescriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ForceResolveUtil.forceResolveAllContents(getConstructors());
|
||||||
ForceResolveUtil.forceResolveAllContents(getDescriptorsForExtraClassObjects());
|
ForceResolveUtil.forceResolveAllContents(getDescriptorsForExtraClassObjects());
|
||||||
|
ForceResolveUtil.forceResolveAllContents(getScopeForMemberLookup());
|
||||||
|
ForceResolveUtil.forceResolveAllContents(getTypeConstructor());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Note: headers of member classes' members are not resolved
|
||||||
|
public void resolveMemberHeaders() {
|
||||||
|
ForceResolveUtil.forceResolveAllContents(getAnnotations());
|
||||||
|
|
||||||
|
getClassObjectDescriptor();
|
||||||
|
|
||||||
|
getDescriptorsForExtraClassObjects();
|
||||||
|
|
||||||
getClassObjectType();
|
getClassObjectType();
|
||||||
ForceResolveUtil.forceResolveAllContents(getConstructors());
|
getConstructors();
|
||||||
getContainingDeclaration();
|
getContainingDeclaration();
|
||||||
getThisAsReceiverParameter();
|
getThisAsReceiverParameter();
|
||||||
getKind();
|
getKind();
|
||||||
@@ -424,10 +435,14 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
|
|||||||
getOriginal();
|
getOriginal();
|
||||||
getScopeForClassHeaderResolution();
|
getScopeForClassHeaderResolution();
|
||||||
getScopeForMemberDeclarationResolution();
|
getScopeForMemberDeclarationResolution();
|
||||||
ForceResolveUtil.forceResolveAllContents(getScopeForMemberLookup());
|
getScopeForMemberLookup().getAllDescriptors();
|
||||||
getScopeForInitializerResolution();
|
getScopeForInitializerResolution();
|
||||||
getUnsubstitutedInnerClassesScope();
|
getUnsubstitutedInnerClassesScope();
|
||||||
ForceResolveUtil.forceResolveAllContents(getTypeConstructor());
|
getTypeConstructor().getSupertypes();
|
||||||
|
for (TypeParameterDescriptor typeParameterDescriptor : getTypeConstructor().getParameters()) {
|
||||||
|
typeParameterDescriptor.getUpperBounds();
|
||||||
|
typeParameterDescriptor.getLowerBounds();
|
||||||
|
}
|
||||||
getUnsubstitutedPrimaryConstructor();
|
getUnsubstitutedPrimaryConstructor();
|
||||||
getVisibility();
|
getVisibility();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user