Limit search scope in DecompiledNavigationUtils
To avoid finding classes that are not under relevant roots
This commit is contained in:
+5
-1
@@ -20,6 +20,7 @@ import com.intellij.openapi.project.Project;
|
|||||||
import com.intellij.openapi.vfs.VirtualFile;
|
import com.intellij.openapi.vfs.VirtualFile;
|
||||||
import com.intellij.psi.PsiFile;
|
import com.intellij.psi.PsiFile;
|
||||||
import com.intellij.psi.PsiManager;
|
import com.intellij.psi.PsiManager;
|
||||||
|
import com.intellij.psi.search.GlobalSearchScope;
|
||||||
import org.jetbrains.annotations.NotNull;
|
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.*;
|
||||||
@@ -27,11 +28,13 @@ import org.jetbrains.jet.lang.psi.JetDeclaration;
|
|||||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
|
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
|
||||||
|
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinderFactory;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
|
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
|
||||||
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingUtils;
|
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingUtils;
|
||||||
import org.jetbrains.jet.plugin.decompiler.DecompilerPackage;
|
import org.jetbrains.jet.plugin.decompiler.DecompilerPackage;
|
||||||
import org.jetbrains.jet.plugin.decompiler.JetClsFile;
|
import org.jetbrains.jet.plugin.decompiler.JetClsFile;
|
||||||
|
import org.jetbrains.jet.plugin.stubindex.JetSourceFilterScope;
|
||||||
|
|
||||||
import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getFqName;
|
import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getFqName;
|
||||||
|
|
||||||
@@ -77,7 +80,8 @@ public final class DecompiledNavigationUtils {
|
|||||||
if (containerFqName == null) {
|
if (containerFqName == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
VirtualFileFinder fileFinder = VirtualFileFinder.SERVICE.getInstance(project);
|
GlobalSearchScope scopeToSearchIn = JetSourceFilterScope.kotlinSourceAndClassFiles(GlobalSearchScope.allScope(project), project);
|
||||||
|
VirtualFileFinder fileFinder = VirtualFileFinderFactory.SERVICE.getInstance(project).create(scopeToSearchIn);
|
||||||
VirtualFile virtualFile = fileFinder.findVirtualFileWithHeader(containerFqName);
|
VirtualFile virtualFile = fileFinder.findVirtualFileWithHeader(containerFqName);
|
||||||
if (virtualFile == null) {
|
if (virtualFile == null) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
+1
-3
@@ -28,7 +28,6 @@ import org.jetbrains.jet.plugin.stubindex.JetSuperClassIndex
|
|||||||
import org.jetbrains.jet.lang.resolve.*
|
import org.jetbrains.jet.lang.resolve.*
|
||||||
import java.util.Collections
|
import java.util.Collections
|
||||||
import org.jetbrains.jet.plugin.search.fileScope
|
import org.jetbrains.jet.plugin.search.fileScope
|
||||||
import org.jetbrains.jet.plugin.stubindex.JetSourceFilterScope
|
|
||||||
|
|
||||||
public open class KotlinDirectInheritorsSearcher() : QueryExecutorBase<PsiClass, DirectClassInheritorsSearch.SearchParameters>(true) {
|
public open class KotlinDirectInheritorsSearcher() : QueryExecutorBase<PsiClass, DirectClassInheritorsSearch.SearchParameters>(true) {
|
||||||
public override fun processQuery(queryParameters: DirectClassInheritorsSearch.SearchParameters, consumer: Processor<PsiClass>) {
|
public override fun processQuery(queryParameters: DirectClassInheritorsSearch.SearchParameters, consumer: Processor<PsiClass>) {
|
||||||
@@ -47,8 +46,7 @@ public open class KotlinDirectInheritorsSearcher() : QueryExecutorBase<PsiClass,
|
|||||||
if (scope == null) return
|
if (scope == null) return
|
||||||
|
|
||||||
ApplicationManager.getApplication()?.runReadAction {
|
ApplicationManager.getApplication()?.runReadAction {
|
||||||
val noLibrarySourceScope = JetSourceFilterScope.kotlinSourceAndClassFiles(scope, baseClass.getProject())
|
JetSuperClassIndex.getInstance().get(name, baseClass.getProject(), scope).stream()
|
||||||
JetSuperClassIndex.getInstance().get(name, baseClass.getProject(), noLibrarySourceScope).stream()
|
|
||||||
.map { candidate -> JetSourceNavigationHelper.getOriginalPsiClassOrCreateLightClass(candidate)}
|
.map { candidate -> JetSourceNavigationHelper.getOriginalPsiClassOrCreateLightClass(candidate)}
|
||||||
.filterNotNull()
|
.filterNotNull()
|
||||||
.filter { candidate -> candidate.isInheritor(baseClass, false) }
|
.filter { candidate -> candidate.isInheritor(baseClass, false) }
|
||||||
|
|||||||
Reference in New Issue
Block a user