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 extends String> 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