diff --git a/java/java-psi-api/src/com/intellij/util/JavaPsiConstructorUtil.java b/java/java-psi-api/src/com/intellij/util/JavaPsiConstructorUtil.java
index bac7428b88f5..f837dc8eea26 100644
--- a/java/java-psi-api/src/com/intellij/util/JavaPsiConstructorUtil.java
+++ b/java/java-psi-api/src/com/intellij/util/JavaPsiConstructorUtil.java
@@ -88,16 +88,11 @@ public class JavaPsiConstructorUtil {
return null;
}
- return findConstructorInSuperWithParameterTypes(constructor, PsiType.EMPTY_ARRAY);
- }
-
- @Nullable
- public static PsiMethod findConstructorInSuperWithParameterTypes(@NotNull PsiMethod constructor, PsiType @NotNull [] parameterTypes) {
PsiClass containingClass = constructor.getContainingClass();
if (containingClass != null) {
PsiClass superClass = containingClass.getSuperClass();
if (superClass != null && superClass.getName() != null) {
- MethodSignature defConstructor = MethodSignatureUtil.createMethodSignature(superClass.getName(), parameterTypes,
+ MethodSignature defConstructor = MethodSignatureUtil.createMethodSignature(superClass.getName(), PsiType.EMPTY_ARRAY,
PsiTypeParameter.EMPTY_ARRAY, PsiSubstitutor.EMPTY, true);
return MethodSignatureUtil.findMethodBySignature(superClass, defConstructor, false);
}
diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/naming/ParameterNameDiffersFromOverriddenParameterInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/naming/ParameterNameDiffersFromOverriddenParameterInspection.java
index b3f78e0222f0..03d79c448c09 100644
--- a/plugins/InspectionGadgets/src/com/siyeh/ig/naming/ParameterNameDiffersFromOverriddenParameterInspection.java
+++ b/plugins/InspectionGadgets/src/com/siyeh/ig/naming/ParameterNameDiffersFromOverriddenParameterInspection.java
@@ -94,7 +94,14 @@ public class ParameterNameDiffersFromOverriddenParameterInspection
@Nullable
private PsiMethod getSuperMethod(@NotNull PsiMethod method) {
if (method.isConstructor()) {
- return JavaPsiConstructorUtil.findConstructorInSuperWithParameterTypes(method, method.getSignature(PsiSubstitutor.EMPTY).getParameterTypes());
+ PsiMethod superCtor = JavaPsiConstructorUtil.findConstructorInSuper(method);
+ if (superCtor == null) return null;
+ PsiClass superClass = superCtor.getContainingClass();
+ if (superClass == null || CommonClassNames.JAVA_LANG_OBJECT.equals(superClass.getQualifiedName()) ||
+ superCtor.getParameters().length != method.getParameters().length) {
+ return null;
+ }
+ return superCtor;
}
return MethodUtils.getSuper(method);
}
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 afbed2718ceb..e9b322fb68b9 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
@@ -20,4 +20,37 @@ class Sub extends Super {
@Override
void overloaded(String string) {
}
+}
+
+class A {
+ A(T name, int age) {}
+ A() {}
+}
+
+class B extends A {
+ B(T street,
+ int number) {
+ super(street, number);
+ }
+}
+
+class C {
+ C(String name, int age) {}
+ C() {}
+}
+
+class D extends C {
+ D(String street, int number) {
+ super();
+ }
+}
+
+class E {
+ E(String name, int age) {}
+}
+
+class F extends E {
+ F(String name, int age, int weight) {
+ super(name, age);
+ }
}
\ No newline at end of file