From 6c1bfdb74f5b6cbab4f09628d5258404f7878d90 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Mon, 5 Oct 2015 14:01:31 +0300 Subject: [PATCH] No need to put ResolutionFacade into parameter info items --- .../KotlinFunctionParameterInfoHandler.kt | 29 ++++++++----------- .../AbstractFunctionParameterInfoTest.java | 4 +-- 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/parameterInfo/KotlinFunctionParameterInfoHandler.kt b/idea/src/org/jetbrains/kotlin/idea/parameterInfo/KotlinFunctionParameterInfoHandler.kt index 8c4f5e6dd9a..a4beae6fad0 100644 --- a/idea/src/org/jetbrains/kotlin/idea/parameterInfo/KotlinFunctionParameterInfoHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/parameterInfo/KotlinFunctionParameterInfoHandler.kt @@ -22,14 +22,12 @@ import com.intellij.lang.parameterInfo.* import com.intellij.psi.PsiElement import com.intellij.ui.Gray import com.intellij.ui.JBColor -import com.intellij.util.ArrayUtil import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade import org.jetbrains.kotlin.idea.codeInsight.ReferenceVariantsHelper import org.jetbrains.kotlin.idea.core.isVisible -import org.jetbrains.kotlin.idea.resolve.ResolutionFacade import org.jetbrains.kotlin.lexer.JetTokens import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.allChildren @@ -47,7 +45,7 @@ import org.jetbrains.kotlin.types.checker.JetTypeChecker import java.awt.Color import java.util.* -class KotlinFunctionParameterInfoHandler : ParameterInfoHandlerWithTabActionSupport, JetValueArgument> { +class KotlinFunctionParameterInfoHandler : ParameterInfoHandlerWithTabActionSupport { override fun getActualParameters(arguments: JetValueArgumentList) = arguments.arguments.toTypedArray() @@ -65,7 +63,7 @@ class KotlinFunctionParameterInfoHandler : ParameterInfoHandlerWithTabActionSupp override fun getParametersForLookup(item: LookupElement, context: ParameterInfoContext) = emptyArray() //todo: ? - override fun getParametersForDocumentation(p: Pair, context: ParameterInfoContext) = emptyArray() //todo: ? + override fun getParametersForDocumentation(item: FunctionDescriptor, context: ParameterInfoContext) = emptyArray() //todo: ? override fun findElementForParameterInfo(context: CreateParameterInfoContext): JetValueArgumentList? { return findCall(context) @@ -95,7 +93,7 @@ class KotlinFunctionParameterInfoHandler : ParameterInfoHandlerWithTabActionSupp override fun tracksParameterIndex() = true - override fun updateUI(itemToShow: Pair, context: ParameterInfoUIContext) { + override fun updateUI(itemToShow: FunctionDescriptor, context: ParameterInfoUIContext) { //todo: when we will have ability to pass Array as vararg, implement such feature here too? if (context.parameterOwner == null || !context.parameterOwner.isValid) { context.isUIComponentEnabled = false @@ -108,17 +106,14 @@ class KotlinFunctionParameterInfoHandler : ParameterInfoHandlerWithTabActionSupp return } - val functionDescriptor = itemToShow.first - val resolutionFacade = itemToShow.second - - val valueParameters = functionDescriptor.valueParameters + val valueParameters = itemToShow.valueParameters val valueArguments = parameterOwner.arguments val currentParameterIndex = context.currentParameterIndex var boldStartOffset = -1 var boldEndOffset = -1 var isGrey = false - val isDeprecated = KotlinBuiltIns.isDeprecated(functionDescriptor) + val isDeprecated = KotlinBuiltIns.isDeprecated(itemToShow) val usedIndexes = BooleanArray(valueParameters.size()) Arrays.fill(usedIndexes, false) @@ -130,7 +125,7 @@ class KotlinFunctionParameterInfoHandler : ParameterInfoHandlerWithTabActionSupp } val owner = context.parameterOwner - val bindingContext = resolutionFacade.analyze(owner as JetElement, BodyResolveMode.FULL) + val bindingContext = (owner as JetElement).analyze(BodyResolveMode.FULL) val text = StringBuilder { for (i in valueParameters.indices) { @@ -213,9 +208,9 @@ class KotlinFunctionParameterInfoHandler : ParameterInfoHandlerWithTabActionSupp }.toString() - assert(!text.isEmpty()) { "A message about 'no parameters' or some parameters should be present: $functionDescriptor" } + assert(!text.isEmpty()) { "A message about 'no parameters' or some parameters should be present: $itemToShow" } - val color = if (isResolvedToDescriptor(parameterOwner, functionDescriptor, bindingContext)) + val color = if (isResolvedToDescriptor(parameterOwner, itemToShow, bindingContext)) GREEN_BACKGROUND else context.defaultParameterColor @@ -325,21 +320,21 @@ class KotlinFunctionParameterInfoHandler : ParameterInfoHandlerWithTabActionSupp val variants = ReferenceVariantsHelper(bindingContext, resolutionFacade, visibilityFilter) .getReferenceVariants(callNameExpression, descriptorKindFilter, { it == refName }) - val itemsToShow = ArrayList>() + val itemsToShow = ArrayList() for (variant in variants) { if (variant is FunctionDescriptor) { //todo: renamed functions? - itemsToShow.add(Pair(variant, resolutionFacade)) + itemsToShow.add(variant) } else if (variant is ClassDescriptor) { //todo: renamed classes? for (constructorDescriptor in variant.constructors) { - itemsToShow.add(Pair(constructorDescriptor, resolutionFacade)) + itemsToShow.add(constructorDescriptor) } } } - context.itemsToShow = ArrayUtil.toObjectArray(itemsToShow) + context.itemsToShow = itemsToShow.toArray() return argumentList } diff --git a/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/AbstractFunctionParameterInfoTest.java b/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/AbstractFunctionParameterInfoTest.java index 7133b8d05e6..325a5236fd8 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/AbstractFunctionParameterInfoTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/AbstractFunctionParameterInfoTest.java @@ -18,9 +18,7 @@ package org.jetbrains.kotlin.idea.parameterInfo; import com.intellij.psi.PsiElement; import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase; -import kotlin.Pair; import org.jetbrains.kotlin.descriptors.FunctionDescriptor; -import org.jetbrains.kotlin.idea.resolve.ResolutionFacade; import org.jetbrains.kotlin.idea.test.PluginTestCaseBase; import org.jetbrains.kotlin.lexer.JetTokens; import org.jetbrains.kotlin.psi.JetFile; @@ -64,7 +62,7 @@ public abstract class AbstractFunctionParameterInfoTest extends LightCodeInsight for (Object item : mockCreateParameterInfoContext.getItemsToShow()) { //noinspection unchecked - parameterInfoHandler.updateUI((Pair)item, parameterInfoUIContext); + parameterInfoHandler.updateUI((FunctionDescriptor)item, parameterInfoUIContext); } assertEquals(expectedResultText, parameterInfoUIContext.getResultText()); }