i18n: don't create nested choices, escape special symbols in choice sides (IDEA-247804)

GitOrigin-RevId: dcb56f8bf352bc8f656edd85242be6b3c70af34d
This commit is contained in:
Anna Kozlova
2020-08-25 11:17:27 +00:00
committed by intellij-monorepo-bot
parent 608718b907
commit aa937e1f93
3 changed files with 4 additions and 4 deletions
@@ -1,5 +1,5 @@
class MyTest {
void f(boolean prefix){
String s = "Not a valid java identifier<caret> part in " + (prefix ? "prefix" : "suffix");
String s = "Not a valid java identifier<caret> part in " + (prefix ? "prefix" : "<br/>suffix");
}
}
@@ -106,7 +106,7 @@ public class I18nizeTest extends LightJavaCodeInsightTestCase {
UStringConcatenationsFacade concatenation = UStringConcatenationsFacade.createFromTopConcatenation(enclosingStringLiteral);
assertNotNull(concatenation);
ArrayList<UExpression> 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());
}
@@ -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