diff --git a/java/java-impl/src/com/siyeh/ig/naming/ParameterNameDiffersFromOverriddenParameterInspection.java b/java/java-impl/src/com/siyeh/ig/naming/ParameterNameDiffersFromOverriddenParameterInspection.java index 00b958eafc87..2629fc3e0b6f 100644 --- a/java/java-impl/src/com/siyeh/ig/naming/ParameterNameDiffersFromOverriddenParameterInspection.java +++ b/java/java-impl/src/com/siyeh/ig/naming/ParameterNameDiffersFromOverriddenParameterInspection.java @@ -96,6 +96,7 @@ public class ParameterNameDiffersFromOverriddenParameterInspection extends BaseI } final PsiReferenceExpression methodExpression = expression.getMethodExpression(); final boolean constructorCall = JavaPsiConstructorUtil.isConstructorCall(expression); + final boolean superCall = PsiUtil.isJavaToken(methodExpression.getReferenceNameElement(), JavaTokenType.SUPER_KEYWORD); final PsiMethod method = PsiTreeUtil.getParentOfType(expression, PsiMethod.class, true); if (method == null || !constructorCall && !method.getName().equals(methodExpression.getReferenceName())) { return; @@ -104,6 +105,10 @@ public class ParameterNameDiffersFromOverriddenParameterInspection extends BaseI if (targetMethod == null) { return; } + final PsiParameterList parameterList = targetMethod.getParameterList(); + if (!superCall && parameterList.getParametersCount() <= method.getParameterList().getParametersCount()) { + return; + } final PsiClass containingClass = targetMethod.getContainingClass(); final PsiClass aClass = method.getContainingClass(); if (containingClass == null || aClass == null || containingClass != aClass && !aClass.isInheritor(containingClass, true)) { @@ -112,7 +117,7 @@ public class ParameterNameDiffersFromOverriddenParameterInspection extends BaseI if (m_ignoreOverridesOfLibraryMethods && targetMethod instanceof PsiCompiledElement) { return; } - final PsiParameter[] parameters = targetMethod.getParameterList().getParameters(); + final PsiParameter[] parameters = parameterList.getParameters(); final PsiExpression[] arguments = argumentList.getExpressions(); for (int i = 0, length = Math.min(arguments.length, parameters.length); i < length; i++) { final PsiExpression argument = PsiUtil.skipParenthesizedExprDown(arguments[i]); @@ -135,9 +140,7 @@ public class ParameterNameDiffersFromOverriddenParameterInspection extends BaseI continue; } int type = constructorCall - ? PsiUtil.isJavaToken(methodExpression.getReferenceNameElement(), JavaTokenType.SUPER_KEYWORD) - ? SUPER_CONSTRUCTOR - : OVERLOADED_CONSTRUCTOR + ? superCall ? SUPER_CONSTRUCTOR : OVERLOADED_CONSTRUCTOR : OVERLOADED_METHOD; registerVariableError(targetParameter, parameterName, type); } diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/naming/parameter_name_differs_from_overridden_parameter/ParameterNameDiffersFromOverriddenParameter.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/naming/parameter_name_differs_from_overridden_parameter/ParameterNameDiffersFromOverriddenParameter.java index aeced27a9133..22da72a99bf5 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/naming/parameter_name_differs_from_overridden_parameter/ParameterNameDiffersFromOverriddenParameter.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/naming/parameter_name_differs_from_overridden_parameter/ParameterNameDiffersFromOverriddenParameter.java @@ -95,6 +95,10 @@ class H extends G { super(street.toString(), number); } + H(String title, int age, int number) { + super(title, age); + } + private void configureMethod(final Iterable> registeredAnnotations, final Integer method) { for (final Class registeredAnnotation : registeredAnnotations) { configureMethod(registeredAnnotation, method); @@ -115,4 +119,17 @@ class J { // unrelated to I public T getBean(Class requiredType) { return null; } +} +class Test { + + static int method(int a, int b) { + return a + b; + } + static int method(int a, int b, int c) { + return method (a, method(b, c)); + } + static int method(int a, int b, int c, int d) { + return method(a, method(b, c, d)); + } + } \ No newline at end of file