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 {
29
29
}
30
30
else -> null
31
31
}
32
- return ktclass?.isSpec() ? : false
32
+ return ktclass?.isSpec() == true
33
33
}
34
34
}
Original file line number Diff line number Diff line change 73
73
74
74
<implicitUsageProvider implementation =" io.kotest.plugin.intellij.implicits.SpecImplicitUsageProvider" />
75
75
<implicitUsageProvider implementation =" io.kotest.plugin.intellij.implicits.ProjectConfigImplicitUsageProvider" />
76
+ <implicitUsageProvider implementation =" io.kotest.plugin.intellij.implicits.PackageConfigImplicitUsageProvider" />
76
77
<implicitUsageProvider implementation =" io.kotest.plugin.intellij.implicits.AutoScanUsageProvider" />
77
78
78
79
<testFinder implementation =" io.kotest.plugin.intellij.KotestTestFinder" />
You can’t perform that action at this time.
0 commit comments