diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/i18n/afterNonNlsChainCallParens.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/i18n/afterNonNlsChainCallParens.java new file mode 100644 index 000000000000..8947e00dae2d --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/i18n/afterNonNlsChainCallParens.java @@ -0,0 +1,13 @@ +import org.jetbrains.annotations.NonNls; + +// "Annotate method 'test' as @NonNls" "true" +class Foo { + @NonNls + Foo test(String s) { + return this; + } + + public boolean doTest() { + System.out.println((test("Hello")).toString()); + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/i18n/beforeNonNlsChainCallParens.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/i18n/beforeNonNlsChainCallParens.java new file mode 100644 index 000000000000..b6c8d7a437bc --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/i18n/beforeNonNlsChainCallParens.java @@ -0,0 +1,10 @@ +// "Annotate method 'test' as @NonNls" "true" +class Foo { + Foo test(String s) { + return this; + } + + public boolean doTest() { + System.out.println((test("Hello")).toString()); + } +} diff --git a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nInspection.java b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nInspection.java index 38ad1d176091..e57810a18d5a 100644 --- a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nInspection.java +++ b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nInspection.java @@ -1066,15 +1066,15 @@ public class I18nInspection extends AbstractBaseUastLocalInspectionTool implemen private static boolean isInNonNlsCallChain(@NotNull UExpression expression, final Set nonNlsTargets) { UExpression parent = UastUtils.skipParenthesizedExprDown(JavaI18nUtil.getTopLevelExpression(expression, true)); - if (parent instanceof UQualifiedReferenceExpression) { - return isNonNlsCall((UQualifiedReferenceExpression)parent, nonNlsTargets); + if (parent instanceof UResolvable && isNonNlsCall((UResolvable)parent, nonNlsTargets)) { + return true; } - else if (parent != null && UastExpressionUtils.isAssignment(parent)) { + if (parent != null && UastExpressionUtils.isAssignment(parent)) { UExpression operand = ((UBinaryExpression)parent).getLeftOperand(); if (operand instanceof UReferenceExpression && isNonNlsCall((UReferenceExpression)operand, nonNlsTargets)) return true; } - else if (parent instanceof UCallExpression) { + if (parent instanceof UCallExpression) { UElement parentOfNew = UastUtils.skipParenthesizedExprUp(parent.getUastParent()); if (parentOfNew instanceof ULocalVariable) { final ULocalVariable newVariable = (ULocalVariable)parentOfNew;