[kotlin] KTIJ-29028 class inlined

GitOrigin-RevId: b2ab96f49055f6685416a5194b392153785cbd58
This commit is contained in:
andrew.kozlov
2024-03-12 15:54:34 +01:00
committed by intellij-monorepo-bot
parent 1d363ca4fd
commit abd0559ea9

View File

@@ -8,7 +8,6 @@ import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.diagnostics.KtDiagnosticWithPsi
import org.jetbrains.kotlin.idea.codeinsight.api.classic.quickfixes.QuickFixesPsiBasedFactory
import org.jetbrains.kotlin.miniStdLib.annotations.PrivateForInline
import kotlin.reflect.KClass
class KotlinQuickFixesList @ForKtQuickFixesListBuilder constructor(
@@ -47,25 +46,17 @@ class KtQuickFixesListBuilder private constructor() {
MutableList<KotlinQuickFixFactory<out KtDiagnosticWithPsi<*>>>,
>()
@OptIn(PrivateForInline::class)
fun <DIAGNOSTIC_PSI : PsiElement, DIAGNOSTIC : KtDiagnosticWithPsi<DIAGNOSTIC_PSI>> registerPsiQuickFixes(
diagnosticClass: KClass<DIAGNOSTIC>,
vararg quickFixFactories: QuickFixesPsiBasedFactory<in DIAGNOSTIC_PSI>
vararg factories: QuickFixesPsiBasedFactory<in DIAGNOSTIC_PSI>,
) {
for (quickFixFactory in quickFixFactories) {
registerPsiQuickFix(diagnosticClass, quickFixFactory)
for (factory in factories) {
registerFactory(diagnosticClass) { diagnostic: DIAGNOSTIC ->
factory.createQuickFix(diagnostic.psi)
}
}
}
@PrivateForInline
fun <DIAGNOSTIC_PSI : PsiElement, DIAGNOSTIC : KtDiagnosticWithPsi<DIAGNOSTIC_PSI>> registerPsiQuickFix(
diagnosticClass: KClass<DIAGNOSTIC>,
quickFixFactory: QuickFixesPsiBasedFactory<in DIAGNOSTIC_PSI>
) {
quickFixes.getOrPut(diagnosticClass) { mutableListOf() }
.add(KotlinQuickFixesPsiBasedFactory(quickFixFactory))
}
fun <DIAGNOSTIC : KtDiagnosticWithPsi<*>> registerApplicators(
quickFixFactories: Collection<KotlinDiagnosticFixFactory<out DIAGNOSTIC>>
) {
@@ -100,15 +91,6 @@ class KtQuickFixesListBuilder private constructor() {
}
}
private class KotlinQuickFixesPsiBasedFactory(
private val delegate: QuickFixesPsiBasedFactory<*>,
) : KotlinQuickFixFactory<KtDiagnosticWithPsi<*>> {
context(KtAnalysisSession)
override fun createQuickFixes(diagnostic: KtDiagnosticWithPsi<*>): List<CommonIntentionAction> =
delegate.createQuickFix(diagnostic.psi)
}
private class KotlinApplicatorBasedFactory<DIAGNOSTIC : KtDiagnosticWithPsi<*>>(
private val delegate: KotlinDiagnosticFixFactory<DIAGNOSTIC>,
) : KotlinQuickFixFactory<DIAGNOSTIC> {