Do not suggest adding 'name =' before single vararg argument
This fixes two named argument intention tests
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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<KtCallEleme
|
||||
if (argumentMatch.valueParameter.varargElementType != null) {
|
||||
val varargArgument = resolvedCall.valueArguments[argumentMatch.valueParameter] as? VarargValueArgument ?: return null
|
||||
if (varargArgument.arguments.size != 1) return null
|
||||
val versionSettings = element.languageVersionSettings
|
||||
if (versionSettings.supportsFeature(LanguageFeature.ProhibitAssigningSingleElementsToVarargsInNamedForm)) {
|
||||
if (argument.getSpreadElement() == null) return null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
// IS_APPLICABLE: false
|
||||
|
||||
fun foo(vararg s: String){}
|
||||
|
||||
fun bar() {
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
fun foo(vararg s: String){}
|
||||
|
||||
fun bar() {
|
||||
foo(s = ""<caret>)
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
// IS_APPLICABLE: false
|
||||
|
||||
fun foo(n: Int, vararg s: String){}
|
||||
|
||||
fun bar() {
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
fun foo(n: Int, vararg s: String){}
|
||||
|
||||
fun bar() {
|
||||
<caret>foo(n = 1, s = "")
|
||||
}
|
||||
Reference in New Issue
Block a user