mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-129149 JAM: do not highlight abstract JAM impl classes as "has no implementations"
This commit is contained in:
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
+1
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user