[java-i18n] Restore passed to non-nls variable behavior

GitOrigin-RevId: 8ec8b1f762120000cb492411bf0386e18325a7e1
This commit is contained in:
Tagir Valeev
2020-07-24 08:49:24 +00:00
committed by intellij-monorepo-bot
parent bce2b85074
commit a3838dcd03
6 changed files with 48 additions and 4 deletions
@@ -0,0 +1,12 @@
import org.jetbrains.annotations.NonNls;
// "Annotate variable 'a' as @NonNls" "true"
class Foo {
public void doTest() {
@NonNls String a = (s("test"));
}
String s(String s) {
return s;
}
}
@@ -0,0 +1,12 @@
import org.jetbrains.annotations.NonNls;
// "Annotate variable 'a' as @NonNls" "true"
class Foo {
public void doTest() {
@NonNls String a = (this.s("test"));
}
String s(String s) {
return s;
}
}
@@ -0,0 +1,10 @@
// "Annotate variable 'a' as @NonNls" "true"
class Foo {
public void doTest() {
String a = (s("t<caret>est"));
}
String s(String s) {
return s;
}
}
@@ -0,0 +1,10 @@
// "Annotate variable 'a' as @NonNls" "true"
class Foo {
public void doTest() {
String a = (this.s("t<caret>est"));
}
String s(String s) {
return s;
}
}
@@ -949,7 +949,7 @@ public class I18nInspection extends AbstractBaseUastLocalInspectionTool implemen
private boolean isPassedToNonNlsVariable(@NotNull UExpression expression,
final Set<? super PsiModifierListOwner> nonNlsTargets) {
UExpression toplevel = JavaI18nUtil.getTopLevelExpression(expression);
UExpression toplevel = JavaI18nUtil.getTopLevelExpression(expression, false);
PsiModifierListOwner var = null;
if (UastExpressionUtils.isAssignment(toplevel)) {
UExpression lExpression = ((UBinaryExpression)toplevel).getLeftOperand();
@@ -1030,7 +1030,7 @@ public class I18nInspection extends AbstractBaseUastLocalInspectionTool implemen
private static boolean isInNonNlsCall(@NotNull UExpression expression,
final Set<? super PsiModifierListOwner> nonNlsTargets) {
UExpression parent = UastUtils.skipParenthesizedExprDown(JavaI18nUtil.getTopLevelExpression(expression));
UExpression parent = UastUtils.skipParenthesizedExprDown(JavaI18nUtil.getTopLevelExpression(expression, true));
if (parent instanceof UQualifiedReferenceExpression) {
return isNonNlsCall((UQualifiedReferenceExpression)parent, nonNlsTargets);
}
@@ -129,7 +129,7 @@ public final class JavaI18nUtil extends I18nUtil {
}
@NotNull
static UExpression getTopLevelExpression(@NotNull UExpression expression) {
static UExpression getTopLevelExpression(@NotNull UExpression expression, boolean stopAtCall) {
while (expression.getUastParent() instanceof UExpression) {
final UExpression parent = (UExpression)expression.getUastParent();
if (parent instanceof UBlockExpression || parent instanceof UReturnExpression) {
@@ -141,7 +141,7 @@ public final class JavaI18nUtil extends I18nUtil {
}
expression = parent;
if (UastExpressionUtils.isAssignment(expression)) break;
if (expression instanceof UCallExpression) {
if (expression instanceof UCallExpression && stopAtCall) {
UastCallKind kind = ((UCallExpression)expression).getKind();
if (kind == UastCallKind.METHOD_CALL) {
if (expression.getUastParent() instanceof UQualifiedReferenceExpression) {