From 26445397bb7dc33605a6a2f170d8edb5ca75a64e Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Sat, 22 Apr 2017 11:48:46 +0200 Subject: [PATCH] Add varargs tests; show ... before vararg arguments --- .../KotlinInlayParameterHintsProvider.kt | 3 +- .../parameterInfo/InlayParameterHintsTest.kt | 40 +++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/parameterInfo/KotlinInlayParameterHintsProvider.kt b/idea/src/org/jetbrains/kotlin/idea/parameterInfo/KotlinInlayParameterHintsProvider.kt index a0c75027069..1346be715ad 100644 --- a/idea/src/org/jetbrains/kotlin/idea/parameterInfo/KotlinInlayParameterHintsProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/parameterInfo/KotlinInlayParameterHintsProvider.kt @@ -126,7 +126,8 @@ private enum class HintType(desc: String, enabled: Boolean) { resolvedArg.arguments.firstOrNull()?.let { arg -> arg.getArgumentExpression()?.let { argExp -> if (!arg.isNamed() && !valueParam.name.isSpecial && argExp.isUnclearExpression()) { - return@mapNotNull InlayInfo(valueParam.name.identifier, argExp.startOffset) + val prefix = if (valueParam.varargElementType != null) "..." else "" + return@mapNotNull InlayInfo(prefix + valueParam.name.identifier, argExp.startOffset) } } } diff --git a/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/InlayParameterHintsTest.kt b/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/InlayParameterHintsTest.kt index c577ccbf7a4..5735cb27e2b 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/InlayParameterHintsTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/InlayParameterHintsTest.kt @@ -52,4 +52,44 @@ class InlayParameterHintsTest : KotlinLightCodeInsightFixtureTestCase() { val t = IllegalStateException("crime"); }""") } + + fun `test single varargs hint`() { + check(""" + fun main() { + testBooleanVarargs(13, false) + } + + fun testBooleanVarargs(test: Int, vararg booleans: Boolean): Boolean { + return false + } +} +""") + } + + fun `test no hint if varargs null`() { + check(""" + fun main() { + testBooleanVarargs(13) + } + + fun testBooleanVarargs(test: Int, vararg booleans: Boolean): Boolean { + return false + } +""") + } + + + fun `test multiple vararg hint`() { + check(""" + fun main() { + testBooleanVarargs(13, false, true, false) + } + + fun testBooleanVarargs(test: Int, vararg booleans: Boolean): Boolean { + return false + } +""") + } + + }