Fix binary incompatibility of createRemoveModifierFromListOwnerFactory
This commit is contained in:
@@ -27,6 +27,10 @@ class QuickFixes {
|
||||
factories.putAll(diagnosticFactory, factory.map { it.asKotlinIntentionActionsFactory() })
|
||||
}
|
||||
|
||||
fun register(diagnosticFactory: DiagnosticFactory<*>, vararg factory: KotlinIntentionActionsFactory) {
|
||||
factories.putAll(diagnosticFactory, factory.toList())
|
||||
}
|
||||
|
||||
fun register(diagnosticFactory: DiagnosticFactory<*>, vararg action: IntentionAction) {
|
||||
actions.putAll(diagnosticFactory, action.toList())
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
|
||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||
import org.jetbrains.kotlin.types.TypeUtils
|
||||
|
||||
open class AddModifierFix(
|
||||
open class AddModifierFix(
|
||||
element: KtModifierListOwner,
|
||||
protected val modifier: KtModifierKeywordToken
|
||||
) : KotlinCrossLanguageQuickFixAction<KtModifierListOwner>(element), KotlinUniversalQuickFix {
|
||||
|
||||
@@ -17,10 +17,26 @@
|
||||
package org.jetbrains.kotlin.idea.quickfix
|
||||
|
||||
import com.intellij.codeInsight.intention.IntentionAction
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
||||
|
||||
abstract class KotlinSingleIntentionActionFactory : KotlinIntentionActionsFactory() {
|
||||
protected abstract fun createAction(diagnostic: Diagnostic): IntentionAction?
|
||||
|
||||
final override fun doCreateActions(diagnostic: Diagnostic): List<IntentionAction> = listOfNotNull(createAction(diagnostic))
|
||||
|
||||
companion object {
|
||||
inline fun <reified PSI : PsiElement> createFromQuickFixesPsiBasedFactory(
|
||||
psiBasedFactory: QuickFixesPsiBasedFactory<PSI>
|
||||
): KotlinSingleIntentionActionFactory = object : KotlinSingleIntentionActionFactory() {
|
||||
override fun createAction(diagnostic: Diagnostic): IntentionAction? {
|
||||
val factories = psiBasedFactory.createQuickFix(diagnostic.psiElement as PSI)
|
||||
return when (factories.size) {
|
||||
0 -> null
|
||||
1 -> factories.single()
|
||||
else -> error("To convert QuickFixesPsiBasedFactory to KotlinSingleIntentionActionFactory, it should always return one or zero quickfixes")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.idea.inspections.InfixCallFixActionFactory
|
||||
import org.jetbrains.kotlin.idea.inspections.PlatformUnresolvedProvider
|
||||
import org.jetbrains.kotlin.idea.inspections.RemoveAnnotationFix
|
||||
import org.jetbrains.kotlin.idea.intentions.*
|
||||
import org.jetbrains.kotlin.idea.quickfix.RemoveModifierFix.Companion.createRemoveModifierFromListOwnerPsiBasedFactory
|
||||
import org.jetbrains.kotlin.idea.quickfix.createFromUsage.createCallable.*
|
||||
import org.jetbrains.kotlin.idea.quickfix.createFromUsage.createClass.CreateClassFromCallWithConstructorCalleeActionFactory
|
||||
import org.jetbrains.kotlin.idea.quickfix.createFromUsage.createClass.CreateClassFromConstructorCallActionFactory
|
||||
@@ -64,7 +65,7 @@ class QuickFixRegistrar : QuickFixContributor {
|
||||
quickFixes.register(this, *action)
|
||||
}
|
||||
|
||||
val removeAbstractModifierFactory = RemoveModifierFix.createRemoveModifierFromListOwnerFactory(ABSTRACT_KEYWORD)
|
||||
val removeAbstractModifierFactory = createRemoveModifierFromListOwnerPsiBasedFactory(ABSTRACT_KEYWORD )
|
||||
val addAbstractModifierFactory = AddModifierFix.createFactory(ABSTRACT_KEYWORD)
|
||||
|
||||
ABSTRACT_PROPERTY_IN_PRIMARY_CONSTRUCTOR_PARAMETERS.registerFactory(removeAbstractModifierFactory)
|
||||
@@ -98,7 +99,7 @@ class QuickFixRegistrar : QuickFixContributor {
|
||||
NON_MEMBER_FUNCTION_NO_BODY.registerFactory(AddFunctionBodyFix)
|
||||
|
||||
NOTHING_TO_OVERRIDE.registerFactory(
|
||||
RemoveModifierFix.createRemoveModifierFromListOwnerFactory(OVERRIDE_KEYWORD),
|
||||
RemoveModifierFix.createRemoveModifierFromListOwnerPsiBasedFactory(OVERRIDE_KEYWORD),
|
||||
ChangeMemberFunctionSignatureFix,
|
||||
AddFunctionToSupertypeFix,
|
||||
AddPropertyToSupertypeFix
|
||||
@@ -117,15 +118,15 @@ class QuickFixRegistrar : QuickFixContributor {
|
||||
|
||||
val removeRedundantModifierFactory = RemoveModifierFix.createRemoveModifierFactory(true)
|
||||
REDUNDANT_MODIFIER.registerFactory(removeRedundantModifierFactory)
|
||||
REDUNDANT_OPEN_IN_INTERFACE.registerFactory(RemoveModifierFix.createRemoveModifierFromListOwnerFactory(OPEN_KEYWORD, true))
|
||||
REDUNDANT_OPEN_IN_INTERFACE.registerFactory(RemoveModifierFix.createRemoveModifierFromListOwnerPsiBasedFactory(OPEN_KEYWORD, true))
|
||||
REDUNDANT_INLINE_SUSPEND_FUNCTION_TYPE.registerFactory(RemoveModifierFix.createRemoveSuspendFactory())
|
||||
UNNECESSARY_LATEINIT.registerFactory(RemoveModifierFix.createRemoveModifierFromListOwnerFactory(LATEINIT_KEYWORD))
|
||||
UNNECESSARY_LATEINIT.registerFactory(RemoveModifierFix.createRemoveModifierFromListOwnerPsiBasedFactory(LATEINIT_KEYWORD))
|
||||
|
||||
REDUNDANT_PROJECTION.registerFactory(RemoveModifierFix.createRemoveProjectionFactory(true))
|
||||
INCOMPATIBLE_MODIFIERS.registerFactory(RemoveModifierFix.createRemoveModifierFactory(false))
|
||||
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED.registerFactory(RemoveModifierFix.createRemoveVarianceFactory())
|
||||
|
||||
val removeOpenModifierFactory = RemoveModifierFix.createRemoveModifierFromListOwnerFactory(OPEN_KEYWORD)
|
||||
val removeOpenModifierFactory = RemoveModifierFix.createRemoveModifierFromListOwnerPsiBasedFactory(OPEN_KEYWORD)
|
||||
NON_FINAL_MEMBER_IN_FINAL_CLASS.registerFactory(
|
||||
AddModifierFix.createFactory(OPEN_KEYWORD, KtClass::class.java),
|
||||
removeOpenModifierFactory
|
||||
@@ -539,7 +540,7 @@ class QuickFixRegistrar : QuickFixContributor {
|
||||
OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR.registerFactory(RemoveAnnotationFix.JvmOverloads)
|
||||
OVERLOADS_ANNOTATION_CLASS_CONSTRUCTOR_WARNING.registerFactory(RemoveAnnotationFix.JvmOverloads)
|
||||
|
||||
ACTUAL_WITHOUT_EXPECT.registerFactory(RemoveModifierFix.createRemoveModifierFromListOwnerFactory(ACTUAL_KEYWORD))
|
||||
ACTUAL_WITHOUT_EXPECT.registerFactory(RemoveModifierFix.createRemoveModifierFromListOwnerPsiBasedFactory(ACTUAL_KEYWORD))
|
||||
ACTUAL_WITHOUT_EXPECT.registerFactory(CreateExpectedFix)
|
||||
NO_ACTUAL_FOR_EXPECT.registerFactory(CreateActualFix)
|
||||
NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS.registerFactory(AddActualFix)
|
||||
|
||||
@@ -50,9 +50,21 @@ class RemoveModifierFix(
|
||||
}
|
||||
|
||||
companion object {
|
||||
@Deprecated(
|
||||
"For binary compatibility",
|
||||
replaceWith = ReplaceWith("createRemoveModifierFromListOwnerPsiBasedFactory(modifier, isRedundant)")
|
||||
)
|
||||
fun createRemoveModifierFromListOwnerFactory(
|
||||
modifier: KtModifierKeywordToken,
|
||||
isRedundant: Boolean = false
|
||||
): KotlinSingleIntentionActionFactory =
|
||||
KotlinSingleIntentionActionFactory.createFromQuickFixesPsiBasedFactory(
|
||||
createRemoveModifierFromListOwnerPsiBasedFactory(modifier, isRedundant)
|
||||
)
|
||||
|
||||
fun createRemoveModifierFromListOwnerPsiBasedFactory(
|
||||
modifier: KtModifierKeywordToken,
|
||||
isRedundant: Boolean = false
|
||||
): QuickFixesPsiBasedFactory<PsiElement> =
|
||||
createRemoveModifierFromListOwnerFactoryByModifierListOwner(
|
||||
modifier,
|
||||
|
||||
@@ -133,7 +133,7 @@ private val errorsFixingDiagnosticBasedPostProcessingGroup =
|
||||
Errors.VIRTUAL_MEMBER_HIDDEN
|
||||
),
|
||||
diagnosticBasedProcessing(
|
||||
RemoveModifierFix.createRemoveModifierFromListOwnerFactory(KtTokens.OPEN_KEYWORD),
|
||||
RemoveModifierFix.createRemoveModifierFromListOwnerPsiBasedFactory(KtTokens.OPEN_KEYWORD),
|
||||
Errors.NON_FINAL_MEMBER_IN_FINAL_CLASS, Errors.NON_FINAL_MEMBER_IN_OBJECT
|
||||
),
|
||||
diagnosticBasedProcessing(
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.lexer.KtTokens
|
||||
class ParcelableQuickFixContributor : QuickFixContributor {
|
||||
override fun registerQuickFixes(quickFixes: QuickFixes) {
|
||||
quickFixes.register(ErrorsAndroid.PARCELABLE_CANT_BE_INNER_CLASS,
|
||||
RemoveModifierFix.createRemoveModifierFromListOwnerFactory(KtTokens.INNER_KEYWORD, false))
|
||||
RemoveModifierFix.createRemoveModifierFromListOwnerPsiBasedFactory(KtTokens.INNER_KEYWORD, false))
|
||||
|
||||
quickFixes.register(ErrorsAndroid.NO_PARCELABLE_SUPERTYPE, ParcelableAddSupertypeQuickfix.Factory)
|
||||
quickFixes.register(ErrorsAndroid.PARCELABLE_SHOULD_HAVE_PRIMARY_CONSTRUCTOR, ParcelableAddPrimaryConstructorQuickfix.Factory)
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@ class ParcelizeQuickFixContributor : QuickFixContributor {
|
||||
override fun registerQuickFixes(quickFixes: QuickFixes) {
|
||||
quickFixes.register(
|
||||
ErrorsParcelize.PARCELABLE_CANT_BE_INNER_CLASS,
|
||||
RemoveModifierFix.createRemoveModifierFromListOwnerFactory(KtTokens.INNER_KEYWORD, false)
|
||||
RemoveModifierFix.createRemoveModifierFromListOwnerPsiBasedFactory(KtTokens.INNER_KEYWORD, false)
|
||||
)
|
||||
|
||||
quickFixes.register(ErrorsParcelize.NO_PARCELABLE_SUPERTYPE, ParcelizeAddSupertypeQuickFix.Factory)
|
||||
|
||||
Reference in New Issue
Block a user