mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-02-04 23:39:07 +07:00
[kotlin] KTIJ-29028 implicit type parameter
GitOrigin-RevId: a028e342ea600775e9c77b2fc50e42b80555fa44
This commit is contained in:
committed by
intellij-monorepo-bot
parent
3999b673b4
commit
b50acd866e
@@ -13,7 +13,6 @@ import com.intellij.psi.PsiFile
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
||||
import org.jetbrains.kotlin.analysis.api.diagnostics.KtDiagnosticWithPsi
|
||||
import org.jetbrains.kotlin.idea.codeinsight.api.classic.quickfixes.QuickFixActionBase
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
/*sealed*/ fun interface KotlinQuickFixFactory<DIAGNOSTIC : KtDiagnosticWithPsi<*>> {
|
||||
|
||||
@@ -43,7 +42,6 @@ import kotlin.reflect.KClass
|
||||
* Returns a [KotlinQuickFixFactory.IntentionBased] that creates [IntentionAction]s from a diagnostic.
|
||||
*/
|
||||
fun <DIAGNOSTIC : KtDiagnosticWithPsi<*>> diagnosticFixFactoryFromIntentionActions(
|
||||
diagnosticClass: KClass<DIAGNOSTIC>,
|
||||
createIntentionActions: context(KtAnalysisSession)(DIAGNOSTIC) -> List<IntentionAction>,
|
||||
) = KotlinQuickFixFactory.IntentionBased { diagnostic: DIAGNOSTIC ->
|
||||
// Wrap the IntentionActions as QuickFixActionBase. This ensures all fixes are of type QuickFixActionBase.
|
||||
|
||||
@@ -102,27 +102,27 @@ internal class KtImplementAsConstructorParameterQuickfix(private val members: Co
|
||||
object MemberNotImplementedQuickfixFactories {
|
||||
|
||||
val abstractMemberNotImplemented =
|
||||
diagnosticFixFactoryFromIntentionActions(KtFirDiagnostic.AbstractMemberNotImplemented::class) { diagnostic ->
|
||||
diagnosticFixFactoryFromIntentionActions { diagnostic: KtFirDiagnostic.AbstractMemberNotImplemented ->
|
||||
getUnimplementedMemberFixes(diagnostic.psi)
|
||||
}
|
||||
|
||||
val abstractClassMemberNotImplemented =
|
||||
diagnosticFixFactoryFromIntentionActions(KtFirDiagnostic.AbstractClassMemberNotImplemented::class) { diagnostic ->
|
||||
diagnosticFixFactoryFromIntentionActions { diagnostic: KtFirDiagnostic.AbstractClassMemberNotImplemented ->
|
||||
getUnimplementedMemberFixes(diagnostic.psi)
|
||||
}
|
||||
|
||||
val manyInterfacesMemberNotImplemented =
|
||||
diagnosticFixFactoryFromIntentionActions(KtFirDiagnostic.ManyInterfacesMemberNotImplemented::class) { diagnostic ->
|
||||
diagnosticFixFactoryFromIntentionActions { diagnostic: KtFirDiagnostic.ManyInterfacesMemberNotImplemented ->
|
||||
getUnimplementedMemberFixes(diagnostic.psi)
|
||||
}
|
||||
|
||||
val manyImplMemberNotImplemented =
|
||||
diagnosticFixFactoryFromIntentionActions(KtFirDiagnostic.ManyImplMemberNotImplemented::class) { diagnostic ->
|
||||
diagnosticFixFactoryFromIntentionActions { diagnostic: KtFirDiagnostic.ManyImplMemberNotImplemented ->
|
||||
getUnimplementedMemberFixes(diagnostic.psi, false)
|
||||
}
|
||||
|
||||
val abstractMemberNotImplementedByEnumEntry =
|
||||
diagnosticFixFactoryFromIntentionActions(KtFirDiagnostic.AbstractMemberNotImplementedByEnumEntry::class) { diagnostic ->
|
||||
diagnosticFixFactoryFromIntentionActions { diagnostic: KtFirDiagnostic.AbstractMemberNotImplementedByEnumEntry ->
|
||||
val missingDeclarations = diagnostic.missingDeclarations
|
||||
if (missingDeclarations.isEmpty()) return@diagnosticFixFactoryFromIntentionActions emptyList()
|
||||
listOf(KtImplementMembersQuickfix(missingDeclarations.mapToKtClassMemberInfo()))
|
||||
|
||||
@@ -99,7 +99,7 @@ private fun KtQuickFixesListBuilder.registerQuickFixForDiagnosticFactory(
|
||||
private inline fun <reified DIAGNOSTIC : KtDiagnosticWithPsi<*>> createApplicatorForFactory(
|
||||
factory: AbstractKtDiagnosticFactory,
|
||||
crossinline createQuickFixes: context(KtAnalysisSession)(DIAGNOSTIC) -> List<IntentionAction>
|
||||
) = diagnosticFixFactoryFromIntentionActions(DIAGNOSTIC::class) { diagnostic ->
|
||||
) = diagnosticFixFactoryFromIntentionActions { diagnostic: DIAGNOSTIC ->
|
||||
if (diagnostic.factoryName == factory.name) {
|
||||
createQuickFixes(analysisSession, diagnostic)
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user