From c8de43f93eeba2159a672cea79281d55a3cff4a1 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Mon, 19 Jan 2015 17:42:02 +0300 Subject: [PATCH] findPackage() parametrize with scope --- .../jetbrains/kotlin/load/java/JavaClassFinderImpl.java | 2 +- .../jetbrains/kotlin/resolve/jvm/KotlinJavaPsiFacade.java | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/JavaClassFinderImpl.java b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/JavaClassFinderImpl.java index 3fdb0901ef1..20fe28eef4b 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/JavaClassFinderImpl.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/JavaClassFinderImpl.java @@ -102,7 +102,7 @@ public class JavaClassFinderImpl implements JavaClassFinder { @Nullable @Override 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); } } diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/KotlinJavaPsiFacade.java b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/KotlinJavaPsiFacade.java index 2928b06d965..b72ce362f02 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/KotlinJavaPsiFacade.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/KotlinJavaPsiFacade.java @@ -79,7 +79,7 @@ public class KotlinJavaPsiFacade { @NotNull private PsiClass[] findClassesInDumbMode(@NotNull String qualifiedName, @NotNull GlobalSearchScope scope) { String packageName = StringUtil.getPackageName(qualifiedName); - PsiPackage pkg = findPackage(packageName); + PsiPackage pkg = findPackage(packageName, scope); String className = StringUtil.getShortName(qualifiedName); if (pkg == null && packageName.length() < qualifiedName.length()) { PsiClass[] containingClasses = findClassesInDumbMode(packageName, scope); @@ -117,6 +117,7 @@ public class KotlinJavaPsiFacade { getProject().getExtensions(PsiElementFinder.EP_NAME), new Function1() { @Override public Boolean invoke(PsiElementFinder finder) { + // TODO: Filter out PsiElementFinderImpl in idea 14 return !(finder instanceof KotlinFinderMarker); } }); @@ -131,7 +132,9 @@ public class KotlinJavaPsiFacade { 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 cache = SoftReference.dereference(myPackageCache); if (cache == null) { myPackageCache = new SoftReference>(cache = new ConcurrentHashMap());