From 4879868fefcb1a5a403f1f73ee416eb5f85932cd Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 14 May 2012 14:39:33 +0400 Subject: [PATCH] package scope when package is inside package prefix should contain classes with "subnames" (IDEA-82937) --- .../com/intellij/psi/search/PackageScope.java | 20 ++++++++++++++++++- .../intellij/execution/ConfigurationUtil.java | 4 ++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/java/java-psi-api/src/com/intellij/psi/search/PackageScope.java b/java/java-psi-api/src/com/intellij/psi/search/PackageScope.java index e0571b284682..22f7f066b520 100644 --- a/java/java-psi-api/src/com/intellij/psi/search/PackageScope.java +++ b/java/java-psi-api/src/com/intellij/psi/search/PackageScope.java @@ -25,6 +25,9 @@ import com.intellij.openapi.roots.PackageIndex; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.vfs.VfsUtilCore; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.JavaPsiFacade; +import com.intellij.psi.PsiClassOwner; +import com.intellij.psi.PsiFile; import com.intellij.psi.PsiPackage; import org.jetbrains.annotations.NotNull; @@ -35,6 +38,9 @@ public class PackageScope extends GlobalSearchScope { private final PsiPackage myPackage; private final boolean myIncludeSubpackages; private final boolean myIncludeLibraries; + protected final boolean myPartOfPackagePrefix; + protected final String myPackageQualifiedName; + protected final String myPackageQNamePrefix; public PackageScope(@NotNull PsiPackage aPackage, boolean includeSubpackages, final boolean includeLibraries) { super(aPackage.getProject()); @@ -42,8 +48,12 @@ public class PackageScope extends GlobalSearchScope { myIncludeSubpackages = includeSubpackages; Project project = myPackage.getProject(); - myDirs = PackageIndex.getInstance(project).getDirsByPackageName(myPackage.getQualifiedName(), true).findAll(); + myPackageQualifiedName = myPackage.getQualifiedName(); + myDirs = PackageIndex.getInstance(project).getDirsByPackageName(myPackageQualifiedName, true).findAll(); myIncludeLibraries = includeLibraries; + + myPartOfPackagePrefix = JavaPsiFacade.getInstance(getProject()).isPartOfPackagePrefix(myPackageQualifiedName); + myPackageQNamePrefix = myPackageQualifiedName + "."; } @Override @@ -54,6 +64,14 @@ public class PackageScope extends GlobalSearchScope { : Comparing.equal(file.getParent(), scopeDir); if (inDir) return true; } + if (myPartOfPackagePrefix && myIncludeSubpackages) { + final PsiFile psiFile = myPackage.getManager().findFile(file); + if (psiFile instanceof PsiClassOwner) { + final String packageName = ((PsiClassOwner)psiFile).getPackageName(); + if (myPackageQualifiedName.equals(packageName) || + packageName.startsWith(myPackageQNamePrefix)) return true; + } + } return false; } diff --git a/plugins/junit/src/com/intellij/execution/ConfigurationUtil.java b/plugins/junit/src/com/intellij/execution/ConfigurationUtil.java index 82e7e6e9d8a1..4d1b6adc05a7 100644 --- a/plugins/junit/src/com/intellij/execution/ConfigurationUtil.java +++ b/plugins/junit/src/com/intellij/execution/ConfigurationUtil.java @@ -29,7 +29,7 @@ import com.intellij.psi.search.PsiElementProcessorAdapter; import com.intellij.psi.search.PsiShortNamesCache; import com.intellij.psi.search.searches.AnnotatedMembersSearch; import com.intellij.psi.search.searches.ClassInheritorsSearch; -import com.intellij.psi.util.PsiUtilBase; +import com.intellij.psi.util.PsiUtilCore; import com.intellij.util.Processor; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -102,7 +102,7 @@ public class ConfigurationUtil { new Computable() { @Override public Boolean compute() { - return scope.contains(PsiUtilBase.getVirtualFile(containingClass)) && testClassFilter.isAccepted(containingClass); + return scope.contains(PsiUtilCore.getVirtualFile(containingClass)) && testClassFilter.isAccepted(containingClass); } })) { found.add(containingClass);