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.jet.lang.descriptors.*;
|
||||
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.ResolveSession;
|
||||
import org.jetbrains.jet.lang.resolve.lazy.descriptors.LazyClassDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
|
||||
import javax.inject.Inject;
|
||||
@@ -213,7 +213,7 @@ public class LazyTopDownAnalyzer {
|
||||
|
||||
createPropertyDescriptors(c, resolveSession, topLevelFqNames, properties);
|
||||
|
||||
forceResolveAllClasses(c);
|
||||
resolveAllHeadersInClasses(c);
|
||||
|
||||
declarationResolver.checkRedeclarationsInPackages(resolveSession, topLevelFqNames);
|
||||
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()) {
|
||||
ForceResolveUtil.forceResolveAllContents(classDescriptor);
|
||||
((LazyClassDescriptor) classDescriptor).resolveMemberHeaders();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+20
-5
@@ -405,17 +405,28 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
|
||||
}
|
||||
|
||||
private void doForceResolveAllContents() {
|
||||
ForceResolveUtil.forceResolveAllContents(getAnnotations());
|
||||
|
||||
resolveMemberHeaders();
|
||||
ClassDescriptor classObjectDescriptor = getClassObjectDescriptor();
|
||||
if (classObjectDescriptor != null) {
|
||||
ForceResolveUtil.forceResolveAllContents(classObjectDescriptor);
|
||||
}
|
||||
|
||||
ForceResolveUtil.forceResolveAllContents(getConstructors());
|
||||
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();
|
||||
ForceResolveUtil.forceResolveAllContents(getConstructors());
|
||||
getConstructors();
|
||||
getContainingDeclaration();
|
||||
getThisAsReceiverParameter();
|
||||
getKind();
|
||||
@@ -424,10 +435,14 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
|
||||
getOriginal();
|
||||
getScopeForClassHeaderResolution();
|
||||
getScopeForMemberDeclarationResolution();
|
||||
ForceResolveUtil.forceResolveAllContents(getScopeForMemberLookup());
|
||||
getScopeForMemberLookup().getAllDescriptors();
|
||||
getScopeForInitializerResolution();
|
||||
getUnsubstitutedInnerClassesScope();
|
||||
ForceResolveUtil.forceResolveAllContents(getTypeConstructor());
|
||||
getTypeConstructor().getSupertypes();
|
||||
for (TypeParameterDescriptor typeParameterDescriptor : getTypeConstructor().getParameters()) {
|
||||
typeParameterDescriptor.getUpperBounds();
|
||||
typeParameterDescriptor.getLowerBounds();
|
||||
}
|
||||
getUnsubstitutedPrimaryConstructor();
|
||||
getVisibility();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user