mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
let findClass work in dumb mode in package scope
This commit is contained in:
@@ -58,13 +58,13 @@ public class PackageScope extends GlobalSearchScope {
|
||||
|
||||
@Override
|
||||
public boolean contains(@NotNull VirtualFile file) {
|
||||
VirtualFile parent = file.getParent();
|
||||
VirtualFile dir = file.isDirectory() ? file : file.getParent();
|
||||
if (!myIncludeSubpackages) {
|
||||
if (myDirs.contains(parent)) return true;
|
||||
if (myDirs.contains(dir)) return true;
|
||||
} else {
|
||||
while (parent != null) {
|
||||
if (myDirs.contains(parent)) return true;
|
||||
parent = parent.getParent();
|
||||
while (dir != null) {
|
||||
if (myDirs.contains(dir)) return true;
|
||||
dir = dir.getParent();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+16
@@ -24,6 +24,8 @@ import com.intellij.openapi.module.ModifiableModuleModel;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleManager;
|
||||
import com.intellij.openapi.module.StdModuleTypes;
|
||||
import com.intellij.openapi.project.DumbService;
|
||||
import com.intellij.openapi.project.DumbServiceImpl;
|
||||
import com.intellij.openapi.roots.ContentEntry;
|
||||
import com.intellij.openapi.roots.ModifiableRootModel;
|
||||
import com.intellij.openapi.roots.ModuleRootManager;
|
||||
@@ -34,6 +36,7 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.PackageScope;
|
||||
import com.intellij.psi.util.FindClassUtil;
|
||||
import com.intellij.testFramework.PsiTestCase;
|
||||
import com.intellij.testFramework.PsiTestUtil;
|
||||
@@ -193,4 +196,17 @@ public class FindClassTest extends PsiTestCase {
|
||||
return newModules;
|
||||
}
|
||||
|
||||
public void testFindClassInDumbMode() {
|
||||
try {
|
||||
DumbServiceImpl.getInstance(myProject).setDumb(true);
|
||||
DumbService.getInstance(myProject).withAlternativeResolveEnabled(() -> {
|
||||
assertNotNull(myJavaFacade.findClass("p.A", GlobalSearchScope.allScope(myProject)));
|
||||
assertNotNull(myJavaFacade.findClass("p.A", new PackageScope(myJavaFacade.findPackage("p"), true, true)));
|
||||
});
|
||||
}
|
||||
finally {
|
||||
DumbServiceImpl.getInstance(myProject).setDumb(false);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user