From d274c9c25806404447d6ee9917988a913f7805e8 Mon Sep 17 00:00:00 2001 From: Bart van Helvert Date: Sat, 28 Oct 2023 13:05:52 +0200 Subject: [PATCH] [uast] Relax return type on `createStringLiteralExpression` Changes the return type of `createStringLiteralExpression` to account for Kotlin having polyadic string literal implementation by default. #KTIJ-27448 GitOrigin-RevId: 0797f4ea1f935ca29725f3834c535c3e60f9db36 --- .../com/intellij/codeInspection/i18n/I18nizeQuickFix.java | 6 +++--- .../kotlin/generate/KotlinUastBaseCodeGenerationPlugin.kt | 5 +++-- .../org/jetbrains/uast/generate/UastCodeGenerationPlugin.kt | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nizeQuickFix.java b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nizeQuickFix.java index 1247c43032be..1dfa5a8f834b 100644 --- a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nizeQuickFix.java +++ b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nizeQuickFix.java @@ -23,7 +23,7 @@ import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.uast.UBinaryExpression; -import org.jetbrains.uast.ULiteralExpression; +import org.jetbrains.uast.UExpression; import org.jetbrains.uast.UastBinaryOperator; import org.jetbrains.uast.UastUtils; import org.jetbrains.uast.expressions.UInjectionHost; @@ -153,8 +153,8 @@ public class I18nizeQuickFix extends AbstractI18nizeQuickFix { int breakIndex = offset - literalRange.getStartOffset() - 1; String lsubstring = value.substring(0, breakIndex); String rsubstring = value.substring(breakIndex); - ULiteralExpression left = elementFactory.createStringLiteralExpression(lsubstring, sourcePsi); - ULiteralExpression right = elementFactory.createStringLiteralExpression(rsubstring, sourcePsi); + UExpression left = elementFactory.createStringLiteralExpression(lsubstring, sourcePsi); + UExpression right = elementFactory.createStringLiteralExpression(rsubstring, sourcePsi); if (left == null || right == null) { return null; } diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/generate/KotlinUastBaseCodeGenerationPlugin.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/generate/KotlinUastBaseCodeGenerationPlugin.kt index 39997f6a3209..92b890f55db7 100644 --- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/generate/KotlinUastBaseCodeGenerationPlugin.kt +++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/generate/KotlinUastBaseCodeGenerationPlugin.kt @@ -276,8 +276,9 @@ open class KotlinUastElementFactory(project: Project) : UastElementFactory { return KotlinUCallableReferenceExpression(callableExpression, null) } - override fun createStringLiteralExpression(text: String, context: PsiElement?): ULiteralExpression { - return KotlinStringULiteralExpression(psiFactory(context).createExpression(StringUtil.wrapWithDoubleQuote(text)), null) + override fun createStringLiteralExpression(text: String, context: PsiElement?): UExpression { + val literal = psiFactory(context).createExpression(StringUtil.wrapWithDoubleQuote(text)) as KtStringTemplateExpression + return KotlinStringTemplateUPolyadicExpression(literal, null) } override fun createLongConstantExpression(long: Long, context: PsiElement?): UExpression? { diff --git a/uast/uast-common/src/org/jetbrains/uast/generate/UastCodeGenerationPlugin.kt b/uast/uast-common/src/org/jetbrains/uast/generate/UastCodeGenerationPlugin.kt index 68e767fb5e66..9a0df82848f8 100644 --- a/uast/uast-common/src/org/jetbrains/uast/generate/UastCodeGenerationPlugin.kt +++ b/uast/uast-common/src/org/jetbrains/uast/generate/UastCodeGenerationPlugin.kt @@ -183,7 +183,7 @@ interface UastElementFactory { fun createIfExpression(condition: UExpression, thenBranch: UExpression, elseBranch: UExpression?, context: PsiElement?): UIfExpression? - fun createStringLiteralExpression(text: String, context: PsiElement?): ULiteralExpression? + fun createStringLiteralExpression(text: String, context: PsiElement?): UExpression? fun createLongConstantExpression(long: Long, context: PsiElement?): UExpression?