diff --git a/plugins/devkit/src/inspections/DevKitImplementedAtRuntimeCondition.java b/plugins/devkit/src/inspections/DevKitImplementedAtRuntimeCondition.java index f6cbe5e97a74..3c5aff386203 100644 --- a/plugins/devkit/src/inspections/DevKitImplementedAtRuntimeCondition.java +++ b/plugins/devkit/src/inspections/DevKitImplementedAtRuntimeCondition.java @@ -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"); } } diff --git a/plugins/devkit/testData/inspections/implicitUsage/ImplementedAtRuntimeJamElementImpl.java b/plugins/devkit/testData/inspections/implicitUsage/ImplementedAtRuntimeJamElementImpl.java new file mode 100644 index 000000000000..27dfb2d006fa --- /dev/null +++ b/plugins/devkit/testData/inspections/implicitUsage/ImplementedAtRuntimeJamElementImpl.java @@ -0,0 +1 @@ +public abstract class ImplementedAtRuntimeJamElementImpl implements com.intellij.jam.JamElement {} \ No newline at end of file diff --git a/plugins/devkit/testSources/inspections/DevKitImplicitUsageProviderTest.java b/plugins/devkit/testSources/inspections/DevKitImplicitUsageProviderTest.java index ced37a09f88a..a7fedaeaa74d 100644 --- a/plugins/devkit/testSources/inspections/DevKitImplicitUsageProviderTest.java +++ b/plugins/devkit/testSources/inspections/DevKitImplicitUsageProviderTest.java @@ -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 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()); + } }