Remove useless methods from PsiClassFinder
Their only implementations called methods on a parameter + a utility. Move the utility to DescriptorResolverUtils
This commit is contained in:
+17
-3
@@ -27,9 +27,7 @@ import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
import org.jetbrains.jet.lang.types.JetType;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
import static com.intellij.psi.util.PsiFormatUtilBase.*;
|
||||
import static org.jetbrains.jet.lang.resolve.DescriptorUtils.isEnumClassObject;
|
||||
@@ -155,4 +153,20 @@ public final class DescriptorResolverUtils {
|
||||
method, PsiSubstitutor.EMPTY, SHOW_NAME | SHOW_PARAMETERS, SHOW_TYPE | SHOW_FQ_CLASS_NAMES);
|
||||
return OBJECT_METHODS.contains(formattedMethod);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static Collection<PsiClass> filterDuplicateClasses(@NotNull PsiClass[] classes) {
|
||||
Set<String> addedQualifiedNames = new HashSet<String>(classes.length);
|
||||
List<PsiClass> result = new ArrayList<PsiClass>(classes.length);
|
||||
|
||||
for (PsiClass psiClass : classes) {
|
||||
String qualifiedName = psiClass.getQualifiedName();
|
||||
|
||||
if (qualifiedName != null && addedQualifiedNames.add(qualifiedName)) {
|
||||
result.add(psiClass);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,8 +22,6 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface PsiClassFinder {
|
||||
enum RuntimeClassesHandleMode {
|
||||
REPORT_ERROR,
|
||||
@@ -35,10 +33,4 @@ public interface PsiClassFinder {
|
||||
|
||||
@Nullable
|
||||
PsiPackage findPsiPackage(@NotNull FqName fqName);
|
||||
|
||||
@NotNull
|
||||
List<PsiClass> findPsiClasses(@NotNull PsiPackage psiPackage);
|
||||
|
||||
@NotNull
|
||||
List<PsiClass> findInnerPsiClasses(@NotNull PsiClass psiClass);
|
||||
}
|
||||
|
||||
-33
@@ -16,8 +16,6 @@
|
||||
|
||||
package org.jetbrains.jet.lang.resolve.java;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -37,8 +35,6 @@ import org.jetbrains.jet.plugin.JetFileType;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.inject.Inject;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class PsiClassFinderImpl implements PsiClassFinder {
|
||||
private static final Logger LOG = Logger.getInstance(PsiClassFinderImpl.class);
|
||||
@@ -133,33 +129,4 @@ public class PsiClassFinderImpl implements PsiClassFinder {
|
||||
public PsiPackage findPsiPackage(@NotNull FqName qualifiedName) {
|
||||
return javaFacade.findPackage(qualifiedName.asString());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<PsiClass> findPsiClasses(@NotNull PsiPackage psiPackage) {
|
||||
return filterDuplicateClasses(psiPackage.getClasses());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<PsiClass> findInnerPsiClasses(@NotNull PsiClass psiClass) {
|
||||
return filterDuplicateClasses(psiClass.getInnerClasses());
|
||||
}
|
||||
|
||||
private static List<PsiClass> filterDuplicateClasses(PsiClass[] classes) {
|
||||
Set<String> addedQualifiedNames = Sets.newHashSet();
|
||||
List<PsiClass> filteredClasses = Lists.newArrayList();
|
||||
|
||||
for (PsiClass aClass : classes) {
|
||||
String qualifiedName = aClass.getQualifiedName();
|
||||
|
||||
if (qualifiedName != null) {
|
||||
if (addedQualifiedNames.add(qualifiedName)) {
|
||||
filteredClasses.add(aClass);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return filteredClasses;
|
||||
}
|
||||
}
|
||||
|
||||
+9
-10
@@ -23,7 +23,6 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.resolve.java.DescriptorResolverUtils;
|
||||
import org.jetbrains.jet.lang.resolve.java.JetJavaMirrorMarker;
|
||||
import org.jetbrains.jet.lang.resolve.java.PsiClassFinder;
|
||||
import org.jetbrains.jet.lang.resolve.java.sam.SingleAbstractMethodUtils;
|
||||
import org.jetbrains.jet.lang.resolve.java.wrapper.PsiFieldWrapper;
|
||||
import org.jetbrains.jet.lang.resolve.java.wrapper.PsiMemberWrapper;
|
||||
@@ -32,7 +31,6 @@ import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public final class MembersCache {
|
||||
@@ -91,7 +89,6 @@ public final class MembersCache {
|
||||
|
||||
@NotNull
|
||||
public static MembersCache buildMembersByNameCache(
|
||||
@NotNull PsiClassFinder finder,
|
||||
@Nullable PsiClass psiClass,
|
||||
@Nullable PsiPackage psiPackage,
|
||||
boolean staticMembers
|
||||
@@ -100,21 +97,23 @@ public final class MembersCache {
|
||||
|
||||
if (psiClass != null) {
|
||||
membersCache.new ClassMemberProcessor(psiClass, staticMembers).process();
|
||||
Collection<PsiClass> innerClasses = DescriptorResolverUtils.filterDuplicateClasses(psiClass.getInnerClasses());
|
||||
membersCache.new ExtraPackageMembersProcessor(innerClasses).process();
|
||||
}
|
||||
else if (psiPackage != null) {
|
||||
Collection<PsiClass> classes = DescriptorResolverUtils.filterDuplicateClasses(psiPackage.getClasses());
|
||||
membersCache.new ExtraPackageMembersProcessor(classes).process();
|
||||
}
|
||||
|
||||
//TODO:
|
||||
List<PsiClass> classes = psiPackage != null ? finder.findPsiClasses(psiPackage) : finder.findInnerPsiClasses(psiClass);
|
||||
membersCache.new ExtraPackageMembersProcessor(classes).process();
|
||||
|
||||
return membersCache;
|
||||
}
|
||||
|
||||
private class ExtraPackageMembersProcessor { // 'extra' means that PSI elements for these members are not just top-level classes
|
||||
@NotNull
|
||||
private final List<PsiClass> psiClasses;
|
||||
private final Collection<PsiClass> psiClasses;
|
||||
|
||||
private ExtraPackageMembersProcessor(@NotNull List<PsiClass> classes) {
|
||||
psiClasses = classes;
|
||||
private ExtraPackageMembersProcessor(@NotNull Collection<PsiClass> psiClasses) {
|
||||
this.psiClasses = psiClasses;
|
||||
}
|
||||
|
||||
private void process() {
|
||||
|
||||
+2
-3
@@ -297,8 +297,7 @@ public final class JavaClassResolver {
|
||||
classDescriptor.setModality(resolveModality(psiClass, classDescriptor));
|
||||
classDescriptor.createTypeConstructor();
|
||||
|
||||
JavaClassNonStaticMembersScope scope = new JavaClassNonStaticMembersScope(classDescriptor, psiClass, false, psiClassFinder,
|
||||
javaDescriptorResolver);
|
||||
JavaClassNonStaticMembersScope scope = new JavaClassNonStaticMembersScope(classDescriptor, psiClass, false, javaDescriptorResolver);
|
||||
classDescriptor.setScopeForMemberLookup(scope);
|
||||
classDescriptor.setScopeForConstructorResolve(scope);
|
||||
|
||||
@@ -504,7 +503,7 @@ public final class JavaClassResolver {
|
||||
classObjectDescriptor.setTypeParameterDescriptors(Collections.<TypeParameterDescriptor>emptyList());
|
||||
classObjectDescriptor.createTypeConstructor();
|
||||
|
||||
JavaClassNonStaticMembersScope scope = new JavaClassNonStaticMembersScope(classObjectDescriptor, psiClass, true, psiClassFinder,
|
||||
JavaClassNonStaticMembersScope scope = new JavaClassNonStaticMembersScope(classObjectDescriptor, psiClass, true,
|
||||
javaDescriptorResolver);
|
||||
WritableScopeImpl writableScope =
|
||||
new WritableScopeImpl(scope, classObjectDescriptor, RedeclarationHandler.THROW_EXCEPTION, "Member lookup scope");
|
||||
|
||||
+3
-3
@@ -178,7 +178,7 @@ public final class JavaNamespaceResolver {
|
||||
trace.record(BindingContext.NAMESPACE, psiPackage, namespaceDescriptor);
|
||||
}
|
||||
|
||||
return new JavaPackageScope(namespaceDescriptor, psiPackage, fqName, javaDescriptorResolver, psiClassFinder);
|
||||
return new JavaPackageScope(namespaceDescriptor, psiPackage, fqName, javaDescriptorResolver);
|
||||
}
|
||||
|
||||
PsiClass psiClass = psiClassFinder.findPsiClass(fqName, PsiClassFinder.RuntimeClassesHandleMode.IGNORE);
|
||||
@@ -198,7 +198,7 @@ public final class JavaNamespaceResolver {
|
||||
trace.record(BindingContext.NAMESPACE, psiClass, namespaceDescriptor);
|
||||
}
|
||||
|
||||
return new JavaClassStaticMembersScope(namespaceDescriptor, fqName, psiClass, psiClassFinder, javaDescriptorResolver);
|
||||
return new JavaClassStaticMembersScope(namespaceDescriptor, fqName, psiClass, javaDescriptorResolver);
|
||||
}
|
||||
|
||||
private void cache(@NotNull FqName fqName, @Nullable JetScope packageScope) {
|
||||
@@ -261,4 +261,4 @@ public final class JavaNamespaceResolver {
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-3
@@ -22,7 +22,6 @@ import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.ConstructorDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.PsiClassFinder;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -44,10 +43,9 @@ public final class JavaClassNonStaticMembersScope extends JavaClassMembersScope
|
||||
@NotNull ClassDescriptor descriptor,
|
||||
@NotNull PsiClass psiClass,
|
||||
boolean staticMembersOfPsiClass,
|
||||
@NotNull PsiClassFinder psiClassFinder,
|
||||
@NotNull JavaDescriptorResolver javaDescriptorResolver
|
||||
) {
|
||||
super(descriptor, psiClass, MembersProvider.forClass(psiClassFinder, psiClass, staticMembersOfPsiClass), javaDescriptorResolver);
|
||||
super(descriptor, psiClass, MembersProvider.forClass(psiClass, staticMembersOfPsiClass), javaDescriptorResolver);
|
||||
this.descriptor = descriptor;
|
||||
this.staticMembersOfPsiClass = staticMembersOfPsiClass;
|
||||
}
|
||||
|
||||
+1
-3
@@ -23,7 +23,6 @@ import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.PsiClassFinder;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
|
||||
@@ -40,10 +39,9 @@ public final class JavaClassStaticMembersScope extends JavaClassMembersScope {
|
||||
@NotNull NamespaceDescriptor descriptor,
|
||||
@NotNull FqName packageFQN,
|
||||
@NotNull PsiClass psiClass,
|
||||
@NotNull PsiClassFinder psiClassFinder,
|
||||
@NotNull JavaDescriptorResolver javaDescriptorResolver
|
||||
) {
|
||||
super(descriptor, psiClass, MembersProvider.forClass(psiClassFinder, psiClass, true), javaDescriptorResolver);
|
||||
super(descriptor, psiClass, MembersProvider.forClass(psiClass, true), javaDescriptorResolver);
|
||||
this.packageFQN = packageFQN;
|
||||
}
|
||||
|
||||
|
||||
+3
-8
@@ -26,7 +26,6 @@ import org.jetbrains.jet.lang.descriptors.*;
|
||||
import org.jetbrains.jet.lang.resolve.java.DescriptorResolverUtils;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.JetJavaMirrorMarker;
|
||||
import org.jetbrains.jet.lang.resolve.java.PsiClassFinder;
|
||||
import org.jetbrains.jet.lang.resolve.java.provider.NamedMembers;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
@@ -43,20 +42,16 @@ public final class JavaPackageScope extends JavaBaseScope {
|
||||
private final PsiPackage psiPackage;
|
||||
@NotNull
|
||||
private final FqName packageFQN;
|
||||
@NotNull
|
||||
private final PsiClassFinder psiClassFinder;
|
||||
|
||||
public JavaPackageScope(
|
||||
@NotNull NamespaceDescriptor descriptor,
|
||||
@NotNull PsiPackage psiPackage,
|
||||
@NotNull FqName packageFQN,
|
||||
@NotNull JavaDescriptorResolver javaDescriptorResolver,
|
||||
@NotNull PsiClassFinder psiClassFinder
|
||||
@NotNull JavaDescriptorResolver javaDescriptorResolver
|
||||
) {
|
||||
super(descriptor, javaDescriptorResolver, MembersProvider.forPackage(psiClassFinder, psiPackage));
|
||||
super(descriptor, javaDescriptorResolver, MembersProvider.forPackage(psiPackage));
|
||||
this.psiPackage = psiPackage;
|
||||
this.packageFQN = packageFQN;
|
||||
this.psiClassFinder = psiClassFinder;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -102,7 +97,7 @@ public final class JavaPackageScope extends JavaBaseScope {
|
||||
}
|
||||
}
|
||||
|
||||
for (PsiClass psiClass : psiClassFinder.findPsiClasses(psiPackage)) {
|
||||
for (PsiClass psiClass : DescriptorResolverUtils.filterDuplicateClasses(psiPackage.getClasses())) {
|
||||
if (DescriptorResolverUtils.isCompiledKotlinPackageClass(psiClass)) continue;
|
||||
|
||||
if (psiClass instanceof JetJavaMirrorMarker) continue;
|
||||
|
||||
+6
-15
@@ -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.PsiClassFinder;
|
||||
import org.jetbrains.jet.lang.resolve.java.provider.MembersCache;
|
||||
import org.jetbrains.jet.lang.resolve.java.provider.NamedMembers;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
@@ -28,34 +27,26 @@ import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
import java.util.Collection;
|
||||
|
||||
/* package */ class MembersProvider {
|
||||
@NotNull
|
||||
private final PsiClassFinder psiClassFinder;
|
||||
@Nullable
|
||||
private final PsiClass psiClass;
|
||||
@Nullable
|
||||
private final PsiPackage psiPackage;
|
||||
private final boolean staticMembers;
|
||||
|
||||
private MembersProvider(
|
||||
@NotNull PsiClassFinder psiClassFinder,
|
||||
@Nullable PsiClass psiClass,
|
||||
@Nullable PsiPackage psiPackage,
|
||||
boolean staticMembers
|
||||
) {
|
||||
this.psiClassFinder = psiClassFinder;
|
||||
private MembersProvider(@Nullable PsiClass psiClass, @Nullable PsiPackage psiPackage, boolean staticMembers) {
|
||||
this.psiClass = psiClass;
|
||||
this.psiPackage = psiPackage;
|
||||
this.staticMembers = staticMembers;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static MembersProvider forPackage(@NotNull PsiClassFinder psiClassFinder, @NotNull PsiPackage psiPackage) {
|
||||
return new MembersProvider(psiClassFinder, null, psiPackage, true);
|
||||
public static MembersProvider forPackage(@NotNull PsiPackage psiPackage) {
|
||||
return new MembersProvider(null, psiPackage, true);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static MembersProvider forClass(@NotNull PsiClassFinder psiClassFinder, @NotNull PsiClass psiClass, boolean staticMembers) {
|
||||
return new MembersProvider(psiClassFinder, psiClass, null, staticMembers);
|
||||
public static MembersProvider forClass(@NotNull PsiClass psiClass, boolean staticMembers) {
|
||||
return new MembersProvider(psiClass, null, staticMembers);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -72,7 +63,7 @@ import java.util.Collection;
|
||||
@NotNull
|
||||
private MembersCache getMembersCache() {
|
||||
if (membersCache == null) {
|
||||
membersCache = MembersCache.buildMembersByNameCache(psiClassFinder, psiClass, psiPackage, staticMembers);
|
||||
membersCache = MembersCache.buildMembersByNameCache(psiClass, psiPackage, staticMembers);
|
||||
}
|
||||
return membersCache;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user