From 18df5d9db0ba99fccf53965da1477692395252b7 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Fri, 30 Aug 2019 12:29:29 +0300 Subject: [PATCH] Support mixed positioned/named arguments in AddNameToArgumentIntention ^KT-7745 Fixed --- .../kotlin/idea/intentions/AddNameToArgumentIntention.kt | 7 +++++-- .../addNameToArgument/mixingPositionedAndNamed.kt | 8 ++++++++ .../addNameToArgument/mixingPositionedAndNamed.kt.after | 8 ++++++++ .../kotlin/idea/intentions/IntentionTestGenerated.java | 5 +++++ 4 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 idea/testData/intentions/addNameToArgument/mixingPositionedAndNamed.kt create mode 100644 idea/testData/intentions/addNameToArgument/mixingPositionedAndNamed.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 7aabad15c1b..3295379de54 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/AddNameToArgumentIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/AddNameToArgumentIntention.kt @@ -42,7 +42,10 @@ class AddNameToArgumentIntention : SelfTargetingIntention( override fun isApplicableTo(element: KtValueArgument, caretOffset: Int): Boolean { val expression = element.getArgumentExpression() ?: return false - val name = detectNameToAdd(element, shouldBeLastUnnamed = true) ?: return false + val name = detectNameToAdd( + element, + shouldBeLastUnnamed = !element.languageVersionSettings.supportsFeature(LanguageFeature.MixedNamedArgumentsInTheirOwnPosition) + ) ?: return false text = "Add '$name =' to argument" @@ -110,4 +113,4 @@ class AddNameToArgumentIntention : SelfTargetingIntention( return true } } -} \ No newline at end of file +} diff --git a/idea/testData/intentions/addNameToArgument/mixingPositionedAndNamed.kt b/idea/testData/intentions/addNameToArgument/mixingPositionedAndNamed.kt new file mode 100644 index 00000000000..37d92f545c2 --- /dev/null +++ b/idea/testData/intentions/addNameToArgument/mixingPositionedAndNamed.kt @@ -0,0 +1,8 @@ +// COMPILER_ARGUMENTS: -XXLanguage:+NewInference -XXLanguage:+MixedNamedArgumentsInTheirOwnPosition +// WITH_RUNTIME + +fun foo(s: String, b: Boolean){} + +fun bar() { + foo("", true) +} diff --git a/idea/testData/intentions/addNameToArgument/mixingPositionedAndNamed.kt.after b/idea/testData/intentions/addNameToArgument/mixingPositionedAndNamed.kt.after new file mode 100644 index 00000000000..c1fee99abc3 --- /dev/null +++ b/idea/testData/intentions/addNameToArgument/mixingPositionedAndNamed.kt.after @@ -0,0 +1,8 @@ +// COMPILER_ARGUMENTS: -XXLanguage:+NewInference -XXLanguage:+MixedNamedArgumentsInTheirOwnPosition +// WITH_RUNTIME + +fun foo(s: String, b: Boolean){} + +fun bar() { + foo(s = "", true) +} diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java index f253684465e..35e92c87ead 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -1216,6 +1216,11 @@ public class IntentionTestGenerated extends AbstractIntentionTest { runTest("idea/testData/intentions/addNameToArgument/linkedList.kt"); } + @TestMetadata("mixingPositionedAndNamed.kt") + public void testMixingPositionedAndNamed() throws Exception { + runTest("idea/testData/intentions/addNameToArgument/mixingPositionedAndNamed.kt"); + } + @TestMetadata("notInsideIndices.kt") public void testNotInsideIndices() throws Exception { runTest("idea/testData/intentions/addNameToArgument/notInsideIndices.kt");