diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/impl/JavaPackageImpl.kt b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/impl/JavaPackageImpl.kt index be51bd32c90..9748cf0454c 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/impl/JavaPackageImpl.kt +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/structure/impl/JavaPackageImpl.kt @@ -28,7 +28,7 @@ import com.intellij.psi.search.GlobalSearchScope public class JavaPackageImpl(psiPackage: PsiPackage, private val scope: GlobalSearchScope) : JavaElementImpl(psiPackage), JavaPackage { - override fun getClasses(nameFilter: (Name) -> Boolean): MutableCollection { + override fun getClasses(nameFilter: (Name) -> Boolean): Collection { val psiClasses = getPsi().getClasses(scope).filter { val name = it.getName() name != null && nameFilter(Name.identifier(name)) diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaMemberScope.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaMemberScope.kt index 13dfc84866f..b6585ab7057 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaMemberScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaMemberScope.kt @@ -49,6 +49,8 @@ public abstract class LazyJavaMemberScope( protected val c: LazyJavaResolverContextWithTypes, private val containingDeclaration: DeclarationDescriptor ) : JetScope { + // this lazy value is not used at all in LazyPackageFragmentScopeForJavaPackage because we do not use caching there + // but is placed in the base class to not duplicate code private val allDescriptors = c.storageManager.createRecursionTolerantLazyValue>( { computeDescriptors(JetScope.ALL_KINDS_MASK, JetScope.ALL_NAME_FILTER) }, // This is to avoid the following recursive case: @@ -280,6 +282,8 @@ public abstract class LazyJavaMemberScope( } override fun getProperties(name: Name): Collection = properties(name) + + // we do not have nameFilter here because it only makes sense in package but java package does not contain any properties protected open fun getAllPropertyNames(): Collection = memberIndex().getAllFieldNames() override fun getLocalVariable(name: Name): VariableDescriptor? = null diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/resolve/StubBasedPackageMemberDeclarationProvider.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/resolve/StubBasedPackageMemberDeclarationProvider.kt index 2581173436e..24b4e3f9399 100644 --- a/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/resolve/StubBasedPackageMemberDeclarationProvider.kt +++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/resolve/StubBasedPackageMemberDeclarationProvider.kt @@ -63,7 +63,8 @@ public class StubBasedPackageMemberDeclarationProvider( .stream() .map { FqName(it) } .filter { !it.isRoot() && it.parent() == fqName && nameFilter(it.shortName()) } - .flatMapTo(this) { index[it.asString(), project, searchScope].stream() } + .toSet() + .flatMapTo(this) { index[it.asString(), project, searchScope] } } override fun getClassOrObjectDeclarations(name: Name): Collection {