From e9ca6a603899a5cbd3e4a984ea70d1f522746199 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Mon, 8 Jan 2018 12:14:59 +0100 Subject: [PATCH] Call arguments should not affect parameter names returned in MethodInfo The parameter names are only used for blacklist filtering, and should correspond only to the function being called; the order and number of actually provided arguments does not matter. --- .../parameterInfo/KotlinInlayParameterHintsProvider.kt | 9 ++------- .../kotlin/idea/parameterInfo/ArgumentNameHintsTest.kt | 4 ++++ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/parameterInfo/KotlinInlayParameterHintsProvider.kt b/idea/src/org/jetbrains/kotlin/idea/parameterInfo/KotlinInlayParameterHintsProvider.kt index d394d6e4a5a..bafe5733718 100644 --- a/idea/src/org/jetbrains/kotlin/idea/parameterInfo/KotlinInlayParameterHintsProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/parameterInfo/KotlinInlayParameterHintsProvider.kt @@ -22,7 +22,6 @@ import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.endOffset import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall -import org.jetbrains.kotlin.resolve.calls.model.DefaultValueArgument import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameOrNull import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode @@ -173,16 +172,12 @@ class KotlinInlayParameterHintsProvider : InlayParameterHintsProvider { val resolvedCall = elem.getResolvedCall(ctx) val resolvedCallee = resolvedCall?.candidateDescriptor if (resolvedCallee is FunctionDescriptor) { + val paramNames = + resolvedCallee.valueParameters.map { it.name }.filter { !it.isSpecial }.map(Name::asString) val fqName = if (resolvedCallee is ConstructorDescriptor) resolvedCallee.containingDeclaration.fqNameSafe.asString() else (resolvedCallee.fqNameOrNull()?.asString() ?: return null) - val paramNames = resolvedCall.valueArguments - .mapNotNull { (valueParameterDescriptor, resolvedValueArgument) -> - if (resolvedValueArgument !is DefaultValueArgument) valueParameterDescriptor.name else null - } - .filter { !it.isSpecial } - .map(Name::asString) return HintInfo.MethodInfo(fqName, paramNames) } return null diff --git a/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/ArgumentNameHintsTest.kt b/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/ArgumentNameHintsTest.kt index 6c166c0deb6..41ccbea9e3e 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/ArgumentNameHintsTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/ArgumentNameHintsTest.kt @@ -184,4 +184,8 @@ annotation class ManyArgs(val name: String, val surname: String) }""" ) } + + fun `test incomplete Pair call`() { + check("val x = Pair(1, )") + } }