mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
i18n fix: traverse to the expression top level (IDEA-248707)
if one need to extract subpart of concatenation, it's required to extract a variable; similar to parts of polyadic expression GitOrigin-RevId: 46cd1a75303b72ea64e9694617fb43f4d3da5982
This commit is contained in:
committed by
intellij-monorepo-bot
parent
a8cd52076a
commit
af1c8c2574
+5
@@ -0,0 +1,5 @@
|
||||
class a {
|
||||
void foo(String s, int i, boolean b) {
|
||||
String desc = i18nizedExpr;
|
||||
}
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
class a {
|
||||
void foo(String s, int i, boolean b) {
|
||||
String desc = "Our " + s + " has " + (b ? i + " doo<caret>rs" : "many windows");
|
||||
}
|
||||
}
|
||||
@@ -93,6 +93,7 @@ public class I18nizeTest extends LightJavaCodeInsightTestCase {
|
||||
|
||||
public void testLongConcat() {doTest();}
|
||||
public void testCharacterLiteral() {doTest();}
|
||||
public void testNestedConcatenation() {doTest();}
|
||||
|
||||
public void testShortenClassReferences() {
|
||||
doTest("p.MyBundle.message(\"key\")");
|
||||
|
||||
+14
-7
@@ -13,9 +13,7 @@ import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.uast.UExpression;
|
||||
import org.jetbrains.uast.UPolyadicExpression;
|
||||
import org.jetbrains.uast.UastContextKt;
|
||||
import org.jetbrains.uast.*;
|
||||
import org.jetbrains.uast.expressions.UInjectionHost;
|
||||
import org.jetbrains.uast.expressions.UStringConcatenationsFacade;
|
||||
import org.jetbrains.uast.generate.UastCodeGenerationPlugin;
|
||||
@@ -105,10 +103,19 @@ public class I18nizeConcatenationQuickFix extends I18nizeQuickFix {
|
||||
|
||||
@Nullable
|
||||
public static UPolyadicExpression getEnclosingLiteralConcatenation(final PsiElement psiElement) {
|
||||
UPolyadicExpression uPolyadicExpression = UastContextKt.getUastParentOfType(psiElement, UPolyadicExpression.class);
|
||||
UStringConcatenationsFacade concatenation = UStringConcatenationsFacade.createFromTopConcatenation(
|
||||
uPolyadicExpression
|
||||
);
|
||||
UExpression topExpression = UastContextKt.getUastParentOfType(psiElement, UPolyadicExpression.class);
|
||||
while (topExpression != null) {
|
||||
UElement parent = topExpression.getUastParent();
|
||||
if (parent instanceof UParenthesizedExpression ||
|
||||
parent instanceof UIfExpression ||
|
||||
parent instanceof UPolyadicExpression) {
|
||||
topExpression = (UExpression)parent;
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
UStringConcatenationsFacade concatenation = UStringConcatenationsFacade.createFromTopConcatenation(topExpression);
|
||||
if (concatenation != null) {
|
||||
PartiallyKnownString pks = concatenation.asPartiallyKnownString();
|
||||
if (pks.getSegments().size() == 1) {
|
||||
|
||||
Reference in New Issue
Block a user