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.codeInsight.intention.LowPriorityAction
|
||||||
import com.intellij.openapi.editor.Editor
|
import com.intellij.openapi.editor.Editor
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.config.LanguageFeature
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
|
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
|
||||||
import org.jetbrains.kotlin.idea.conversion.copy.end
|
import org.jetbrains.kotlin.idea.conversion.copy.end
|
||||||
import org.jetbrains.kotlin.idea.conversion.copy.start
|
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.name.Name
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.resolve.calls.model.ArgumentMatch
|
import org.jetbrains.kotlin.resolve.calls.model.ArgumentMatch
|
||||||
@@ -71,6 +73,10 @@ class AddNameToArgumentIntention
|
|||||||
if (argumentMatch.valueParameter.varargElementType != null) {
|
if (argumentMatch.valueParameter.varargElementType != null) {
|
||||||
val varargArgument = resolvedCall.valueArguments[argumentMatch.valueParameter] as? VarargValueArgument ?: return null
|
val varargArgument = resolvedCall.valueArguments[argumentMatch.valueParameter] as? VarargValueArgument ?: return null
|
||||||
if (varargArgument.arguments.size != 1) 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
|
return argumentMatch.valueParameter.name
|
||||||
|
|||||||
@@ -18,7 +18,9 @@ package org.jetbrains.kotlin.idea.intentions
|
|||||||
|
|
||||||
import com.intellij.openapi.editor.Editor
|
import com.intellij.openapi.editor.Editor
|
||||||
import com.intellij.openapi.util.TextRange
|
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.caches.resolve.resolveToCall
|
||||||
|
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.resolve.calls.model.ArgumentMatch
|
import org.jetbrains.kotlin.resolve.calls.model.ArgumentMatch
|
||||||
import org.jetbrains.kotlin.resolve.calls.model.ArgumentMatchStatus
|
import org.jetbrains.kotlin.resolve.calls.model.ArgumentMatchStatus
|
||||||
@@ -42,6 +44,10 @@ class AddNamesToCallArgumentsIntention : SelfTargetingRangeIntention<KtCallEleme
|
|||||||
if (argumentMatch.valueParameter.varargElementType != null) {
|
if (argumentMatch.valueParameter.varargElementType != null) {
|
||||||
val varargArgument = resolvedCall.valueArguments[argumentMatch.valueParameter] as? VarargValueArgument ?: return null
|
val varargArgument = resolvedCall.valueArguments[argumentMatch.valueParameter] as? VarargValueArgument ?: return null
|
||||||
if (varargArgument.arguments.size != 1) 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 foo(vararg s: String){}
|
||||||
|
|
||||||
fun bar() {
|
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 foo(n: Int, vararg s: String){}
|
||||||
|
|
||||||
fun bar() {
|
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