disable static method call on subclass if method is from interface

added in java 8, static methods in interfaces can't be called on subclasses, corresponding highlighting error provides the same fix and thus inspection is redundant
This commit is contained in:
Anna Kozlova
2018-03-07 08:02:40 +01:00
parent 25ea060e3c
commit 006a8d28a4
3 changed files with 18 additions and 1 deletions
@@ -156,7 +156,7 @@ public class StaticCallOnSubclassInspection extends BaseInspection implements Cl
if (declaringClass == null) {
return;
}
if (declaringClass.equals(referencedClass)) {
if (declaringClass.equals(referencedClass) || declaringClass.isInterface()) {
return;
}
final PsiResolveHelper resolveHelper = JavaPsiFacade.getInstance(methodExpression.getProject()).getResolveHelper();
@@ -0,0 +1,13 @@
interface I {
static <Z> void FOO() {
}
}
class A implements I {
{
A.<String>F<caret>OO();
}
}
@@ -33,6 +33,10 @@ public class StaticCallOnSubclassTest extends IGQuickFixesTestCase {
public void testMethodReference() {
doTest("methodRef", InspectionGadgetsBundle.message("static.method.via.subclass.rationalize.quickfix"));
}
public void testOnInterface() {
assertQuickfixNotAvailable(InspectionGadgetsBundle.message("static.method.via.subclass.rationalize.quickfix"));
}
@Override
protected String getRelativePath() {