File tree Expand file tree Collapse file tree 3 files changed +44
-1
lines changed
kotlin/io/kotest/plugin/intellij/implicits Expand file tree Collapse file tree 3 files changed +44
-1
lines changed Original file line number Diff line number Diff line change 1+ package io.kotest.plugin.intellij.implicits
2+
3+ import com.intellij.codeInsight.daemon.ImplicitUsageProvider
4+ import com.intellij.psi.PsiElement
5+ import io.kotest.plugin.intellij.psi.isSubclass
6+ import org.jetbrains.kotlin.asJava.classes.KtLightClass
7+ import org.jetbrains.kotlin.name.FqName
8+ import org.jetbrains.kotlin.psi.KtClass
9+ import org.jetbrains.kotlin.psi.KtClassOrObject
10+ import org.jetbrains.kotlin.psi.KtObjectDeclaration
11+
12+ /* *
13+ * Allows disabling highlighting of certain elements as unused when such elements are not referenced
14+ * from the code but are referenced in some other way.
15+ *
16+ * This [PackageConfigImplicitUsageProvider] will mark module config classes as used.
17+ */
18+ class PackageConfigImplicitUsageProvider : ImplicitUsageProvider {
19+
20+ private val fqn = FqName (" io.kotest.core.config.AbstractPackageConfig" )
21+
22+ override fun isImplicitWrite (element : PsiElement ): Boolean = false
23+ override fun isImplicitRead (element : PsiElement ): Boolean = false
24+
25+ /* *
26+ * Marks subclasses of AbstractProjectConfig as used.
27+ */
28+ override fun isImplicitUsage (element : PsiElement ): Boolean {
29+ return when (element) {
30+ is KtClassOrObject -> element.isSubclass(fqn)
31+ is KtLightClass -> {
32+ val o = element.kotlinOrigin ? : return false
33+ return when (o) {
34+ is KtObjectDeclaration -> o.isSubclass(fqn)
35+ is KtClass -> o.isSubclass(fqn)
36+ else -> false
37+ }
38+ }
39+ else -> false
40+ }
41+ }
42+ }
Original file line number Diff line number Diff line change @@ -29,6 +29,6 @@ class SpecImplicitUsageProvider : ImplicitUsageProvider {
2929 }
3030 else -> null
3131 }
32- return ktclass?.isSpec() ? : false
32+ return ktclass?.isSpec() == true
3333 }
3434}
Original file line number Diff line number Diff line change 7373
7474 <implicitUsageProvider implementation =" io.kotest.plugin.intellij.implicits.SpecImplicitUsageProvider" />
7575 <implicitUsageProvider implementation =" io.kotest.plugin.intellij.implicits.ProjectConfigImplicitUsageProvider" />
76+ <implicitUsageProvider implementation =" io.kotest.plugin.intellij.implicits.PackageConfigImplicitUsageProvider" />
7677 <implicitUsageProvider implementation =" io.kotest.plugin.intellij.implicits.AutoScanUsageProvider" />
7778
7879 <testFinder implementation =" io.kotest.plugin.intellij.KotestTestFinder" />
You can’t perform that action at this time.
0 commit comments