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