From 132cb26e0476b1c57249669c0aa9a43db1c01519 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Wed, 3 Dec 2014 18:50:58 +0300 Subject: [PATCH] Code improvements after review --- .../codeInsight/ReferenceVariantsHelper.kt | 6 ++--- .../jet/plugin/caches/KotlinIndicesHelper.kt | 2 +- .../plugin/completion/CompletionSession.kt | 2 +- .../plugin/completion/CompletionSorting.kt | 9 +++----- .../plugin/completion/LookupElementFactory.kt | 22 +++++++++---------- .../completion/PackageDirectiveCompletion.kt | 2 +- 6 files changed, 20 insertions(+), 23 deletions(-) diff --git a/idea/ide-common/src/org/jetbrains/jet/plugin/codeInsight/ReferenceVariantsHelper.kt b/idea/ide-common/src/org/jetbrains/jet/plugin/codeInsight/ReferenceVariantsHelper.kt index 78fd743f1e4..1a788ed33d4 100644 --- a/idea/ide-common/src/org/jetbrains/jet/plugin/codeInsight/ReferenceVariantsHelper.kt +++ b/idea/ide-common/src/org/jetbrains/jet/plugin/codeInsight/ReferenceVariantsHelper.kt @@ -81,7 +81,7 @@ public class ReferenceVariantsHelper( return resolutionScope.getDescriptorsFiltered(restrictedFilter, nameFilter) } - val pair = getReferenceVariantsReceiver(expression) + val pair = getExplicitReceiverData(expression) if (pair != null) { val (receiverExpression, callType) = pair fun filterIfInfix(descriptor: DeclarationDescriptor) @@ -139,7 +139,7 @@ public class ReferenceVariantsHelper( } public fun getReferenceVariantsReceivers(expression: JetSimpleNameExpression): ReceiversData { - val receiverData = getReferenceVariantsReceiver(expression) + val receiverData = getExplicitReceiverData(expression) if (receiverData != null) { val receiverExpression = receiverData.first val expressionType = context[BindingContext.EXPRESSION_TYPE, receiverExpression] ?: return ReceiversData.Empty @@ -184,7 +184,7 @@ public class ReferenceVariantsHelper( } class object { - public fun getReferenceVariantsReceiver(expression: JetSimpleNameExpression): Pair? { + public fun getExplicitReceiverData(expression: JetSimpleNameExpression): Pair? { val receiverExpression = expression.getReceiverExpression() ?: return null val parent = expression.getParent() val callType = when (parent) { diff --git a/idea/src/org/jetbrains/jet/plugin/caches/KotlinIndicesHelper.kt b/idea/src/org/jetbrains/jet/plugin/caches/KotlinIndicesHelper.kt index 509ae3c9738..2ee6dfe3b23 100644 --- a/idea/src/org/jetbrains/jet/plugin/caches/KotlinIndicesHelper.kt +++ b/idea/src/org/jetbrains/jet/plugin/caches/KotlinIndicesHelper.kt @@ -111,7 +111,7 @@ public class KotlinIndicesHelper( dataFlowInfo: DataFlowInfo) { val matchingNames = fqNames.filter { nameFilter(it.shortName().asString()) } - val receiverPair = ReferenceVariantsHelper.getReferenceVariantsReceiver(expression) + val receiverPair = ReferenceVariantsHelper.getExplicitReceiverData(expression) if (receiverPair != null) { val (receiverExpression, callType) = receiverPair diff --git a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt index e7dc247f66e..6fe7e23546e 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt @@ -87,7 +87,7 @@ abstract class CompletionSessionBase(protected val configuration: CompletionSess receiverTypes } else { - null + listOf() } LookupElementFactory(receiverTypes) } diff --git a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSorting.kt b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSorting.kt index d15652ce419..7ccaa6b56ef 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSorting.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSorting.kt @@ -40,9 +40,8 @@ import java.util.HashSet import org.jetbrains.jet.lang.resolve.name.FqName import org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap import org.jetbrains.jet.plugin.quickfix.ImportInsertHelper -import org.jetbrains.jet.lang.descriptors.PropertyDescriptor import org.jetbrains.jet.lang.descriptors.FunctionDescriptor -import org.jetbrains.jet.lang.types.JetType +import org.jetbrains.jet.lang.descriptors.VariableDescriptor public fun CompletionResultSet.addKotlinSorting(parameters: CompletionParameters): CompletionResultSet { var sorter = CompletionSorter.defaultSorter(parameters, getPrefixMatcher())!! @@ -75,8 +74,7 @@ private object SmartCompletionPriorityWeigher : LookupElementWeigher("kotlin.sma private object KindWeigher : LookupElementWeigher("kotlin.kind") { private enum class Weight { - localOrParameter - property + variable // variable or property function keyword default @@ -99,8 +97,7 @@ private object KindWeigher : LookupElementWeigher("kotlin.kind") { is DeclarationDescriptorLookupObject -> { val descriptor = o.descriptor when (descriptor) { - is LocalVariableDescriptor, is ValueParameterDescriptor -> CompoundWeight(Weight.localOrParameter) - is PropertyDescriptor -> CompoundWeight(Weight.property, element.getUserData(CALLABLE_WEIGHT_KEY)) + is VariableDescriptor -> CompoundWeight(Weight.variable, element.getUserData(CALLABLE_WEIGHT_KEY)) is FunctionDescriptor -> CompoundWeight(Weight.function, element.getUserData(CALLABLE_WEIGHT_KEY)) is PackageViewDescriptor -> CompoundWeight(Weight.packages) else -> CompoundWeight(Weight.default) diff --git a/idea/src/org/jetbrains/jet/plugin/completion/LookupElementFactory.kt b/idea/src/org/jetbrains/jet/plugin/completion/LookupElementFactory.kt index 0d9359dcb13..c26e73afd41 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/LookupElementFactory.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/LookupElementFactory.kt @@ -40,7 +40,7 @@ import com.intellij.codeInsight.lookup.DefaultLookupItemRenderer import org.jetbrains.jet.lang.types.TypeUtils public class LookupElementFactory( - private val receiverTypes: Collection? + private val receiverTypes: Collection ) { public fun createLookupElement( resolutionFacade: ResolutionFacade, @@ -52,18 +52,19 @@ public class LookupElementFactory( else descriptor var element = createLookupElement(resolutionFacade, _descriptor, DescriptorToSourceUtils.descriptorToDeclaration(_descriptor)) + + val weight = callableWeight(descriptor) + if (weight != null) { + element.putUserData(CALLABLE_WEIGHT_KEY, weight) // store for use in lookup elements sorting + } + if (boldImmediateMembers) { - element = element.boldIfImmediate(descriptor) + element = element.boldIfImmediate(weight) } return element } - private fun LookupElement.boldIfImmediate(descriptor: DeclarationDescriptor): LookupElement { - val weight = callableWeight(descriptor) - if (weight != null) { - putUserData(CALLABLE_WEIGHT_KEY, weight) // store for use in lookup elements sorting - } - + private fun LookupElement.boldIfImmediate(weight: CallableWeight?): LookupElement { val style = when (weight) { CallableWeight.thisClassMember, CallableWeight.thisTypeExtension -> Style.BOLD CallableWeight.notApplicableReceiverNullable -> Style.GRAYED @@ -204,8 +205,7 @@ public class LookupElementFactory( } private fun callableWeight(descriptor: DeclarationDescriptor): CallableWeight? { - if (receiverTypes == null) return null - if (descriptor !is CallableMemberDescriptor) return null + if (descriptor !is CallableDescriptor) return null val isReceiverNullable = receiverTypes.isNotEmpty() && receiverTypes.all { it.isNullable() } val receiverParameter = descriptor.getExtensionReceiverParameter() @@ -229,7 +229,7 @@ public class LookupElementFactory( is PackageFragmentDescriptor -> CallableWeight.global is ClassifierDescriptor -> { - if (descriptor.getKind() == CallableMemberDescriptor.Kind.DECLARATION) + if ((descriptor as CallableMemberDescriptor).getKind() == CallableMemberDescriptor.Kind.DECLARATION) CallableWeight.thisClassMember else CallableWeight.baseClassMember diff --git a/idea/src/org/jetbrains/jet/plugin/completion/PackageDirectiveCompletion.kt b/idea/src/org/jetbrains/jet/plugin/completion/PackageDirectiveCompletion.kt index d8987e5e3d6..0a5da4d21a3 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/PackageDirectiveCompletion.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/PackageDirectiveCompletion.kt @@ -52,7 +52,7 @@ object PackageDirectiveCompletion { val variants = ReferenceVariantsHelper(bindingContext, { true }).getPackageReferenceVariants(ref.expression, prefixMatcher.asNameFilter()) for (variant in variants) { - val lookupElement = LookupElementFactory(null).createLookupElement(resolutionFacade, variant, false) + val lookupElement = LookupElementFactory(listOf()).createLookupElement(resolutionFacade, variant, false) if (!lookupElement.getLookupString().contains(DUMMY_IDENTIFIER)) { result.addElement(lookupElement) }