From b56272dc6426480bfc2ea236c7b5b7df8525253f Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Sun, 1 Dec 2019 21:17:51 +0900 Subject: [PATCH] Add name to argument: do not remove necessary backticks #KT-30894 Fixed --- .../org/jetbrains/kotlin/psi/KtPsiFactory.kt | 8 +++++++- .../addNameToArgument/backtickedArgument.kt | 6 ++++++ .../backtickedArgument.kt.after | 6 ++++++ .../addNameToArgument/backtickedArgument2.kt | 6 ++++++ .../backtickedArgument2.kt.after | 6 ++++++ .../addNameToArgument/backtickedArgument3.kt | 6 ++++++ .../backtickedArgument3.kt.after | 6 ++++++ .../addNameToArgument/backtickedArgument4.kt | 6 ++++++ .../backtickedArgument4.kt.after | 6 ++++++ .../intentions/IntentionTestGenerated.java | 20 +++++++++++++++++++ 10 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 idea/testData/intentions/addNameToArgument/backtickedArgument.kt create mode 100644 idea/testData/intentions/addNameToArgument/backtickedArgument.kt.after create mode 100644 idea/testData/intentions/addNameToArgument/backtickedArgument2.kt create mode 100644 idea/testData/intentions/addNameToArgument/backtickedArgument2.kt.after create mode 100644 idea/testData/intentions/addNameToArgument/backtickedArgument3.kt create mode 100644 idea/testData/intentions/addNameToArgument/backtickedArgument3.kt.after create mode 100644 idea/testData/intentions/addNameToArgument/backtickedArgument4.kt create mode 100644 idea/testData/intentions/addNameToArgument/backtickedArgument4.kt.after diff --git a/compiler/psi/src/org/jetbrains/kotlin/psi/KtPsiFactory.kt b/compiler/psi/src/org/jetbrains/kotlin/psi/KtPsiFactory.kt index 8c55721c4ac..9f791d463b5 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/psi/KtPsiFactory.kt +++ b/compiler/psi/src/org/jetbrains/kotlin/psi/KtPsiFactory.kt @@ -19,6 +19,7 @@ import org.jetbrains.kotlin.lexer.KtModifierKeywordToken import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.psi.psiUtil.isIdentifier import org.jetbrains.kotlin.resolve.ImportPath import org.jetbrains.kotlin.utils.KotlinExceptionWithAttachments import org.jetbrains.kotlin.utils.checkWithAttachment @@ -531,7 +532,12 @@ class KtPsiFactory @JvmOverloads constructor(private val project: Project, val m appendFixedText("(") if (name != null) { - appendName(name) + val asString = name.asString() + if (asString.isIdentifier()) { + appendName(name) + } else { + appendFixedText("`$asString`") + } appendFixedText(" = ") } diff --git a/idea/testData/intentions/addNameToArgument/backtickedArgument.kt b/idea/testData/intentions/addNameToArgument/backtickedArgument.kt new file mode 100644 index 00000000000..40d1a9462d9 --- /dev/null +++ b/idea/testData/intentions/addNameToArgument/backtickedArgument.kt @@ -0,0 +1,6 @@ +fun foo(`1`: Int, `fun`: Int) { +} + +fun main() { + foo(1, 2) +} \ No newline at end of file diff --git a/idea/testData/intentions/addNameToArgument/backtickedArgument.kt.after b/idea/testData/intentions/addNameToArgument/backtickedArgument.kt.after new file mode 100644 index 00000000000..ca8bf3e6755 --- /dev/null +++ b/idea/testData/intentions/addNameToArgument/backtickedArgument.kt.after @@ -0,0 +1,6 @@ +fun foo(`1`: Int, `fun`: Int) { +} + +fun main() { + foo(1, `fun` = 2) +} \ No newline at end of file diff --git a/idea/testData/intentions/addNameToArgument/backtickedArgument2.kt b/idea/testData/intentions/addNameToArgument/backtickedArgument2.kt new file mode 100644 index 00000000000..95833fda146 --- /dev/null +++ b/idea/testData/intentions/addNameToArgument/backtickedArgument2.kt @@ -0,0 +1,6 @@ +fun foo(`1`: Int, `2`: Int) { +} + +fun main() { + foo(1, 2) +} \ No newline at end of file diff --git a/idea/testData/intentions/addNameToArgument/backtickedArgument2.kt.after b/idea/testData/intentions/addNameToArgument/backtickedArgument2.kt.after new file mode 100644 index 00000000000..265fadc0350 --- /dev/null +++ b/idea/testData/intentions/addNameToArgument/backtickedArgument2.kt.after @@ -0,0 +1,6 @@ +fun foo(`1`: Int, `2`: Int) { +} + +fun main() { + foo(1, `2` = 2) +} \ No newline at end of file diff --git a/idea/testData/intentions/addNameToArgument/backtickedArgument3.kt b/idea/testData/intentions/addNameToArgument/backtickedArgument3.kt new file mode 100644 index 00000000000..43cee033983 --- /dev/null +++ b/idea/testData/intentions/addNameToArgument/backtickedArgument3.kt @@ -0,0 +1,6 @@ +fun foo(`1`: Int, `2a`: Int) { +} + +fun main() { + foo(1, 2) +} \ No newline at end of file diff --git a/idea/testData/intentions/addNameToArgument/backtickedArgument3.kt.after b/idea/testData/intentions/addNameToArgument/backtickedArgument3.kt.after new file mode 100644 index 00000000000..fa46b94ddb2 --- /dev/null +++ b/idea/testData/intentions/addNameToArgument/backtickedArgument3.kt.after @@ -0,0 +1,6 @@ +fun foo(`1`: Int, `2a`: Int) { +} + +fun main() { + foo(1, `2a` = 2) +} \ No newline at end of file diff --git a/idea/testData/intentions/addNameToArgument/backtickedArgument4.kt b/idea/testData/intentions/addNameToArgument/backtickedArgument4.kt new file mode 100644 index 00000000000..3c1480fd666 --- /dev/null +++ b/idea/testData/intentions/addNameToArgument/backtickedArgument4.kt @@ -0,0 +1,6 @@ +fun foo(`1`: Int, `a`: Int) { +} + +fun main() { + foo(1, 2) +} \ No newline at end of file diff --git a/idea/testData/intentions/addNameToArgument/backtickedArgument4.kt.after b/idea/testData/intentions/addNameToArgument/backtickedArgument4.kt.after new file mode 100644 index 00000000000..591fbb02dbe --- /dev/null +++ b/idea/testData/intentions/addNameToArgument/backtickedArgument4.kt.after @@ -0,0 +1,6 @@ +fun foo(`1`: Int, `a`: Int) { +} + +fun main() { + foo(1, a = 2) +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java index e85a46f0d9b..7361e3149cb 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -1253,6 +1253,26 @@ public class IntentionTestGenerated extends AbstractIntentionTest { runTest("idea/testData/intentions/addNameToArgument/ambiguousCall.kt"); } + @TestMetadata("backtickedArgument.kt") + public void testBacktickedArgument() throws Exception { + runTest("idea/testData/intentions/addNameToArgument/backtickedArgument.kt"); + } + + @TestMetadata("backtickedArgument2.kt") + public void testBacktickedArgument2() throws Exception { + runTest("idea/testData/intentions/addNameToArgument/backtickedArgument2.kt"); + } + + @TestMetadata("backtickedArgument3.kt") + public void testBacktickedArgument3() throws Exception { + runTest("idea/testData/intentions/addNameToArgument/backtickedArgument3.kt"); + } + + @TestMetadata("backtickedArgument4.kt") + public void testBacktickedArgument4() throws Exception { + runTest("idea/testData/intentions/addNameToArgument/backtickedArgument4.kt"); + } + @TestMetadata("beforeOtherNamed.kt") public void testBeforeOtherNamed() throws Exception { runTest("idea/testData/intentions/addNameToArgument/beforeOtherNamed.kt");