From 2fefd8babfb8f21d797ff51662005278bdfb0825 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 11 Mar 2014 17:34:00 +0100 Subject: [PATCH] abstract method overrides abstract: distinguish between covariant returns (IDEA-121930) (cherry picked from commit 52e7e2b268ad91e5c9a23c8a4671b1a3b9db89f5) --- ...ctMethodOverridesAbstractMethodInspection.java | 2 +- .../AbstractMethodOverridesAbstractMethod.java | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/AbstractMethodOverridesAbstractMethodInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/AbstractMethodOverridesAbstractMethodInspection.java index 28e99d0f221a..1ab70368e8c7 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/AbstractMethodOverridesAbstractMethodInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/AbstractMethodOverridesAbstractMethodInspection.java @@ -217,7 +217,7 @@ public class AbstractMethodOverridesAbstractMethodInspection extends BaseInspect if (aClass == null || superClass == null) return false; final PsiSubstitutor substitutor = TypeConversionUtil.getSuperClassSubstitutor(superClass, aClass, PsiSubstitutor.EMPTY); final PsiType type2 = method2.getReturnType(); - return Comparing.equal(TypeConversionUtil.erasure(type1), TypeConversionUtil.erasure(substitutor.substitute(type2))); + return Comparing.equal(type1, substitutor.substitute(type2)); } private boolean isAbstract(PsiMethod method) { diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/inheritance/abstract_method_overrides_abstract_method/AbstractMethodOverridesAbstractMethod.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/inheritance/abstract_method_overrides_abstract_method/AbstractMethodOverridesAbstractMethod.java index 7c7d64a3f29c..5cb023abb49f 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/inheritance/abstract_method_overrides_abstract_method/AbstractMethodOverridesAbstractMethod.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/inheritance/abstract_method_overrides_abstract_method/AbstractMethodOverridesAbstractMethod.java @@ -78,4 +78,17 @@ class Java8DefaultMethods { System.out.println("sub"); } } -} \ No newline at end of file +} + +class CovariantReturnTypes { + interface A {} + interface Foo { + A test(); + } + + interface Bar extends Foo { + @Override + A test(); + } +} +