[kotlin] KTIJ-29028 implicit type parameter

GitOrigin-RevId: a028e342ea600775e9c77b2fc50e42b80555fa44
This commit is contained in:
Andrew Kozlov
2024-05-09 18:11:13 +02:00
committed by intellij-monorepo-bot
parent 3999b673b4
commit b50acd866e
3 changed files with 6 additions and 8 deletions

View File

@@ -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.

View File

@@ -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()))

View File

@@ -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 {