From c7527e4a4d6f4a2ffe96f06e7ef1b44a3e17ac56 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Fri, 31 Oct 2014 16:16:54 +0300 Subject: [PATCH] Name filters filter by Name instead of String --- .../resolve/java/structure/impl/JavaPackageImpl.kt | 5 +++-- .../jetbrains/jet/lang/resolve/lazy/LazyImportScope.kt | 2 +- .../lazy/descriptors/AbstractLazyMemberScope.kt | 2 +- .../jet/lang/resolve/scopes/WritableScopeImpl.kt | 2 +- .../jet/lang/resolve/scopes/WriteThroughScope.kt | 2 +- .../java/lazy/descriptors/LazyJavaClassMemberScope.kt | 2 +- .../java/lazy/descriptors/LazyJavaMemberScope.kt | 10 +++++----- .../java/lazy/descriptors/LazyJavaStaticScope.kt | 10 +++++----- .../jet/lang/resolve/java/structure/JavaPackage.kt | 3 ++- .../impl/EnumEntrySyntheticClassDescriptor.java | 2 +- .../jet/lang/descriptors/impl/SubpackagesScope.kt | 2 +- .../jet/lang/resolve/scopes/AbstractScopeAdapter.kt | 2 +- .../jetbrains/jet/lang/resolve/scopes/ChainedScope.kt | 2 +- .../jet/lang/resolve/scopes/FilteringScope.kt | 2 +- .../lang/resolve/scopes/InnerClassesScopeWrapper.kt | 2 +- .../org/jetbrains/jet/lang/resolve/scopes/JetScope.kt | 4 ++-- .../jetbrains/jet/lang/resolve/scopes/JetScopeImpl.kt | 2 +- .../lang/resolve/scopes/StaticScopeForKotlinClass.kt | 2 +- .../jet/lang/resolve/scopes/SubstitutingScope.kt | 2 +- .../src/org/jetbrains/jet/lang/types/ErrorUtils.java | 4 ++-- .../descriptors/DeserializedMemberScope.kt | 2 +- .../jetbrains/jet/plugin/codeInsight/TipsManager.kt | 7 ++++--- .../jet/plugin/completion/CompletionSession.kt | 5 +---- .../jetbrains/jet/plugin/completion/CompletionUtils.kt | 4 ++++ .../plugin/completion/PackageDirectiveCompletion.kt | 2 +- .../parameterInfo/JetFunctionParameterInfoHandler.java | 9 ++++----- 26 files changed, 48 insertions(+), 45 deletions(-) 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 af8383325cc..0944b54e0bd 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 @@ -23,13 +23,14 @@ import org.jetbrains.jet.lang.resolve.name.FqName import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaElementCollectionFromPsiArrayUtil.classes import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaElementCollectionFromPsiArrayUtil.packages import org.jetbrains.jet.lang.resolve.java.structure.JavaClass +import org.jetbrains.jet.lang.resolve.name.Name public class JavaPackageImpl(psiPackage: PsiPackage) : JavaElementImpl(psiPackage), JavaPackage { - override fun getClasses(nameFilter: (String) -> Boolean): MutableCollection { + override fun getClasses(nameFilter: (Name) -> Boolean): MutableCollection { val psiClasses = getPsi().getClasses().filter { val name = it.getName() - name != null && nameFilter(name) + name != null && nameFilter(Name.identifier(name)) } return classes(psiClasses) } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/LazyImportScope.kt b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/LazyImportScope.kt index 51bff172569..c569108adaa 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/LazyImportScope.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/LazyImportScope.kt @@ -174,7 +174,7 @@ public class LazyImportScope(private val resolveSession: ResolveSession, override fun getDeclarationsByLabel(labelName: Name): Collection = listOf() override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean, - nameFilter: (String) -> Boolean) = collectFromImports(LookupMode.EVERYTHING, JetScopeSelectorUtil.ALL_DESCRIPTORS_SCOPE_SELECTOR) + nameFilter: (Name) -> Boolean) = collectFromImports(LookupMode.EVERYTHING, JetScopeSelectorUtil.ALL_DESCRIPTORS_SCOPE_SELECTOR) override fun getImplicitReceiversHierarchy() = listOf() diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.kt b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.kt index 5f5a82bdc30..c4721fc0529 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.kt @@ -121,7 +121,7 @@ public abstract class AbstractLazyMemberScope() override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean, - nameFilter: (String) -> Boolean): Collection { + nameFilter: (Name) -> Boolean): Collection { val result = LinkedHashSet(descriptorsFromDeclaredElements()) result.addAll(extraDescriptors()) return result diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WritableScopeImpl.kt b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WritableScopeImpl.kt index 1f509d6056a..5486a64f0c5 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WritableScopeImpl.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WritableScopeImpl.kt @@ -95,7 +95,7 @@ public class WritableScopeImpl(scope: JetScope, } override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean, - nameFilter: (String) -> Boolean): Collection { + nameFilter: (Name) -> Boolean): Collection { checkMayRead() changeLockLevel(WritableScope.LockLevel.READING) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WriteThroughScope.kt b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WriteThroughScope.kt index b3f2d914afe..3fb40d6381c 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WriteThroughScope.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WriteThroughScope.kt @@ -165,7 +165,7 @@ public class WriteThroughScope(outerScope: JetScope, private val writableWorker: } override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean, - nameFilter: (String) -> Boolean): Collection { + nameFilter: (Name) -> Boolean): Collection { checkMayRead() if (_allDescriptors == null) { diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaClassMemberScope.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaClassMemberScope.kt index cb43fe37278..ab9171cfba6 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaClassMemberScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaClassMemberScope.kt @@ -230,7 +230,7 @@ public class LazyJavaClassMemberScope( DescriptorUtils.getDispatchReceiverParameterIfNeeded(getContainingDeclaration()) override fun getClassifier(name: Name): ClassifierDescriptor? = nestedClasses(name) - override fun getClassNames(nameFilter: (String) -> Boolean): Collection = nestedClassIndex().keySet() + enumEntryIndex().keySet() + override fun getClassNames(nameFilter: (Name) -> Boolean): Collection = nestedClassIndex().keySet() + enumEntryIndex().keySet() // TODO override fun getImplicitReceiversHierarchy(): List = listOf() 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 551561d2038..f993357f228 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 @@ -288,16 +288,16 @@ public abstract class LazyJavaMemberScope( override fun getOwnDeclaredDescriptors() = getDescriptors() override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean, - nameFilter: (String) -> Boolean) = allDescriptors() + nameFilter: (Name) -> Boolean) = allDescriptors() //TODO: use nameFilter protected fun computeDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean, - nameFilter: (String) -> Boolean): List { + nameFilter: (Name) -> Boolean): List { val result = LinkedHashSet() if (kindFilter(JetScope.DescriptorKind.CLASSIFIER)) { for (name in getClassNames(nameFilter)) { - if (nameFilter(name.asString())) { + if (nameFilter(name)) { // Null signifies that a class found in Java is not present in Kotlin (e.g. package class) result.addIfNotNull(getClassifier(name)) } @@ -323,11 +323,11 @@ public abstract class LazyJavaMemberScope( protected open fun addExtraDescriptors(result: MutableSet, kindFilter: (JetScope.DescriptorKind) -> Boolean, - nameFilter: (String) -> Boolean) { + nameFilter: (Name) -> Boolean) { // Do nothing } - protected abstract fun getClassNames(nameFilter: (String) -> Boolean): Collection + protected abstract fun getClassNames(nameFilter: (Name) -> Boolean): Collection override fun toString() = "Lazy scope for ${getContainingDeclaration()}" diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaStaticScope.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaStaticScope.kt index bcf38e97a61..5ae74f47378 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaStaticScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaStaticScope.kt @@ -102,7 +102,7 @@ public class LazyPackageFragmentScopeForJavaPackage( override fun addExtraDescriptors(result: MutableSet, kindFilter: (JetScope.DescriptorKind) -> Boolean, - nameFilter: (String) -> Boolean) { + nameFilter: (Name) -> Boolean) { result.addAll(deserializedPackageScope().getDescriptors(kindFilter, nameFilter)) } @@ -111,7 +111,7 @@ public class LazyPackageFragmentScopeForJavaPackage( override fun getAllMethodNames(): Collection = getClassNames({ true }) } - override fun getClassNames(nameFilter: (String) -> Boolean): Collection { + override fun getClassNames(nameFilter: (Name) -> Boolean): Collection { return jPackage.getClasses(nameFilter).stream() .filter { c -> c.getOriginKind() != JavaClass.OriginKind.KOTLIN_LIGHT_CLASS } .map { c -> c.getName() }.toList() @@ -134,7 +134,7 @@ public class LazyPackageFragmentScopeForJavaPackage( override fun getAllPropertyNames() = listOf() // we don't use implementation from super which caches all descriptors and does not use filters - override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean, nameFilter: (String) -> Boolean): Collection { + override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean, nameFilter: (Name) -> Boolean): Collection { return computeDescriptors(kindFilter, nameFilter) } } @@ -163,8 +163,8 @@ public class LazyJavaStaticClassScope( } return super.getAllFunctionNames() } - - override fun getClassNames(nameFilter: (String) -> Boolean): Collection = listOf() + + override fun getClassNames(nameFilter: (Name) -> Boolean): Collection = listOf() override fun getClassifier(name: Name): ClassifierDescriptor? = null override fun getSubPackages(): Collection = listOf() diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/structure/JavaPackage.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/structure/JavaPackage.kt index 35e4989bbc1..19d846760e5 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/structure/JavaPackage.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/structure/JavaPackage.kt @@ -17,9 +17,10 @@ package org.jetbrains.jet.lang.resolve.java.structure import org.jetbrains.jet.lang.resolve.name.FqName +import org.jetbrains.jet.lang.resolve.name.Name public trait JavaPackage : JavaElement { - public fun getClasses(nameFilter: (String) -> Boolean): Collection + public fun getClasses(nameFilter: (Name) -> Boolean): Collection public fun getSubPackages(): Collection diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/EnumEntrySyntheticClassDescriptor.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/EnumEntrySyntheticClassDescriptor.java index a83325bd4f2..9eed69fcf4e 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/EnumEntrySyntheticClassDescriptor.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/EnumEntrySyntheticClassDescriptor.java @@ -258,7 +258,7 @@ public class EnumEntrySyntheticClassDescriptor extends ClassDescriptorBase { @Override public Collection getDescriptors( @NotNull Function1 kindFilter, - @NotNull Function1 nameFilter + @NotNull Function1 nameFilter ) { return allDescriptors.invoke(); } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/SubpackagesScope.kt b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/SubpackagesScope.kt index 98e6c4329b4..b6388096654 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/SubpackagesScope.kt +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/SubpackagesScope.kt @@ -36,7 +36,7 @@ public class SubpackagesScope(private val containingDeclaration: PackageViewDesc } override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean, - nameFilter: (String) -> Boolean): Collection { + nameFilter: (Name) -> Boolean): Collection { val subFqNames = containingDeclaration.getModule().getPackageFragmentProvider().getSubPackagesOf(containingDeclaration.getFqName()) val result = ArrayList(subFqNames.size()) for (subFqName in subFqNames) { diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/AbstractScopeAdapter.kt b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/AbstractScopeAdapter.kt index 1918b78dcd1..bb2522bc640 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/AbstractScopeAdapter.kt +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/AbstractScopeAdapter.kt @@ -59,7 +59,7 @@ public abstract class AbstractScopeAdapter : JetScope { } override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean, - nameFilter: (String) -> Boolean): Collection { + nameFilter: (Name) -> Boolean): Collection { return workerScope.getDescriptors(kindFilter, nameFilter) } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/ChainedScope.kt b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/ChainedScope.kt index 93833da9a0c..f0f5d89d05a 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/ChainedScope.kt +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/ChainedScope.kt @@ -60,7 +60,7 @@ public class ChainedScope(private val containingDeclaration: DeclarationDescript override fun getDeclarationsByLabel(labelName: Name) = scopeChain.flatMap { it.getDeclarationsByLabel(labelName) } override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean, - nameFilter: (String) -> Boolean): Collection { + nameFilter: (Name) -> Boolean): Collection { val result = HashSet() scopeChain.flatMapTo(result) { it.getDescriptors(kindFilter, nameFilter) } return result diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/FilteringScope.kt b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/FilteringScope.kt index aac16d8b13c..4aa27620bf5 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/FilteringScope.kt +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/FilteringScope.kt @@ -38,7 +38,7 @@ public class FilteringScope(private val workerScope: JetScope, private val predi override fun getLocalVariable(name: Name) = filterDescriptor(workerScope.getLocalVariable(name)) override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean, - nameFilter: (String) -> Boolean) = workerScope.getDescriptors(kindFilter, nameFilter).filter(predicate) + nameFilter: (Name) -> Boolean) = workerScope.getDescriptors(kindFilter, nameFilter).filter(predicate) override fun getImplicitReceiversHierarchy() = workerScope.getImplicitReceiversHierarchy() diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/InnerClassesScopeWrapper.kt b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/InnerClassesScopeWrapper.kt index aab6640833c..f042332bf5d 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/InnerClassesScopeWrapper.kt +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/InnerClassesScopeWrapper.kt @@ -27,7 +27,7 @@ public class InnerClassesScopeWrapper(override val workerScope: JetScope) : Abst override fun getDeclarationsByLabel(labelName: Name) = workerScope.getDeclarationsByLabel(labelName).filterIsInstance(javaClass()) override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean, - nameFilter: (String) -> Boolean): List { + nameFilter: (Name) -> Boolean): List { if (!kindFilter(JetScope.DescriptorKind.CLASSIFIER)) return listOf() return workerScope.getDescriptors({ it == JetScope.DescriptorKind.CLASSIFIER }, nameFilter).filterIsInstance(javaClass()) } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/JetScope.kt b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/JetScope.kt index fa722dd764d..e371d362d32 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/JetScope.kt +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/JetScope.kt @@ -51,7 +51,7 @@ public trait JetScope { * (that means that the implementation is not obliged to use the filters but may do so when it gives any performance advantage). */ public fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean = DescriptorKind.ALL, - nameFilter: (String) -> Boolean = { true }): Collection + nameFilter: (Name) -> Boolean = { true }): Collection /** * Adds receivers to the list in order of locality, so that the closest (the most local) receiver goes first @@ -100,7 +100,7 @@ public trait JetScope { } class object { - public val ALL_NAME_FILTER: (String) -> Boolean = { true } + public val ALL_NAME_FILTER: (Name) -> Boolean = { true } } } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/JetScopeImpl.kt b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/JetScopeImpl.kt index 23fffe6eeb9..c2b59aaf0b8 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/JetScopeImpl.kt +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/JetScopeImpl.kt @@ -35,7 +35,7 @@ public abstract class JetScopeImpl : JetScope { override fun getDeclarationsByLabel(labelName: Name): Collection = listOf() override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean, - nameFilter: (String) -> Boolean): Collection = listOf() + nameFilter: (Name) -> Boolean): Collection = listOf() override fun getImplicitReceiversHierarchy(): List = listOf() diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/StaticScopeForKotlinClass.kt b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/StaticScopeForKotlinClass.kt index 5cc5e976855..1f8e0c30050 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/StaticScopeForKotlinClass.kt +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/StaticScopeForKotlinClass.kt @@ -38,7 +38,7 @@ public class StaticScopeForKotlinClass( } override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean, - nameFilter: (String) -> Boolean) = functions + nameFilter: (Name) -> Boolean) = functions override fun getOwnDeclaredDescriptors() = functions diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/SubstitutingScope.kt b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/SubstitutingScope.kt index 1af94eea9fb..6cf627484c3 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/SubstitutingScope.kt +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/SubstitutingScope.kt @@ -85,7 +85,7 @@ public class SubstitutingScope(private val workerScope: JetScope, private val su } override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean, - nameFilter: (String) -> Boolean) = _allDescriptors + nameFilter: (Name) -> Boolean) = _allDescriptors override fun getOwnDeclaredDescriptors() = substitute(workerScope.getOwnDeclaredDescriptors()) diff --git a/core/descriptors/src/org/jetbrains/jet/lang/types/ErrorUtils.java b/core/descriptors/src/org/jetbrains/jet/lang/types/ErrorUtils.java index c4b3b9d1c48..6b222277102 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/types/ErrorUtils.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/types/ErrorUtils.java @@ -127,7 +127,7 @@ public class ErrorUtils { @Override public Collection getDescriptors( @NotNull Function1 kindFilter, - @NotNull Function1 nameFilter + @NotNull Function1 nameFilter ) { return Collections.emptyList(); } @@ -208,7 +208,7 @@ public class ErrorUtils { @Override public Collection getDescriptors( @NotNull Function1 kindFilter, - @NotNull Function1 nameFilter + @NotNull Function1 nameFilter ) { throw new IllegalStateException(); } diff --git a/core/serialization/src/org/jetbrains/jet/descriptors/serialization/descriptors/DeserializedMemberScope.kt b/core/serialization/src/org/jetbrains/jet/descriptors/serialization/descriptors/DeserializedMemberScope.kt index cf6f8d6a0d4..a434cc6ae12 100644 --- a/core/serialization/src/org/jetbrains/jet/descriptors/serialization/descriptors/DeserializedMemberScope.kt +++ b/core/serialization/src/org/jetbrains/jet/descriptors/serialization/descriptors/DeserializedMemberScope.kt @@ -120,7 +120,7 @@ public abstract class DeserializedMemberScope protected( protected abstract fun addNonDeclaredDescriptors(result: MutableCollection) override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean, - nameFilter: (String) -> Boolean): Collection = allDescriptors.invoke() + nameFilter: (Name) -> Boolean): Collection = allDescriptors.invoke() override fun getImplicitReceiversHierarchy(): List { val receiver = getImplicitReceiver() diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/TipsManager.kt b/idea/src/org/jetbrains/jet/plugin/codeInsight/TipsManager.kt index 14bbcaa68bf..fa5b6a52759 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/TipsManager.kt +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/TipsManager.kt @@ -30,19 +30,20 @@ import org.jetbrains.jet.lang.types.expressions.ExpressionTypingUtils import java.util.* import org.jetbrains.jet.lang.resolve.bindingContextUtil.getDataFlowInfo import org.jetbrains.jet.lang.resolve.descriptorUtil.isExtension +import org.jetbrains.jet.lang.resolve.name.Name public object TipsManager{ public fun getReferenceVariants(expression: JetSimpleNameExpression, context: BindingContext, - nameFilter: (String) -> Boolean, + nameFilter: (Name) -> Boolean, visibilityFilter: (DeclarationDescriptor) -> Boolean): Collection { return getReferenceVariants(expression, context, nameFilter).filter(visibilityFilter) } private fun getReferenceVariants(expression: JetSimpleNameExpression, context: BindingContext, - nameFilter: (String) -> Boolean): Collection { + nameFilter: (Name) -> Boolean): Collection { val receiverExpression = expression.getReceiverExpression() val parent = expression.getParent() val resolutionScope = context[BindingContext.RESOLUTION_SCOPE, expression] ?: return listOf() @@ -105,7 +106,7 @@ public object TipsManager{ public fun getPackageReferenceVariants(expression: JetSimpleNameExpression, context: BindingContext, - nameFilter: (String) -> Boolean): Collection { + nameFilter: (Name) -> Boolean): Collection { val resolutionScope = context[BindingContext.RESOLUTION_SCOPE, expression] ?: return listOf() return excludeNonPackageDescriptors(resolutionScope.getDescriptors({ it == JetScope.DescriptorKind.PACKAGE }, nameFilter)) } diff --git a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt index 82a4c47736d..50a60f220bb 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt @@ -87,10 +87,7 @@ abstract class CompletionSessionBase(protected val configuration: CompletionSess protected abstract fun doComplete() protected fun getReferenceVariants(): Collection { - return TipsManager.getReferenceVariants(jetReference!!.expression, - bindingContext!!, - { prefixMatcher.prefixMatches(it) }, - { isVisibleDescriptor(it) }) + return TipsManager.getReferenceVariants(jetReference!!.expression, bindingContext!!, prefixMatcher.asNameFilter(), { isVisibleDescriptor(it) }) } protected fun shouldRunTopLevelCompletion(): Boolean { diff --git a/idea/src/org/jetbrains/jet/plugin/completion/CompletionUtils.kt b/idea/src/org/jetbrains/jet/plugin/completion/CompletionUtils.kt index 5671d62d793..b69e492965d 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/CompletionUtils.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/CompletionUtils.kt @@ -28,6 +28,8 @@ import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor import org.jetbrains.jet.lang.descriptors.ClassKind import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor import org.jetbrains.jet.plugin.util.IdeDescriptorRenderers +import com.intellij.codeInsight.completion.PrefixMatcher +import org.jetbrains.jet.lang.resolve.name.Name enum class ItemPriority { MULTIPLE_ARGUMENTS_ITEM @@ -76,3 +78,5 @@ private fun qualifierName(descriptor: DeclarationDescriptor): String? = when (de is PackageFragmentDescriptor -> IdeDescriptorRenderers.SOURCE_CODE.renderFqName(descriptor.fqName) else -> null } + +fun PrefixMatcher.asNameFilter() = { (name: Name) -> !name.isSpecial() && prefixMatches(name.getIdentifier()) } \ No newline at end of file diff --git a/idea/src/org/jetbrains/jet/plugin/completion/PackageDirectiveCompletion.kt b/idea/src/org/jetbrains/jet/plugin/completion/PackageDirectiveCompletion.kt index 166cc4bbd9a..a62f60c1041 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/PackageDirectiveCompletion.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/PackageDirectiveCompletion.kt @@ -53,7 +53,7 @@ object PackageDirectiveCompletion { val resolveSession = ref.expression.getLazyResolveSession() val bindingContext = resolveSession.resolveToElement(ref.expression) - val variants = TipsManager.getPackageReferenceVariants(ref.expression, bindingContext, { prefixMatcher.prefixMatches(it) }) + val variants = TipsManager.getPackageReferenceVariants(ref.expression, bindingContext, prefixMatcher.asNameFilter()) for (variant in variants) { val lookupElement = KotlinLookupElementFactory.createLookupElement(resolveSession, variant) if (!lookupElement.getLookupString().contains(DUMMY_IDENTIFIER)) { diff --git a/idea/src/org/jetbrains/jet/plugin/parameterInfo/JetFunctionParameterInfoHandler.java b/idea/src/org/jetbrains/jet/plugin/parameterInfo/JetFunctionParameterInfoHandler.java index 4e93135ad31..bb6c84ba258 100644 --- a/idea/src/org/jetbrains/jet/plugin/parameterInfo/JetFunctionParameterInfoHandler.java +++ b/idea/src/org/jetbrains/jet/plugin/parameterInfo/JetFunctionParameterInfoHandler.java @@ -399,13 +399,12 @@ public class JetFunctionParameterInfoHandler implements ParameterInfoHandlerWith } }; - Name refName = callNameExpression.getReferencedNameAsName(); + final Name refName = callNameExpression.getReferencedNameAsName(); - final String refNameString = refName.isSpecial() ? null : refName.asString(); - Function1 nameFilter = new Function1() { + Function1 nameFilter = new Function1() { @Override - public Boolean invoke(String s) { - return refNameString == null || s.equals(refNameString); + public Boolean invoke(Name name) { + return name.equals(refName); } }; Collection variants = TipsManager.INSTANCE$.getReferenceVariants(callNameExpression, bindingContext, nameFilter, visibilityFilter);