Refactor: eliminate remaining usages of ResolverScopeData#getClassOrNamespaceDescriptor()
This commit is contained in:
+12
-4
@@ -130,8 +130,12 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Set<VariableDescriptor> resolveFieldGroupByName(Name name, ResolverScopeData data) {
|
||||
return propertiesResolver.resolveFieldGroupByName(name, data);
|
||||
public Set<VariableDescriptor> resolveFieldGroupByName(
|
||||
@NotNull Name name,
|
||||
@NotNull ResolverScopeData data,
|
||||
@NotNull ClassOrNamespaceDescriptor ownerDescriptor
|
||||
) {
|
||||
return propertiesResolver.resolveFieldGroupByName(name, data, ownerDescriptor);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -160,8 +164,12 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Set<FunctionDescriptor> resolveFunctionGroup(@NotNull Name methodName, @NotNull ResolverScopeData scopeData) {
|
||||
return functionResolver.resolveFunctionGroup(methodName, scopeData);
|
||||
public Set<FunctionDescriptor> resolveFunctionGroup(
|
||||
@NotNull Name methodName,
|
||||
@NotNull ResolverScopeData scopeData,
|
||||
@NotNull ClassOrNamespaceDescriptor ownerDescriptor
|
||||
) {
|
||||
return functionResolver.resolveFunctionGroup(methodName, scopeData, ownerDescriptor);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
+6
-10
@@ -20,7 +20,6 @@ import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiPackage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.resolve.java.descriptor.ClassDescriptorFromJvmBytecode;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
|
||||
/**
|
||||
@@ -32,25 +31,22 @@ public class ResolverClassData extends ResolverScopeData {
|
||||
@Nullable PsiClass psiClass,
|
||||
@Nullable PsiPackage psiPackage,
|
||||
@Nullable FqName fqName,
|
||||
boolean staticMembers,
|
||||
@NotNull ClassDescriptorFromJvmBytecode descriptor
|
||||
boolean staticMembers
|
||||
) {
|
||||
super(psiClass, psiPackage, fqName, staticMembers, descriptor);
|
||||
super(psiClass, psiPackage, fqName, staticMembers);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static ResolverClassData createSyntheticClassObjectClassData(
|
||||
@Nullable PsiClass psiClass,
|
||||
@NotNull ClassDescriptorFromJvmBytecode descriptor
|
||||
@Nullable PsiClass psiClass
|
||||
) {
|
||||
return new ResolverClassData(psiClass, null, null, true, descriptor);
|
||||
return new ResolverClassData(psiClass, null, null, true);
|
||||
}
|
||||
|
||||
public static ResolverClassData createBinaryClassData(
|
||||
@NotNull PsiClass psiClass,
|
||||
@Nullable FqName fqName,
|
||||
@NotNull ClassDescriptorFromJvmBytecode classDescriptor
|
||||
@Nullable FqName fqName
|
||||
) {
|
||||
return new ResolverClassData(psiClass, null, fqName, false, classDescriptor);
|
||||
return new ResolverClassData(psiClass, null, fqName, false);
|
||||
}
|
||||
}
|
||||
|
||||
+2
-4
@@ -20,7 +20,6 @@ import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiPackage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
|
||||
/**
|
||||
@@ -31,9 +30,8 @@ public class ResolverNamespaceData extends ResolverScopeData {
|
||||
public ResolverNamespaceData(
|
||||
@Nullable PsiClass psiClass,
|
||||
@Nullable PsiPackage psiPackage,
|
||||
@NotNull FqName fqName,
|
||||
@NotNull NamespaceDescriptor namespaceDescriptor
|
||||
@NotNull FqName fqName
|
||||
) {
|
||||
super(psiClass, psiPackage, fqName, true, namespaceDescriptor);
|
||||
super(psiClass, psiPackage, fqName, true);
|
||||
}
|
||||
}
|
||||
|
||||
+1
-9
@@ -21,7 +21,6 @@ import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiPackage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassOrNamespaceDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.java.DescriptorResolverUtils;
|
||||
import org.jetbrains.jet.lang.resolve.java.JvmAbi;
|
||||
import org.jetbrains.jet.lang.resolve.java.MembersCache;
|
||||
@@ -55,10 +54,6 @@ public abstract class ResolverScopeData {
|
||||
return kotlin;
|
||||
}
|
||||
|
||||
public ClassOrNamespaceDescriptor getClassOrNamespaceDescriptor() {
|
||||
return classOrNamespaceDescriptor;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private final PsiClass psiClass;
|
||||
@Nullable
|
||||
@@ -67,14 +62,12 @@ public abstract class ResolverScopeData {
|
||||
private final FqName fqName;
|
||||
private final boolean staticMembers;
|
||||
private final boolean kotlin;
|
||||
private final ClassOrNamespaceDescriptor classOrNamespaceDescriptor;
|
||||
|
||||
public ResolverScopeData(
|
||||
@Nullable PsiClass psiClass,
|
||||
@Nullable PsiPackage psiPackage,
|
||||
@Nullable FqName fqName,
|
||||
boolean staticMembers,
|
||||
@NotNull ClassOrNamespaceDescriptor descriptor
|
||||
boolean staticMembers
|
||||
) {
|
||||
DescriptorResolverUtils.checkPsiClassIsNotJet(psiClass);
|
||||
|
||||
@@ -88,7 +81,6 @@ public abstract class ResolverScopeData {
|
||||
|
||||
this.staticMembers = staticMembers;
|
||||
this.kotlin = psiClass != null && DescriptorResolverUtils.isKotlinClass(psiClass);
|
||||
classOrNamespaceDescriptor = descriptor;
|
||||
|
||||
if (fqName != null && fqName.lastSegmentIs(Name.identifier(JvmAbi.PACKAGE_CLASS)) && psiClass != null && kotlin) {
|
||||
throw new IllegalStateException("Kotlin namespace cannot have last segment " + JvmAbi.PACKAGE_CLASS + ": " + fqName);
|
||||
|
||||
+4
-4
@@ -112,7 +112,7 @@ public final class JavaClassObjectResolver {
|
||||
FqName fqName = new FqName(qualifiedName);
|
||||
ClassDescriptorFromJvmBytecode classObjectDescriptor
|
||||
= new ClassDescriptorFromJvmBytecode(containing, ClassKind.CLASS_OBJECT, javaDescriptorResolver);
|
||||
ResolverClassData classObjectData = ResolverClassData.createBinaryClassData(classObjectPsiClass, fqName, classObjectDescriptor);
|
||||
ResolverClassData classObjectData = ResolverClassData.createBinaryClassData(classObjectPsiClass, fqName);
|
||||
classObjectDescriptor.setClassData(classObjectData);
|
||||
classObjectDescriptor.setSupertypes(supertypesResolver.getSupertypes(classObjectDescriptor, new PsiClassWrapper(classObjectPsiClass), classObjectData,
|
||||
Collections.<TypeParameterDescriptor>emptyList()
|
||||
@@ -153,10 +153,10 @@ public final class JavaClassObjectResolver {
|
||||
|
||||
ClassDescriptorFromJvmBytecode classObjectDescriptor = new ClassDescriptorFromJvmBytecode(
|
||||
containing, ClassKind.CLASS_OBJECT, javaDescriptorResolver);
|
||||
ResolverClassData classData = ResolverClassData.createBinaryClassData(psiClass, null, classObjectDescriptor);
|
||||
ResolverClassData classData = ResolverClassData.createBinaryClassData(psiClass, null);
|
||||
classObjectDescriptor.setClassData(classData);
|
||||
|
||||
ResolverClassData data = ResolverClassData.createSyntheticClassObjectClassData(psiClass, classObjectDescriptor);
|
||||
ResolverClassData data = ResolverClassData.createSyntheticClassObjectClassData(psiClass);
|
||||
setUpClassObjectDescriptor(classObjectDescriptor, containing, fqName, data, getClassObjectName(containing.getName().getName()));
|
||||
|
||||
return classObjectDescriptor;
|
||||
@@ -174,7 +174,7 @@ public final class JavaClassObjectResolver {
|
||||
classObjectDescriptor.setVisibility(containing.getVisibility());
|
||||
classObjectDescriptor.setTypeParameterDescriptors(Collections.<TypeParameterDescriptor>emptyList());
|
||||
classObjectDescriptor.createTypeConstructor();
|
||||
JavaClassMembersScope classMembersScope = new JavaClassMembersScope(semanticServices, data);
|
||||
JavaClassMembersScope classMembersScope = new JavaClassMembersScope(classObjectDescriptor, semanticServices, data);
|
||||
WritableScopeImpl writableScope =
|
||||
new WritableScopeImpl(classMembersScope, classObjectDescriptor, RedeclarationHandler.THROW_EXCEPTION, fqName.toString());
|
||||
writableScope.changeLockLevel(WritableScope.LockLevel.BOTH);
|
||||
|
||||
+2
-2
@@ -226,7 +226,7 @@ public final class JavaClassResolver {
|
||||
ClassKind kind = getClassKind(psiClass, jetClassAnnotation);
|
||||
ClassDescriptorFromJvmBytecode classDescriptor
|
||||
= new ClassDescriptorFromJvmBytecode(containingDeclaration, kind, javaDescriptorResolver);
|
||||
ResolverClassData classData = ResolverClassData.createBinaryClassData(psiClass, fqName, classDescriptor);
|
||||
ResolverClassData classData = ResolverClassData.createBinaryClassData(psiClass, fqName);
|
||||
classDescriptor.setClassData(classData);
|
||||
|
||||
cache(javaClassToKotlinFqName(fqName), classDescriptor);
|
||||
@@ -241,7 +241,7 @@ public final class JavaClassResolver {
|
||||
classDescriptor.setVisibility(DescriptorResolverUtils.resolveVisibility(psiClass, jetClassAnnotation));
|
||||
classDescriptor.setModality(resolveModality(psiClass, classDescriptor));
|
||||
classDescriptor.createTypeConstructor();
|
||||
classDescriptor.setScopeForMemberLookup(new JavaClassMembersScope(semanticServices, classData));
|
||||
classDescriptor.setScopeForMemberLookup(new JavaClassMembersScope(classDescriptor, semanticServices, classData));
|
||||
|
||||
String context = "class " + psiClass.getQualifiedName();
|
||||
signatureResolver.initializeTypeParameters(typeParameterDescriptorInitializations, classDescriptor, context);
|
||||
|
||||
+6
-2
@@ -220,7 +220,11 @@ public final class JavaFunctionResolver {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Set<FunctionDescriptor> resolveFunctionGroup(Name methodName, ResolverScopeData scopeData) {
|
||||
public Set<FunctionDescriptor> resolveFunctionGroup(
|
||||
@NotNull Name methodName,
|
||||
@NotNull ResolverScopeData scopeData,
|
||||
@NotNull ClassOrNamespaceDescriptor ownerDescriptor
|
||||
) {
|
||||
MembersCache namedMembersMap = scopeData.getMembersCache();
|
||||
|
||||
NamedMembers namedMembers = namedMembersMap.get(methodName);
|
||||
@@ -229,7 +233,7 @@ public final class JavaFunctionResolver {
|
||||
}
|
||||
PsiClass psiClass = scopeData.getPsiClass();
|
||||
assert psiClass != null;
|
||||
return resolveNamedGroupFunctions(scopeData.getClassOrNamespaceDescriptor(), psiClass, namedMembers, methodName, scopeData);
|
||||
return resolveNamedGroupFunctions(ownerDescriptor, psiClass, namedMembers, methodName, scopeData);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
+2
-2
@@ -137,7 +137,7 @@ public final class JavaNamespaceResolver {
|
||||
javaPackageScope = null;
|
||||
}
|
||||
else {
|
||||
javaPackageScope = new JavaPackageScope(fqName, javaSemanticServices, namespaceData);
|
||||
javaPackageScope = new JavaPackageScope(namespaceDescriptor, fqName, javaSemanticServices, namespaceData);
|
||||
}
|
||||
|
||||
cache(fqName, javaPackageScope);
|
||||
@@ -170,7 +170,7 @@ public final class JavaNamespaceResolver {
|
||||
return null;
|
||||
}
|
||||
|
||||
return new ResolverNamespaceData(psiClass, psiPackage, fqName, namespaceDescriptor);
|
||||
return new ResolverNamespaceData(psiClass, psiPackage, fqName);
|
||||
}
|
||||
|
||||
private void cache(@NotNull FqName fqName, @Nullable JavaPackageScope packageScope) {
|
||||
|
||||
+3
-2
@@ -83,7 +83,8 @@ public final class JavaPropertyResolver {
|
||||
@NotNull
|
||||
public Set<VariableDescriptor> resolveFieldGroupByName(
|
||||
@NotNull Name fieldName,
|
||||
@NotNull ResolverScopeData scopeData
|
||||
@NotNull ResolverScopeData scopeData,
|
||||
@NotNull ClassOrNamespaceDescriptor ownerDescriptor
|
||||
) {
|
||||
|
||||
PsiClass psiClass = scopeData.getPsiClass();
|
||||
@@ -95,7 +96,7 @@ public final class JavaPropertyResolver {
|
||||
|
||||
//noinspection ConstantConditions
|
||||
String qualifiedName = psiClass == null ? scopeData.getPsiPackage().getQualifiedName() : psiClass.getQualifiedName();
|
||||
return resolveNamedGroupProperties(scopeData.getClassOrNamespaceDescriptor(), scopeData, namedMembers, fieldName,
|
||||
return resolveNamedGroupProperties(ownerDescriptor, scopeData, namedMembers, fieldName,
|
||||
"class or namespace " + qualifiedName);
|
||||
}
|
||||
|
||||
|
||||
+11
-9
@@ -23,6 +23,7 @@ import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiPackage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassOrNamespaceDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.VariableDescriptor;
|
||||
@@ -55,20 +56,23 @@ public abstract class JavaBaseScope extends JetScopeImpl {
|
||||
private final Map<Name, Set<VariableDescriptor>> propertyDescriptors = Maps.newHashMap();
|
||||
@Nullable
|
||||
private Collection<DeclarationDescriptor> allDescriptors = null;
|
||||
|
||||
@NotNull
|
||||
private final ClassOrNamespaceDescriptor descriptor;
|
||||
|
||||
protected JavaBaseScope(
|
||||
@NotNull ClassOrNamespaceDescriptor descriptor,
|
||||
@NotNull JavaSemanticServices semanticServices,
|
||||
@NotNull ResolverScopeData resolverScopeData
|
||||
) {
|
||||
this.semanticServices = semanticServices;
|
||||
this.resolverScopeData = resolverScopeData;
|
||||
this.descriptor = descriptor;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public DeclarationDescriptor getContainingDeclaration() {
|
||||
return resolverScopeData.getClassOrNamespaceDescriptor();
|
||||
return descriptor;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -88,7 +92,7 @@ public abstract class JavaBaseScope extends JetScopeImpl {
|
||||
|
||||
@NotNull
|
||||
private Set<VariableDescriptor> computePropertyDescriptors(@NotNull Name name) {
|
||||
return semanticServices.getDescriptorResolver().resolveFieldGroupByName(name, resolverScopeData);
|
||||
return semanticServices.getDescriptorResolver().resolveFieldGroupByName(name, resolverScopeData, descriptor);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -108,7 +112,7 @@ public abstract class JavaBaseScope extends JetScopeImpl {
|
||||
|
||||
@NotNull
|
||||
private Set<FunctionDescriptor> computeFunctionDescriptor(@NotNull Name name) {
|
||||
return semanticServices.getDescriptorResolver().resolveFunctionGroup(name, resolverScopeData);
|
||||
return semanticServices.getDescriptorResolver().resolveFunctionGroup(name, resolverScopeData, descriptor);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -158,14 +162,12 @@ public abstract class JavaBaseScope extends JetScopeImpl {
|
||||
@NotNull Collection<DeclarationDescriptor> result
|
||||
) {
|
||||
// TODO: Trying to hack the situation when we produce namespace descriptor for java class and still want to see inner classes
|
||||
if (getContainingDeclaration() instanceof JavaNamespaceDescriptor) {
|
||||
result.addAll(semanticServices.getDescriptorResolver().resolveInnerClasses(
|
||||
resolverScopeData.getClassOrNamespaceDescriptor(), psiClass, false));
|
||||
if (descriptor instanceof JavaNamespaceDescriptor) {
|
||||
result.addAll(semanticServices.getDescriptorResolver().resolveInnerClasses(descriptor, psiClass, false));
|
||||
}
|
||||
else {
|
||||
result.addAll(semanticServices.getDescriptorResolver().resolveInnerClasses(
|
||||
resolverScopeData.getClassOrNamespaceDescriptor(), psiClass,
|
||||
resolverScopeData.isStaticMembers()));
|
||||
descriptor, psiClass, resolverScopeData.isStaticMembers()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-1
@@ -21,6 +21,7 @@ import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiModifier;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassOrNamespaceDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassifierDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule;
|
||||
@@ -42,9 +43,10 @@ public class JavaClassMembersScope extends JavaBaseScope {
|
||||
private final Map<Name, ClassifierDescriptor> classifiers = Maps.newHashMap();
|
||||
|
||||
public JavaClassMembersScope(
|
||||
@NotNull ClassOrNamespaceDescriptor descriptor,
|
||||
@NotNull JavaSemanticServices semanticServices,
|
||||
@NotNull ResolverScopeData resolverScopeData) {
|
||||
super(semanticServices, resolverScopeData);
|
||||
super(descriptor, semanticServices, resolverScopeData);
|
||||
|
||||
if (resolverScopeData.getPsiClass() == null) {
|
||||
throw new IllegalArgumentException("must pass PsiClass here");
|
||||
|
||||
+3
-1
@@ -18,6 +18,7 @@ package org.jetbrains.jet.lang.resolve.java.scope;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassOrNamespaceDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassifierDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule;
|
||||
@@ -35,10 +36,11 @@ public class JavaPackageScope extends JavaBaseScope {
|
||||
private final FqName packageFQN;
|
||||
|
||||
public JavaPackageScope(
|
||||
@NotNull ClassOrNamespaceDescriptor descriptor,
|
||||
@NotNull FqName packageFQN,
|
||||
@NotNull JavaSemanticServices semanticServices,
|
||||
@NotNull ResolverScopeData resolverNamespaceData) {
|
||||
super(semanticServices, resolverNamespaceData);
|
||||
super(descriptor, semanticServices, resolverNamespaceData);
|
||||
this.packageFQN = packageFQN;
|
||||
|
||||
if (!resolverNamespaceData.isStaticMembers()) {
|
||||
|
||||
Reference in New Issue
Block a user