From aa937e1f93e3aedd55d54a13d88e8ed55c749c9b Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 25 Aug 2020 11:44:00 +0200 Subject: [PATCH] i18n: don't create nested choices, escape special symbols in choice sides (IDEA-247804) GitOrigin-RevId: dcb56f8bf352bc8f656edd85242be6b3c70af34d --- .../quickFix/i18nize/beforeGeneratedChoicePattern.java | 2 +- .../java/codeInsight/daemon/quickFix/I18nizeTest.java | 2 +- .../src/com/intellij/codeInspection/i18n/JavaI18nUtil.java | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/i18nize/beforeGeneratedChoicePattern.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/i18nize/beforeGeneratedChoicePattern.java index a6f02a0201d8..90876c526f9b 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/i18nize/beforeGeneratedChoicePattern.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/i18nize/beforeGeneratedChoicePattern.java @@ -1,5 +1,5 @@ class MyTest { void f(boolean prefix){ - String s = "Not a valid java identifier part in " + (prefix ? "prefix" : "suffix"); + String s = "Not a valid java identifier part in " + (prefix ? "prefix" : "
suffix"); } } \ 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 a155305d9ab1..95e5a9cf5108 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 @@ -106,7 +106,7 @@ public class I18nizeTest extends LightJavaCodeInsightTestCase { UStringConcatenationsFacade concatenation = UStringConcatenationsFacade.createFromTopConcatenation(enclosingStringLiteral); assertNotNull(concatenation); ArrayList args = new ArrayList<>(); - Assert.assertEquals("Not a valid java identifier part in {0, choice, 0#prefix|1#suffix}", JavaI18nUtil.buildUnescapedFormatString(concatenation, args, getProject())); + Assert.assertEquals("Not a valid java identifier part in {0, choice, 0#prefix|1#'<'br/'>'suffix}", JavaI18nUtil.buildUnescapedFormatString(concatenation, args, getProject())); assertSize(1, args); assertEquals("prefix ? 0 : 1", args.get(0).getSourcePsi().getText()); } diff --git a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/JavaI18nUtil.java b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/JavaI18nUtil.java index 5431d202549b..d50a5cb69897 100644 --- a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/JavaI18nUtil.java +++ b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/JavaI18nUtil.java @@ -467,7 +467,7 @@ public final class JavaI18nUtil extends I18nUtil { } } } - else if (!addChoicePattern(expression, formatParameters, project, result)) { + else if (nested || !addChoicePattern(expression, formatParameters, project, result)) { result.append("{").append(formatParameters.size()).append("}"); formatParameters.add(expression); } @@ -542,7 +542,7 @@ public final class JavaI18nUtil extends I18nUtil { formatParameters.add(expression); } } - return elseStr; + return elseStr.replaceAll("([<>|#])", "'$1'"); } @NotNull