findPackage() parametrize with scope
This commit is contained in:
@@ -102,7 +102,7 @@ public class JavaClassFinderImpl implements JavaClassFinder {
|
|||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public JavaPackage findPackage(@NotNull FqName fqName) {
|
public JavaPackage findPackage(@NotNull FqName fqName) {
|
||||||
PsiPackage psiPackage = javaFacade.findPackage(fqName.asString());
|
PsiPackage psiPackage = javaFacade.findPackage(fqName.asString(), javaSearchScope);
|
||||||
return psiPackage == null ? null : new JavaPackageImpl(psiPackage, javaSearchScope);
|
return psiPackage == null ? null : new JavaPackageImpl(psiPackage, javaSearchScope);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-2
@@ -79,7 +79,7 @@ public class KotlinJavaPsiFacade {
|
|||||||
@NotNull
|
@NotNull
|
||||||
private PsiClass[] findClassesInDumbMode(@NotNull String qualifiedName, @NotNull GlobalSearchScope scope) {
|
private PsiClass[] findClassesInDumbMode(@NotNull String qualifiedName, @NotNull GlobalSearchScope scope) {
|
||||||
String packageName = StringUtil.getPackageName(qualifiedName);
|
String packageName = StringUtil.getPackageName(qualifiedName);
|
||||||
PsiPackage pkg = findPackage(packageName);
|
PsiPackage pkg = findPackage(packageName, scope);
|
||||||
String className = StringUtil.getShortName(qualifiedName);
|
String className = StringUtil.getShortName(qualifiedName);
|
||||||
if (pkg == null && packageName.length() < qualifiedName.length()) {
|
if (pkg == null && packageName.length() < qualifiedName.length()) {
|
||||||
PsiClass[] containingClasses = findClassesInDumbMode(packageName, scope);
|
PsiClass[] containingClasses = findClassesInDumbMode(packageName, scope);
|
||||||
@@ -117,6 +117,7 @@ public class KotlinJavaPsiFacade {
|
|||||||
getProject().getExtensions(PsiElementFinder.EP_NAME), new Function1<PsiElementFinder, Boolean>() {
|
getProject().getExtensions(PsiElementFinder.EP_NAME), new Function1<PsiElementFinder, Boolean>() {
|
||||||
@Override
|
@Override
|
||||||
public Boolean invoke(PsiElementFinder finder) {
|
public Boolean invoke(PsiElementFinder finder) {
|
||||||
|
// TODO: Filter out PsiElementFinderImpl in idea 14
|
||||||
return !(finder instanceof KotlinFinderMarker);
|
return !(finder instanceof KotlinFinderMarker);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -131,7 +132,9 @@ public class KotlinJavaPsiFacade {
|
|||||||
return elementFinders.toArray(new KotlinPsiElementFinderWrapper[elementFinders.size()]);
|
return elementFinders.toArray(new KotlinPsiElementFinderWrapper[elementFinders.size()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PsiPackage findPackage(@NotNull String qualifiedName) {
|
public PsiPackage findPackage(@NotNull String qualifiedName, GlobalSearchScope searchScope) {
|
||||||
|
assert searchScope == this.searchScope : "Illegal scope is used for package search";
|
||||||
|
|
||||||
ConcurrentMap<String, PsiPackage> cache = SoftReference.dereference(myPackageCache);
|
ConcurrentMap<String, PsiPackage> cache = SoftReference.dereference(myPackageCache);
|
||||||
if (cache == null) {
|
if (cache == null) {
|
||||||
myPackageCache = new SoftReference<ConcurrentMap<String, PsiPackage>>(cache = new ConcurrentHashMap<String, PsiPackage>());
|
myPackageCache = new SoftReference<ConcurrentMap<String, PsiPackage>>(cache = new ConcurrentHashMap<String, PsiPackage>());
|
||||||
|
|||||||
Reference in New Issue
Block a user