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