From ea06bf524680911100e2bcc5c5b5c81dbb76f0b3 Mon Sep 17 00:00:00 2001 From: Vladimir Dolzhenko Date: Wed, 26 Jun 2024 11:59:25 +0200 Subject: [PATCH] [kotlin] Backtick only uncommon package name parts #KTIJ-30095 GitOrigin-RevId: 15c6498a403d35777158263e21e482502bee058e --- .../idea/codeinsight/utils/AddQualifiersUtil.kt | 16 ++++------------ .../callExpressions/BacktickedPackageName.kt | 4 ++-- .../BacktickedPackageName.kt.after | 4 ++-- .../BacktickedPackageNameAndClass.kt | 4 ++-- .../BacktickedPackageNameAndClass.kt.after | 4 ++-- 5 files changed, 12 insertions(+), 20 deletions(-) diff --git a/plugins/kotlin/code-insight/utils/src/org/jetbrains/kotlin/idea/codeinsight/utils/AddQualifiersUtil.kt b/plugins/kotlin/code-insight/utils/src/org/jetbrains/kotlin/idea/codeinsight/utils/AddQualifiersUtil.kt index 6fc65ade9019..fcf9ce539afd 100644 --- a/plugins/kotlin/code-insight/utils/src/org/jetbrains/kotlin/idea/codeinsight/utils/AddQualifiersUtil.kt +++ b/plugins/kotlin/code-insight/utils/src/org/jetbrains/kotlin/idea/codeinsight/utils/AddQualifiersUtil.kt @@ -30,7 +30,6 @@ import org.jetbrains.kotlin.psi.KtPsiFactory import org.jetbrains.kotlin.psi.KtUserType import org.jetbrains.kotlin.psi.createExpressionByPattern import org.jetbrains.kotlin.psi.psiUtil.getPrevSiblingIgnoringWhitespaceAndComments -import org.jetbrains.kotlin.psi.psiUtil.isIdentifier import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded import java.lang.RuntimeException @@ -91,7 +90,7 @@ object AddQualifiersUtil { is KtCallableReferenceExpression -> addOrReplaceQualifier(psiFactory, parent, qualifier) is KtCallExpression -> replaceExpressionWithDotQualifier(psiFactory, parent, qualifier) is KtUserType -> addQualifierToType(psiFactory, parent, qualifier) - else -> replaceExpressionWithQualifier(psiFactory, referenceExpression, fqName) + else -> replaceExpressionWithQualifier(psiFactory, referenceExpression, qualifier, fqName) } } if (referenceExpression.isPhysical) { @@ -148,20 +147,13 @@ object AddQualifiersUtil { private fun replaceExpressionWithQualifier( psiFactory: KtPsiFactory, referenceExpression: KtNameReferenceExpression, + packageQualifier: String, fqName: FqName ): KtElement { val fqNameUnsafe = fqName.toUnsafe() val shortName = fqNameUnsafe.shortName().asString().quoteIfNeeded() - val parent = fqNameUnsafe.parent() - val parentQuotedIfNeeded = - if (parent.isRoot) { - "" - } else { - val quotesAreNeeded = parent.pathSegments().any { !it.identifier.isIdentifier() } - val asString = parent.asString() - "${if (quotesAreNeeded) asString.quoteIfNeeded() else asString}." - } - val expressionWithQualifier = psiFactory.createExpression(parentQuotedIfNeeded + shortName) + val packageSeparator = ".".takeUnless { packageQualifier.isEmpty() } ?: "" + val expressionWithQualifier = psiFactory.createExpression(packageQualifier + packageSeparator + shortName) return referenceExpression.replace(expressionWithQualifier) as KtElement } } diff --git a/plugins/kotlin/idea/tests/testData/intentions/addFullQualifier/callExpressions/BacktickedPackageName.kt b/plugins/kotlin/idea/tests/testData/intentions/addFullQualifier/callExpressions/BacktickedPackageName.kt index 5a35b02aa3d1..ef869c1c2855 100644 --- a/plugins/kotlin/idea/tests/testData/intentions/addFullQualifier/callExpressions/BacktickedPackageName.kt +++ b/plugins/kotlin/idea/tests/testData/intentions/addFullQualifier/callExpressions/BacktickedPackageName.kt @@ -2,7 +2,7 @@ package foo.`b ar` object Clazz { - val foo = 0 + val zoo = 0 } -fun Clazz.foo() = Clazz.foo \ No newline at end of file +fun Clazz.zoo() = Clazz.zoo \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/intentions/addFullQualifier/callExpressions/BacktickedPackageName.kt.after b/plugins/kotlin/idea/tests/testData/intentions/addFullQualifier/callExpressions/BacktickedPackageName.kt.after index 14691872c319..ebab6b9c35a5 100644 --- a/plugins/kotlin/idea/tests/testData/intentions/addFullQualifier/callExpressions/BacktickedPackageName.kt.after +++ b/plugins/kotlin/idea/tests/testData/intentions/addFullQualifier/callExpressions/BacktickedPackageName.kt.after @@ -2,7 +2,7 @@ package foo.`b ar` object Clazz { - val foo = 0 + val zoo = 0 } -fun Clazz.foo() = `foo.b ar`.Clazz.foo +fun Clazz.zoo() = foo.`b ar`.Clazz.zoo diff --git a/plugins/kotlin/idea/tests/testData/intentions/addFullQualifier/callExpressions/BacktickedPackageNameAndClass.kt b/plugins/kotlin/idea/tests/testData/intentions/addFullQualifier/callExpressions/BacktickedPackageNameAndClass.kt index 879cfea16721..457d16a60952 100644 --- a/plugins/kotlin/idea/tests/testData/intentions/addFullQualifier/callExpressions/BacktickedPackageNameAndClass.kt +++ b/plugins/kotlin/idea/tests/testData/intentions/addFullQualifier/callExpressions/BacktickedPackageNameAndClass.kt @@ -2,7 +2,7 @@ package foo.`b ar` object `Cla zz` { - val foo = 0 + val zoo = 0 } -fun `Cla zz`.foo() = `Cla zz`.foo \ No newline at end of file +fun `Cla zz`.zoo() = `Cla zz`.zoo \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/intentions/addFullQualifier/callExpressions/BacktickedPackageNameAndClass.kt.after b/plugins/kotlin/idea/tests/testData/intentions/addFullQualifier/callExpressions/BacktickedPackageNameAndClass.kt.after index ab79c965a8e8..5be1fbb30f3f 100644 --- a/plugins/kotlin/idea/tests/testData/intentions/addFullQualifier/callExpressions/BacktickedPackageNameAndClass.kt.after +++ b/plugins/kotlin/idea/tests/testData/intentions/addFullQualifier/callExpressions/BacktickedPackageNameAndClass.kt.after @@ -2,7 +2,7 @@ package foo.`b ar` object `Cla zz` { - val foo = 0 + val zoo = 0 } -fun `Cla zz`.foo() = `foo.b ar`.`Cla zz`.foo +fun `Cla zz`.zoo() = foo.`b ar`.`Cla zz`.zoo