IDEA-129149 JAM: do not highlight abstract JAM impl classes as "has no implementations"

This commit is contained in:
Yann Cébron
2014-08-27 18:43:55 +02:00
parent 6aaa7b811d
commit ca95714a6d
3 changed files with 22 additions and 2 deletions
@@ -17,6 +17,7 @@ package org.jetbrains.idea.devkit.inspections;
import com.intellij.codeInspection.inheritance.ImplementedAtRuntimeCondition;
import com.intellij.psi.PsiClass;
import com.intellij.psi.util.InheritanceUtil;
import org.jetbrains.annotations.NotNull;
/**
@@ -25,6 +26,7 @@ import org.jetbrains.annotations.NotNull;
public class DevKitImplementedAtRuntimeCondition extends ImplementedAtRuntimeCondition {
@Override
public boolean isImplementedAtRuntime(@NotNull PsiClass psiClass) {
return DevKitImplicitUsageProvider.isDomElementClass(psiClass);
return DevKitImplicitUsageProvider.isDomElementClass(psiClass) ||
InheritanceUtil.isInheritor(psiClass, "com.intellij.jam.JamElement");
}
}
@@ -0,0 +1 @@
public abstract class ImplementedAtRuntimeJamElementImpl implements com.intellij.jam.JamElement {}
@@ -38,18 +38,35 @@ public class DevKitImplicitUsageProviderTest extends LightCodeInsightFixtureTest
myFixture.addClass("package com.intellij.util.xml; public interface DomElementVisitor {}");
myFixture.addClass("package com.intellij.util.xml; public interface GenericAttributeValue<T> extends DomElement {}");
myFixture.enableInspections(new UnusedSymbolLocalInspection(), new UnusedDeclarationInspection(), new AbstractClassNeverImplementedInspection());
myFixture.addClass("package com.intellij.jam; public interface JamElement {}");
}
public void testImplicitUsagesDomElement() {
enableImplicitUsageInspections();
myFixture.testHighlighting("ImplicitUsagesDomElement.java");
}
public void testImplicitUsagesDomElementVisitor() {
enableImplicitUsageInspections();
myFixture.testHighlighting("ImplicitUsagesDomElementVisitor.java");
}
private void enableImplicitUsageInspections() {
myFixture.enableInspections(new UnusedSymbolLocalInspection(), new UnusedDeclarationInspection());
}
public void testImplementedAtRuntimeDomElementImpl() {
enableImplementedAtRuntimeInspections();
myFixture.testHighlighting("ImplementedAtRuntimeDomElementImpl.java");
}
public void testImplementedAtRuntimeJamElementImpl() {
enableImplementedAtRuntimeInspections();
myFixture.testHighlighting("ImplementedAtRuntimeJamElementImpl.java");
}
private void enableImplementedAtRuntimeInspections() {
myFixture.enableInspections(new AbstractClassNeverImplementedInspection());
}
}