From 3d523ba32576f0fdbc745f8059c961fcb9f06df4 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Tue, 29 Jul 2014 19:43:06 +0400 Subject: [PATCH] Refactored code --- .../plugin/completion/JetCompletionCharFilter.kt | 3 ++- .../KotlinNamedParametersContributor.kt | 15 +++++---------- .../plugin/completion/weigher/JetKindWeigher.java | 5 ----- .../org/jetbrains/jet/plugin/util/psiFilters.kt | 2 +- 4 files changed, 8 insertions(+), 17 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/completion/JetCompletionCharFilter.kt b/idea/src/org/jetbrains/jet/plugin/completion/JetCompletionCharFilter.kt index 0330a03b763..c4b3dd091ec 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/JetCompletionCharFilter.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/JetCompletionCharFilter.kt @@ -26,6 +26,7 @@ import com.intellij.openapi.util.Key public open class JetCompletionCharFilter() : CharFilter() { class object { public val ACCEPT_OPENING_BRACE: Key = Key("JetCompletionCharFilter.ACCEPT_OPENNING_BRACE") + public val ACCEPT_EQ: Key = Key("JetCompletionCharFilter.ACCEPT_EQ") } public override fun acceptChar(c : Char, prefixLength : Int, lookup : Lookup) : Result? { @@ -47,7 +48,7 @@ public open class JetCompletionCharFilter() : CharFilter() { if (c == '=') { val currentItem = lookup.getCurrentItem() - if (currentItem != null && (currentItem.getObject() is KotlinNamedParametersContributor.NamedParameterLookupObject)) { + if (currentItem != null && currentItem.getUserData(ACCEPT_EQ) ?: false) { return Result.SELECT_ITEM_AND_FINISH_LOOKUP } } diff --git a/idea/src/org/jetbrains/jet/plugin/completion/KotlinNamedParametersContributor.kt b/idea/src/org/jetbrains/jet/plugin/completion/KotlinNamedParametersContributor.kt index ab1d83a9ae7..1aa8d08717c 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/KotlinNamedParametersContributor.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/KotlinNamedParametersContributor.kt @@ -30,7 +30,6 @@ import org.jetbrains.jet.lang.psi.JetCallElement import org.jetbrains.jet.plugin.references.JetReference import org.jetbrains.jet.lang.descriptors.FunctionDescriptor import com.intellij.codeInsight.lookup.LookupElementBuilder -import org.jetbrains.jet.plugin.completion.KotlinNamedParametersContributor.NamedParameterLookupObject import org.jetbrains.jet.plugin.JetIcons import org.jetbrains.jet.lang.resolve.name.Name import org.jetbrains.jet.plugin.completion.weigher.addJetSorting @@ -49,8 +48,6 @@ import org.jetbrains.jet.plugin.util.FirstChildInParentFilter import org.jetbrains.jet.lang.psi.psiUtil.getCallNameExpression public class KotlinNamedParametersContributor : CompletionContributor() { - public class NamedParameterLookupObject(val name: Name) {} - private val InNamedParameterFilter = AndFilter( LeafElementFilter(JetTokens.IDENTIFIER), OrFilter( @@ -75,11 +72,8 @@ public class KotlinNamedParametersContributor : CompletionContributor() { private fun doParamsCompletion(parameters: CompletionParameters, result: CompletionResultSet) { val valueArgument = PsiTreeUtil.getParentOfType(parameters.getPosition(), javaClass())!! - val callElement = PsiTreeUtil.getParentOfType(valueArgument, javaClass()) - if (callElement == null) return - - val callSimpleName = callElement.getCallNameExpression() - if (callSimpleName == null) return + val callElement = PsiTreeUtil.getParentOfType(valueArgument, javaClass()) ?: return + val callSimpleName = callElement.getCallNameExpression() ?: return val kotlinResultSet = result.addJetSorting(parameters) @@ -95,12 +89,13 @@ public class KotlinNamedParametersContributor : CompletionContributor() { for (parameter in funDescriptor.getValueParameters()) { val name = parameter.getName().asString() if (result.getPrefixMatcher().prefixMatches(name) && name !in usedArguments) { - val lookupElement = LookupElementBuilder.create(NamedParameterLookupObject(parameter.getName()), "${name}") - .withPresentableText("${name} = ") + val lookupElement = LookupElementBuilder.create("$name") + .withPresentableText("$name = ") .withTailText("${DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderType(parameter.getType())}") .withIcon(JetIcons.PARAMETER) .withInsertHandler(NamedParameterInsertHandler) .assignPriority(ItemPriority.NAMED_PARAMETER) + lookupElement.putUserData(JetCompletionCharFilter.ACCEPT_EQ, true); kotlinResultSet.addElement(lookupElement) } diff --git a/idea/src/org/jetbrains/jet/plugin/completion/weigher/JetKindWeigher.java b/idea/src/org/jetbrains/jet/plugin/completion/weigher/JetKindWeigher.java index 1201801a8d4..d82a45dbf20 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/weigher/JetKindWeigher.java +++ b/idea/src/org/jetbrains/jet/plugin/completion/weigher/JetKindWeigher.java @@ -25,7 +25,6 @@ import org.jetbrains.jet.lang.descriptors.PropertyDescriptor; import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor; import org.jetbrains.jet.lang.descriptors.impl.LocalVariableDescriptor; import org.jetbrains.jet.plugin.completion.JetLookupObject; -import org.jetbrains.jet.plugin.completion.KotlinNamedParametersContributor; class JetKindWeigher extends LookupElementWeigher { JetKindWeigher() { @@ -35,7 +34,6 @@ class JetKindWeigher extends LookupElementWeigher { private enum Weight { localOrParameter, property, - namedParameter, probableKeyword, normal, packages @@ -60,9 +58,6 @@ class JetKindWeigher extends LookupElementWeigher { } } } - else if (object instanceof KotlinNamedParametersContributor.NamedParameterLookupObject) { - return Weight.namedParameter; - } else if (object instanceof String) { return Weight.probableKeyword; } diff --git a/idea/src/org/jetbrains/jet/plugin/util/psiFilters.kt b/idea/src/org/jetbrains/jet/plugin/util/psiFilters.kt index eb098708b11..bc38eef663c 100644 --- a/idea/src/org/jetbrains/jet/plugin/util/psiFilters.kt +++ b/idea/src/org/jetbrains/jet/plugin/util/psiFilters.kt @@ -22,7 +22,7 @@ import com.intellij.psi.util.PsiTreeUtil public class FirstChildInParentFilter(val level: Int = 1) : PositionElementFilter() { override fun isAcceptable(element: Any?, context: PsiElement?): Boolean { - if (!(element is PsiElement)) return false + if (element !is PsiElement) return false var parent: PsiElement? = element for (i in 1..level) {