From 8a4800add718d76d59ded609d35f2d1c3e249152 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 2 Jan 2020 20:06:01 +0100 Subject: [PATCH] i18n: ensure concatenations passed to @NonNls params are not suggested to i18n GitOrigin-RevId: 6c727e521fba1707694f493b719c9babaec11392 --- .../src/com/intellij/codeInspection/i18n/JavaI18nUtil.java | 5 ++++- .../i18n/ParameterInheritsNonNlsAnnotationFromSuper.java | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/JavaI18nUtil.java b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/JavaI18nUtil.java index 665ccb6a7d3c..1086316b07ef 100644 --- a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/JavaI18nUtil.java +++ b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/JavaI18nUtil.java @@ -110,12 +110,15 @@ public class JavaI18nUtil extends I18nUtil { static boolean isPassedToAnnotatedParam(@NotNull UExpression expression, @Nullable final Set nonNlsTargets) { UElement parent = UastUtils.skipParenthesizedExprUp(expression.getUastParent()); + if (parent instanceof UPolyadicExpression) { + parent = UastUtils.skipParenthesizedExprUp(parent.getUastParent()); + } UCallExpression callExpression = UastUtils.getUCallExpression(parent); if (callExpression == null) return false; List arguments = callExpression.getValueArguments(); OptionalInt idx = IntStream.range(0, arguments.size()) - .filter(i -> expression.equals(UastUtils.skipParenthesizedExprDown(arguments.get(i)))) + .filter(i -> UastUtils.isUastChildOf(expression, arguments.get(i), false)) .findFirst(); if (!idx.isPresent()) return false; diff --git a/plugins/java-i18n/testData/inspections/i18n/ParameterInheritsNonNlsAnnotationFromSuper.java b/plugins/java-i18n/testData/inspections/i18n/ParameterInheritsNonNlsAnnotationFromSuper.java index 5a247e1f3aa6..dee7c0f37daa 100644 --- a/plugins/java-i18n/testData/inspections/i18n/ParameterInheritsNonNlsAnnotationFromSuper.java +++ b/plugins/java-i18n/testData/inspections/i18n/ParameterInheritsNonNlsAnnotationFromSuper.java @@ -17,6 +17,7 @@ class C extends B{ void bar(C c) { c.foo("text"); + c.foo("text" + " " + "text"); new C().foo(("text")); } } \ No newline at end of file