diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/i18nize/afterConcatenationInTernary.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/i18nize/afterConcatenationInTernary.java new file mode 100644 index 000000000000..03aeb44a0840 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/i18nize/afterConcatenationInTernary.java @@ -0,0 +1,5 @@ +class a { + void foo(String s, int i, boolean b) { + String desc = (b ? i + " doors" : "many windows"); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/i18nize/beforeConcatenationInTernary.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/i18nize/beforeConcatenationInTernary.java new file mode 100644 index 000000000000..03aeb44a0840 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/i18nize/beforeConcatenationInTernary.java @@ -0,0 +1,5 @@ +class a { + void foo(String s, int i, boolean b) { + String desc = (b ? i + " doors" : "many windows"); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/quickFix/I18nizeTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/quickFix/I18nizeTest.java index 95e5a9cf5108..13dab866d108 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/quickFix/I18nizeTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/quickFix/I18nizeTest.java @@ -94,6 +94,7 @@ public class I18nizeTest extends LightJavaCodeInsightTestCase { public void testLongConcat() {doTest();} public void testCharacterLiteral() {doTest();} public void testNestedConcatenation() {doTest();} + public void testConcatenationInTernary() {doTest();} public void testAssignment() {doTest();} public void testShortenClassReferences() { diff --git a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nizeConcatenationQuickFix.java b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nizeConcatenationQuickFix.java index d4b7c119b827..0eae79dfd7c4 100644 --- a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nizeConcatenationQuickFix.java +++ b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nizeConcatenationQuickFix.java @@ -105,7 +105,12 @@ public class I18nizeConcatenationQuickFix extends I18nizeQuickFix { @Nullable public static UPolyadicExpression getEnclosingLiteralConcatenation(final PsiElement psiElement) { UExpression topExpression = UastContextKt.getUastParentOfType(psiElement, UPolyadicExpression.class); + UStringConcatenationsFacade concatenation = null; while (topExpression != null) { + UStringConcatenationsFacade nextConcatenation = UStringConcatenationsFacade.createFromTopConcatenation(topExpression); + if (nextConcatenation != null) { + concatenation = nextConcatenation; + } UElement parent = topExpression.getUastParent(); if (parent instanceof UParenthesizedExpression || parent instanceof UIfExpression || @@ -116,7 +121,7 @@ public class I18nizeConcatenationQuickFix extends I18nizeQuickFix { break; } } - UStringConcatenationsFacade concatenation = UStringConcatenationsFacade.createFromTopConcatenation(topExpression); + if (concatenation != null) { PartiallyKnownString pks = concatenation.asPartiallyKnownString(); if (pks.getSegments().size() == 1) {