Skip to content

Commit fb85246

Browse files
hybloidintellij-monorepo-bot
authored andcommitted
QD-12662: Allow supplying dynamic tools with custom inspection wrappers
(cherry picked from commit e7a0f49f0139231b43c7878d428845077df1d34c) IJ-MR-186129 GitOrigin-RevId: 77dcb836560de92cba90cf6e1344dc1c0f8fe254
1 parent 2f3b469 commit fb85246

File tree

1 file changed

+25
-6
lines changed

1 file changed

+25
-6
lines changed

platform/analysis-impl/src/com/intellij/codeInspection/ex/dynamic-inspections.kt

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,37 @@ sealed class DynamicInspectionDescriptor {
3333
else -> error("Got ${tool}, expected ${LocalInspectionTool::class.java} or ${GlobalInspectionTool::class.java}")
3434
}
3535
}
36+
37+
fun fromLocalToolWithWrapper(
38+
tool: LocalInspectionTool,
39+
wrapperFactory: (LocalInspectionTool) -> InspectionToolWrapper<*,*>
40+
): DynamicInspectionDescriptor {
41+
return LocalWithCustomWrapper(tool, wrapperFactory)
42+
}
3643
}
3744

38-
val toolWrapper: InspectionToolWrapper<*, *> by lazy {
39-
when(this) {
40-
is Local -> DynamicLocalInspectionToolWrapper(tool)
41-
is Global -> DynamicGlobalInspectionToolWrapper(tool)
45+
abstract val toolWrapper: InspectionToolWrapper<*, *>
46+
47+
class Local(val tool: LocalInspectionTool) : DynamicInspectionDescriptor() {
48+
override val toolWrapper: InspectionToolWrapper<*, *> by lazy {
49+
DynamicLocalInspectionToolWrapper(tool)
4250
}
4351
}
4452

45-
class Local(val tool: LocalInspectionTool) : DynamicInspectionDescriptor()
53+
class Global(val tool: GlobalInspectionTool) : DynamicInspectionDescriptor() {
54+
override val toolWrapper: InspectionToolWrapper<*, *> by lazy {
55+
DynamicGlobalInspectionToolWrapper(tool)
56+
}
57+
}
4658

47-
class Global(val tool: GlobalInspectionTool) : DynamicInspectionDescriptor()
59+
class LocalWithCustomWrapper(
60+
val tool: LocalInspectionTool,
61+
private val wrapperFactory: (LocalInspectionTool) -> InspectionToolWrapper<*,*>
62+
) : DynamicInspectionDescriptor() {
63+
override val toolWrapper: InspectionToolWrapper<*, *> by lazy {
64+
wrapperFactory(tool)
65+
}
66+
}
4867

4968
private class DynamicLocalInspectionToolWrapper(tool: LocalInspectionTool) : LocalInspectionToolWrapper(tool) {
5069
override fun createCopy(): LocalInspectionToolWrapper = DynamicLocalInspectionToolWrapper(tool)

0 commit comments

Comments
 (0)