[java-i18n] isNonNlsCall: support qualified variable initializers (IDEA-247587)

GitOrigin-RevId: d2856d609eb5593438c9f1d1a3e7806d6314bb2d
This commit is contained in:
Tagir Valeev
2020-08-10 09:36:25 +00:00
committed by intellij-monorepo-bot
parent 9b0cb377b4
commit bbd238474a
3 changed files with 27 additions and 2 deletions
@@ -1050,8 +1050,8 @@ public class I18nInspection extends AbstractBaseUastLocalInspectionTool implemen
ULocalVariable uVar = UastContextKt.toUElement(resolved, ULocalVariable.class);
if (uVar != null) {
UExpression initializer = uVar.getUastInitializer();
if (initializer instanceof UCallExpression) {
PsiMethod method = ((UCallExpression)initializer).resolve();
if (initializer instanceof UResolvable) {
PsiModifierListOwner method = ObjectUtils.tryCast(((UResolvable)initializer).resolve(), PsiModifierListOwner.class);
if (method != null) {
if (annotatedAsNonNls(method)) return true;
nonNlsTargets.add(method);
@@ -0,0 +1,22 @@
import org.jetbrains.annotations.NonNls;
class Test {
interface X {
@NonNls String getInterfaceString();
}
@NonNls String getLocalString() { return "s"; }
void test(X x){
final String s1 = x.getInterfaceString();
if (s1.equals("test")) {
System.out.println();
}
final String s2 = getLocalString();
if (s2.equals("test")) {
System.out.println();
}
}
}
@@ -61,6 +61,9 @@ public class I18NInspectionTest extends LightJavaCodeInsightFixtureTestCase {
myTool.setNonNlsCommentPattern("MYNON-NLS");
doTest();
}
public void testPropagateToInterfaceMethod() {
doTest();
}
public void testNlsOnly() {
doTestNlsMode();