From 94789c50b990eafd398b0b4beabd100db72ae4f9 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 12 Sep 2018 18:51:13 +0300 Subject: [PATCH] Do not suggest adding 'name =' before single vararg argument This fixes two named argument intention tests --- .../kotlin/idea/intentions/AddNameToArgumentIntention.kt | 6 ++++++ .../idea/intentions/AddNamesToCallArgumentsIntention.kt | 6 ++++++ idea/testData/intentions/addNameToArgument/vararg1.kt | 2 ++ idea/testData/intentions/addNameToArgument/vararg1.kt.after | 5 ----- .../intentions/addNamesToCallArguments/varargSingle.kt | 2 ++ .../addNamesToCallArguments/varargSingle.kt.after | 5 ----- 6 files changed, 16 insertions(+), 10 deletions(-) delete mode 100644 idea/testData/intentions/addNameToArgument/vararg1.kt.after delete mode 100644 idea/testData/intentions/addNamesToCallArguments/varargSingle.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/AddNameToArgumentIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/AddNameToArgumentIntention.kt index 72dfc70b576..23fe3dd0561 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/AddNameToArgumentIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/AddNameToArgumentIntention.kt @@ -19,9 +19,11 @@ package org.jetbrains.kotlin.idea.intentions import com.intellij.codeInsight.intention.LowPriorityAction import com.intellij.openapi.editor.Editor import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall import org.jetbrains.kotlin.idea.conversion.copy.end import org.jetbrains.kotlin.idea.conversion.copy.start +import org.jetbrains.kotlin.idea.project.languageVersionSettings import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.resolve.calls.model.ArgumentMatch @@ -71,6 +73,10 @@ class AddNameToArgumentIntention if (argumentMatch.valueParameter.varargElementType != null) { val varargArgument = resolvedCall.valueArguments[argumentMatch.valueParameter] as? VarargValueArgument ?: return null if (varargArgument.arguments.size != 1) return null + val versionSettings = callExpr.languageVersionSettings + if (versionSettings.supportsFeature(LanguageFeature.ProhibitAssigningSingleElementsToVarargsInNamedForm)) { + if (argument.getSpreadElement() == null) return null + } } return argumentMatch.valueParameter.name diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/AddNamesToCallArgumentsIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/AddNamesToCallArgumentsIntention.kt index 5c6f9f34470..46c43026f24 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/AddNamesToCallArgumentsIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/AddNamesToCallArgumentsIntention.kt @@ -18,7 +18,9 @@ package org.jetbrains.kotlin.idea.intentions import com.intellij.openapi.editor.Editor import com.intellij.openapi.util.TextRange +import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall +import org.jetbrains.kotlin.idea.project.languageVersionSettings import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.resolve.calls.model.ArgumentMatch import org.jetbrains.kotlin.resolve.calls.model.ArgumentMatchStatus @@ -42,6 +44,10 @@ class AddNamesToCallArgumentsIntention : SelfTargetingRangeIntention) -} \ No newline at end of file diff --git a/idea/testData/intentions/addNamesToCallArguments/varargSingle.kt b/idea/testData/intentions/addNamesToCallArguments/varargSingle.kt index 5fa6e178c5e..7b7fb148344 100644 --- a/idea/testData/intentions/addNamesToCallArguments/varargSingle.kt +++ b/idea/testData/intentions/addNamesToCallArguments/varargSingle.kt @@ -1,3 +1,5 @@ +// IS_APPLICABLE: false + fun foo(n: Int, vararg s: String){} fun bar() { diff --git a/idea/testData/intentions/addNamesToCallArguments/varargSingle.kt.after b/idea/testData/intentions/addNamesToCallArguments/varargSingle.kt.after deleted file mode 100644 index 8cb4d242706..00000000000 --- a/idea/testData/intentions/addNamesToCallArguments/varargSingle.kt.after +++ /dev/null @@ -1,5 +0,0 @@ -fun foo(n: Int, vararg s: String){} - -fun bar() { - foo(n = 1, s = "") -} \ No newline at end of file