[kotlin] Port RemoveModifierFixBase to K2

^KTIJ-30589

GitOrigin-RevId: bdda9f47d4755d5cbba9cc9f0b0c82c67372d1dc
This commit is contained in:
Andrey Cherkasov
2024-09-07 23:54:36 +00:00
committed by intellij-monorepo-bot
parent a2d32ec64e
commit 5188b1b761
59 changed files with 326 additions and 103 deletions
@@ -0,0 +1,42 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.kotlin.idea.k2.codeinsight.fixes
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.analysis.api.fir.diagnostics.KaFirDiagnostic
import org.jetbrains.kotlin.idea.codeinsight.api.applicators.fixes.KotlinQuickFixFactory
import org.jetbrains.kotlin.idea.k2.codeinsight.fixes.ChangeVisibilityFixFactories.containingDeclaration
import org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.KtCallableDeclaration
import org.jetbrains.kotlin.psi.KtExpression
internal object CallFromPublicInlineFixFactories {
val nonPublicCallFromPublicInlineFixFactory = KotlinQuickFixFactory.IntentionBased { diagnostic: KaFirDiagnostic.NonPublicCallFromPublicInline ->
listOfNotNull(
createFixIfAvailable(diagnostic.psi)
)
}
val protectedCallFromPublicInlineErrorFixFactory = KotlinQuickFixFactory.IntentionBased { diagnostic: KaFirDiagnostic.ProtectedCallFromPublicInlineError ->
listOfNotNull(
createFixIfAvailable(diagnostic.psi)
)
}
val superCallFromPublicInlineFixFactory = KotlinQuickFixFactory.IntentionBased { diagnostic: KaFirDiagnostic.SuperCallFromPublicInline ->
listOfNotNull(
createFixIfAvailable(diagnostic.psi)
)
}
private fun createFixIfAvailable(element: PsiElement?): RemoveModifierFixBase? {
val expression = element as? KtExpression ?: return null
val containingDeclaration = expression.containingDeclaration() ?: return null
if (containingDeclaration.hasReifiedTypeParameter()) return null
return RemoveModifierFixBase(containingDeclaration, KtTokens.INLINE_KEYWORD, isRedundant = false)
}
private fun KtCallableDeclaration.hasReifiedTypeParameter() = typeParameters.any { it.hasModifier(KtTokens.REIFIED_KEYWORD) }
}
@@ -12,12 +12,8 @@ import com.intellij.util.containers.addIfNotNull
import org.jetbrains.kotlin.analysis.api.KaSession
import org.jetbrains.kotlin.analysis.api.analyze
import org.jetbrains.kotlin.analysis.api.fir.diagnostics.KaFirDiagnostic
import org.jetbrains.kotlin.analysis.api.symbols.KaClassSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KaDeclarationSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KaNamedClassSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol
import org.jetbrains.kotlin.analysis.api.symbols.*
import org.jetbrains.kotlin.analysis.api.symbols.markers.KaNamedSymbol
import org.jetbrains.kotlin.analysis.api.symbols.name
import org.jetbrains.kotlin.analysis.api.types.symbol
import org.jetbrains.kotlin.descriptors.EffectiveVisibility
import org.jetbrains.kotlin.descriptors.Visibilities
@@ -26,29 +22,12 @@ import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
import org.jetbrains.kotlin.idea.base.util.module
import org.jetbrains.kotlin.idea.codeinsight.api.applicable.intentions.KotlinPsiUpdateModCommandAction
import org.jetbrains.kotlin.idea.codeinsight.api.applicators.fixes.KotlinQuickFixFactory
import org.jetbrains.kotlin.idea.codeinsight.utils.canBeInternal
import org.jetbrains.kotlin.idea.codeinsight.utils.canBePrivate
import org.jetbrains.kotlin.idea.codeinsight.utils.canBeProtected
import org.jetbrains.kotlin.idea.codeinsight.utils.canBePublic
import org.jetbrains.kotlin.idea.codeinsight.utils.isRedundantSetter
import org.jetbrains.kotlin.idea.codeinsight.utils.removeRedundantSetter
import org.jetbrains.kotlin.idea.codeinsight.utils.toVisibility
import org.jetbrains.kotlin.idea.codeinsight.utils.*
import org.jetbrains.kotlin.lexer.KtModifierKeywordToken
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.name.SpecialNames
import org.jetbrains.kotlin.name.StandardClassIds
import org.jetbrains.kotlin.psi.KtCallableDeclaration
import org.jetbrains.kotlin.psi.KtConstructor
import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtExpression
import org.jetbrains.kotlin.psi.KtNamedDeclaration
import org.jetbrains.kotlin.psi.KtNamedFunction
import org.jetbrains.kotlin.psi.KtParameter
import org.jetbrains.kotlin.psi.KtPrimaryConstructor
import org.jetbrains.kotlin.psi.KtProperty
import org.jetbrains.kotlin.psi.KtPropertyAccessor
import org.jetbrains.kotlin.psi.KtTypeParameter
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.containingClass
import org.jetbrains.kotlin.psi.psiUtil.isPrivate
import org.jetbrains.kotlin.psi.psiUtil.visibilityModifierType
@@ -260,7 +239,7 @@ object ChangeVisibilityFixFactories {
}
}
private fun KtExpression.containingDeclaration(): KtCallableDeclaration? {
internal fun KtExpression.containingDeclaration(): KtCallableDeclaration? {
val declaration = parentOfTypes(KtNamedFunction::class, KtProperty::class)
?.safeAs<KtCallableDeclaration>()
?.takeIf { it.hasModifier(KtTokens.INLINE_KEYWORD) }
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.idea.k2.codeinsight.fixes.imprt.ImportQuickFixFactor
import org.jetbrains.kotlin.idea.k2.codeinsight.fixes.replaceWith.DeprecationFixFactory
import org.jetbrains.kotlin.idea.k2.codeinsight.fixes.replaceWith.ReplaceProtectedToPublishedApiCallFixFactory
import org.jetbrains.kotlin.idea.quickfix.*
import org.jetbrains.kotlin.lexer.KtTokens.*
class KotlinK2QuickFixRegistrar : KotlinQuickFixRegistrar() {
private val keywords = KtQuickFixesListBuilder.registerPsiQuickFix {
@@ -22,6 +23,21 @@ class KotlinK2QuickFixRegistrar : KotlinQuickFixRegistrar() {
registerPsiQuickFixes(KaFirDiagnostic.DeprecatedModifierPair::class, RemoveModifierFixBase.removeRedundantModifier)
registerPsiQuickFixes(KaFirDiagnostic.TypeParametersInEnum::class, RemoveModifierFixBase.removeRedundantModifier)
registerPsiQuickFixes(KaFirDiagnostic.NonAbstractFunctionWithNoBody::class, AddFunctionBodyFix, AddModifierFix.addAbstractModifier)
registerPsiQuickFixes(KaFirDiagnostic.ConflictingProjection::class, RemoveModifierFixBase.createRemoveProjectionFactory(false))
registerPsiQuickFixes(KaFirDiagnostic.ProjectionInImmediateArgumentToSupertype::class, RemoveModifierFixBase.createRemoveProjectionFactory(false))
registerPsiQuickFixes(KaFirDiagnostic.ProjectionOnNonClassTypeArgument::class, RemoveModifierFixBase.createRemoveModifierFromListOwnerPsiBasedFactory(IN_KEYWORD))
registerPsiQuickFixes(KaFirDiagnostic.ProjectionOnNonClassTypeArgument::class, RemoveModifierFixBase.createRemoveModifierFromListOwnerPsiBasedFactory(OUT_KEYWORD))
registerPsiQuickFixes(KaFirDiagnostic.RedundantProjection::class, RemoveModifierFixBase.createRemoveProjectionFactory(true))
registerPsiQuickFixes(KaFirDiagnostic.VarianceOnTypeParameterNotAllowed::class, RemoveModifierFixBase.createRemoveVarianceFactory())
registerPsiQuickFixes(KaFirDiagnostic.UnnecessaryLateinit::class, RemoveModifierFixBase.createRemoveModifierFromListOwnerPsiBasedFactory(LATEINIT_KEYWORD))
registerPsiQuickFixes(KaFirDiagnostic.WrongModifierContainingDeclaration::class, RemoveModifierFixBase.removeNonRedundantModifier)
registerPsiQuickFixes(KaFirDiagnostic.NothingToOverride::class, RemoveModifierFixBase.createRemoveModifierFromListOwnerPsiBasedFactory(OVERRIDE_KEYWORD))
registerPsiQuickFixes(KaFirDiagnostic.ForbiddenBinaryMod::class, RemoveModifierFixBase.createRemoveModifierFromListOwnerPsiBasedFactory(OPERATOR_KEYWORD))
registerPsiQuickFixes(KaFirDiagnostic.NothingToInline::class, RemoveModifierFixBase.createRemoveModifierFromListOwnerPsiBasedFactory(INLINE_KEYWORD))
registerPsiQuickFixes(KaFirDiagnostic.ConstValNotTopLevelOrObject::class, RemoveModifierFixBase.createRemoveModifierFromListOwnerPsiBasedFactory(CONST_KEYWORD))
registerPsiQuickFixes(KaFirDiagnostic.FunInterfaceWrongCountOfAbstractMembers::class, RemoveModifierFixBase.createRemoveModifierFromListOwnerPsiBasedFactory(FUN_KEYWORD))
registerPsiQuickFixes(KaFirDiagnostic.TypeCantBeUsedForConstVal::class, RemoveModifierFixBase.createRemoveModifierFromListOwnerPsiBasedFactory(CONST_KEYWORD))
registerPsiQuickFixes(KaFirDiagnostic.InapplicableLateinitModifier::class, RemoveModifierFixBase.createRemoveModifierFromListOwnerPsiBasedFactory(LATEINIT_KEYWORD))
registerPsiQuickFixes(
KaFirDiagnostic.AbstractPropertyInNonAbstractClass::class,
@@ -150,6 +166,9 @@ class KotlinK2QuickFixRegistrar : KotlinQuickFixRegistrar() {
registerFactory(ConvertClassToKClassFixFactories.InitializerTypeMismatchFixFactory)
registerFactory(ConvertClassToKClassFixFactories.AssignmentTypeMismatchFixFactory)
registerFactory(ValReassignmentFixFactories.assignToPropertyFixFactory)
registerFactory(CallFromPublicInlineFixFactories.nonPublicCallFromPublicInlineFixFactory)
registerFactory(CallFromPublicInlineFixFactories.protectedCallFromPublicInlineErrorFixFactory)
registerFactory(CallFromPublicInlineFixFactories.superCallFromPublicInlineFixFactory)
}
private val addAbstract = KtQuickFixesListBuilder.registerPsiQuickFix {
@@ -10000,13 +10000,81 @@ public abstract class HighLevelQuickFixTestGenerated extends AbstractHighLevelQu
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("../../../idea/tests/testData/quickfix/redundantConst")
public static class RedundantConst extends AbstractHighLevelQuickFixTest {
@java.lang.Override
@org.jetbrains.annotations.NotNull
public final KotlinPluginMode getPluginMode() {
return KotlinPluginMode.K2;
}
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, this, testDataFilePath);
}
@TestMetadata("simple.kt")
public void testSimple() throws Exception {
runTest("../../../idea/tests/testData/quickfix/redundantConst/simple.kt");
}
}
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("../../../idea/tests/testData/quickfix/redundantFun")
public static class RedundantFun extends AbstractHighLevelQuickFixTest {
@java.lang.Override
@org.jetbrains.annotations.NotNull
public final KotlinPluginMode getPluginMode() {
return KotlinPluginMode.K2;
}
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, this, testDataFilePath);
}
@TestMetadata("simple.kt")
public void testSimple() throws Exception {
runTest("../../../idea/tests/testData/quickfix/redundantFun/simple.kt");
}
}
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("../../../idea/tests/testData/quickfix/redundantInline")
public static class RedundantInline extends AbstractHighLevelQuickFixTest {
@java.lang.Override
@org.jetbrains.annotations.NotNull
public final KotlinPluginMode getPluginMode() {
return KotlinPluginMode.K2;
}
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, this, testDataFilePath);
}
@TestMetadata("function.kt")
public void testFunction() throws Exception {
runTest("../../../idea/tests/testData/quickfix/redundantInline/function.kt");
}
}
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("../../../idea/tests/testData/quickfix/redundantLateinit")
public static class RedundantLateinit extends AbstractHighLevelQuickFixTest {
@java.lang.Override
@org.jetbrains.annotations.NotNull
public final KotlinPluginMode getPluginMode() {
return KotlinPluginMode.K2;
}
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, this, testDataFilePath);
}
@TestMetadata("simple.kt")
public void testSimple() throws Exception {
runTest("../../../idea/tests/testData/quickfix/redundantLateinit/simple.kt");
}
}
@@ -11007,9 +11075,98 @@ public abstract class HighLevelQuickFixTestGenerated extends AbstractHighLevelQu
}
}
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("../../../idea/tests/testData/quickfix/typeProjection")
public static class TypeProjection extends AbstractHighLevelQuickFixTest {
@java.lang.Override
@org.jetbrains.annotations.NotNull
public final KotlinPluginMode getPluginMode() {
return KotlinPluginMode.K2;
}
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, this, testDataFilePath);
}
@TestMetadata("conflictingProjection.kt")
public void testConflictingProjection() throws Exception {
runTest("../../../idea/tests/testData/quickfix/typeProjection/conflictingProjection.kt");
}
@TestMetadata("projectionInImmediateArgumentToSupertype.kt")
public void testProjectionInImmediateArgumentToSupertype() throws Exception {
runTest("../../../idea/tests/testData/quickfix/typeProjection/projectionInImmediateArgumentToSupertype.kt");
}
@TestMetadata("projectionOnNonClassTypeArgument1.kt")
public void testProjectionOnNonClassTypeArgument1() throws Exception {
runTest("../../../idea/tests/testData/quickfix/typeProjection/projectionOnNonClassTypeArgument1.kt");
}
@TestMetadata("projectionOnNonClassTypeArgument2.kt")
public void testProjectionOnNonClassTypeArgument2() throws Exception {
runTest("../../../idea/tests/testData/quickfix/typeProjection/projectionOnNonClassTypeArgument2.kt");
}
@TestMetadata("removeRedundantProjection1.kt")
public void testRemoveRedundantProjection1() throws Exception {
runTest("../../../idea/tests/testData/quickfix/typeProjection/removeRedundantProjection1.kt");
}
@TestMetadata("removeRedundantProjection2.kt")
public void testRemoveRedundantProjection2() throws Exception {
runTest("../../../idea/tests/testData/quickfix/typeProjection/removeRedundantProjection2.kt");
}
@TestMetadata("removeVariance.kt")
public void testRemoveVariance() throws Exception {
runTest("../../../idea/tests/testData/quickfix/typeProjection/removeVariance.kt");
}
}
@RunWith(JUnit3RunnerWithInners.class)
@TestMetadata("../../../idea/tests/testData/quickfix/unnecessaryLateinit")
public static class UnnecessaryLateinit extends AbstractHighLevelQuickFixTest {
@java.lang.Override
@org.jetbrains.annotations.NotNull
public final KotlinPluginMode getPluginMode() {
return KotlinPluginMode.K2;
}
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, this, testDataFilePath);
}
@TestMetadata("lateinitWithConstructor.kt")
public void testLateinitWithConstructor() throws Exception {
runTest("../../../idea/tests/testData/quickfix/unnecessaryLateinit/lateinitWithConstructor.kt");
}
@TestMetadata("lateinitWithInit.kt")
public void testLateinitWithInit() throws Exception {
runTest("../../../idea/tests/testData/quickfix/unnecessaryLateinit/lateinitWithInit.kt");
}
@TestMetadata("lateinitWithMultipleConstructors.kt")
public void testLateinitWithMultipleConstructors() throws Exception {
runTest("../../../idea/tests/testData/quickfix/unnecessaryLateinit/lateinitWithMultipleConstructors.kt");
}
@TestMetadata("lateinitWithMultipleConstructorsAndDelegation.kt")
public void testLateinitWithMultipleConstructorsAndDelegation() throws Exception {
runTest("../../../idea/tests/testData/quickfix/unnecessaryLateinit/lateinitWithMultipleConstructorsAndDelegation.kt");
}
@TestMetadata("lateinitWithMultipleInit.kt")
public void testLateinitWithMultipleInit() throws Exception {
runTest("../../../idea/tests/testData/quickfix/unnecessaryLateinit/lateinitWithMultipleInit.kt");
}
@TestMetadata("secondaryConstructorDelegateItself.kt")
public void testSecondaryConstructorDelegateItself() throws Exception {
runTest("../../../idea/tests/testData/quickfix/unnecessaryLateinit/secondaryConstructorDelegateItself.kt");
}
}
@@ -9,5 +9,4 @@ class C {
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// TODO: KTIJ-30589
/* IGNORE_K2 */
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -9,5 +9,4 @@ class C {
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// TODO: KTIJ-30589
/* IGNORE_K2 */
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -9,5 +9,4 @@ class C {
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// TODO: KTIJ-30589
/* IGNORE_K2 */
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -9,5 +9,4 @@ class C {
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// TODO: KTIJ-30589
/* IGNORE_K2 */
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -10,5 +10,4 @@ open class Foo {
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// TODO: KTIJ-30589
/* IGNORE_K2 */
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -10,5 +10,4 @@ open class Foo {
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// TODO: KTIJ-30589
/* IGNORE_K2 */
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -10,5 +10,4 @@ open class Derived : Base() {
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// TODO: KTIJ-30589
/* IGNORE_K2 */
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -10,5 +10,4 @@ open class Derived : Base() {
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// TODO: KTIJ-30589
/* IGNORE_K2 */
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -5,5 +5,5 @@ class Foo
object Test {
<caret>const val c = Foo()
}
/* IGNORE_K2 */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -5,5 +5,5 @@ class Foo
object Test {
val c = Foo()
}
/* IGNORE_K2 */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -3,5 +3,5 @@ interface A {
inne<caret>r class B
}
/* IGNORE_K2 */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -3,5 +3,5 @@ interface A {
class B
}
/* IGNORE_K2 */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -4,5 +4,5 @@
object A {
operator<caret> fun mod(x: Int) {}
}
/* IGNORE_K2 */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -4,5 +4,5 @@
object A {
fun mod(x: Int) {}
}
/* IGNORE_K2 */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -3,5 +3,5 @@
object A {
operator<caret> fun mod(x: Int) {}
}
/* IGNORE_K2 */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -3,5 +3,5 @@
object A {
<caret>fun mod(x: Int) {}
}
/* IGNORE_K2 */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -3,5 +3,5 @@
object A {
operator<caret> fun modAssign(x: Int) {}
}
/* IGNORE_K2 */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -3,5 +3,5 @@
object A {
<caret>fun modAssign(x: Int) {}
}
/* IGNORE_K2 */
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -4,4 +4,4 @@ class A() {
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
/* IGNORE_K2 */
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -4,4 +4,4 @@ class A() {
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
/* IGNORE_K2 */
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -2,4 +2,5 @@
class Foo {
<caret>const val s = "s"
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -2,4 +2,5 @@
class Foo {
val s = "s"
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -1,3 +1,4 @@
// "Remove 'fun' modifier" "true"
<caret>fun interface WrongFunFace
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -1,3 +1,4 @@
// "Remove 'fun' modifier" "true"
interface WrongFunFace
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -1,3 +1,4 @@
// "Remove 'inline' modifier" "true"
<caret>inline fun test() {}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -1,3 +1,4 @@
// "Remove 'inline' modifier" "true"
fun test() {}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -3,4 +3,5 @@
class Test {
private <caret>lateinit var foo: String = ""
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -3,4 +3,5 @@
class Test {
private<caret> var foo: String = ""
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -3,4 +3,5 @@ class Foo<out T> {}
fun bar(x : Foo<<caret>in Any>) {}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -3,4 +3,5 @@ class Foo<out T> {}
fun bar(x : Foo<Any>) {}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -3,4 +3,5 @@ interface A<T> {}
class B : A<<caret>in Int> {}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -3,4 +3,5 @@ interface A<T> {}
class B : A<Int> {}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -5,4 +5,5 @@ fun bar() {
foo<<caret>out Int>(44)
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -5,4 +5,5 @@ fun bar() {
foo<Int>(44)
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -5,4 +5,5 @@ class B {
var foo = A<<caret>in Int>()
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -5,4 +5,5 @@ class B {
var foo = A<<caret>Int>()
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -7,4 +7,5 @@ fun bar(x : Foo<out<caret> Any>) {
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -7,4 +7,5 @@ fun bar(x : Foo<Any>) {
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -7,4 +7,5 @@ fun bar(x : Foo<in<caret> Any>) {
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -7,4 +7,5 @@ fun bar(x : Foo<Any>) {
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -1,3 +1,4 @@
// "Remove 'out' modifier" "true"
fun <out<caret> String> foo() { }
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -1,3 +1,4 @@
// "Remove 'out' modifier" "true"
fun <String> foo() { }
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -8,4 +8,5 @@ class Foo {
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -8,4 +8,5 @@ class Foo {
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -7,4 +7,5 @@ class Foo {
bar = ""
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -7,4 +7,5 @@ class Foo {
bar = ""
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -11,4 +11,5 @@ class Foo {
bar = ""
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -11,4 +11,5 @@ class Foo {
bar = ""
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -13,4 +13,5 @@ class Foo {
constructor(a: Int, b: Int) : this(a) {
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -13,4 +13,5 @@ class Foo {
constructor(a: Int, b: Int) : this(a) {
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -12,4 +12,5 @@ class Foo {
bar = ""
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -12,4 +12,5 @@ class Foo {
bar = ""
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -13,4 +13,5 @@ class Foo {
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -13,4 +13,5 @@ class Foo {
}
}
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveModifierFixBase
@@ -153,10 +153,10 @@ internal fun MutableTWorkspace.generateK2FixTests() {
model("$idea/quickfix/primitiveCastToConversion", pattern = pattern)
model("$idea/quickfix/properties", pattern = pattern)
model("$idea/quickfix/protectedInFinal", pattern = pattern, isIgnored = true)
model("$idea/quickfix/redundantConst", pattern = pattern, isIgnored = true)
model("$idea/quickfix/redundantFun", pattern = pattern, isIgnored = true)
model("$idea/quickfix/redundantInline", pattern = pattern, isIgnored = true)
model("$idea/quickfix/redundantLateinit", pattern = pattern, isIgnored = true)
model("$idea/quickfix/redundantConst", pattern = pattern)
model("$idea/quickfix/redundantFun", pattern = pattern)
model("$idea/quickfix/redundantInline", pattern = pattern)
model("$idea/quickfix/redundantLateinit", pattern = pattern)
model("$idea/quickfix/redundantModalityModifier", pattern = pattern, isIgnored = true)
model("$idea/quickfix/redundantSuspend", pattern = pattern, isIgnored = true)
model("$idea/quickfix/redundantVisibilityModifier", pattern = pattern, isIgnored = true)
@@ -196,8 +196,8 @@ internal fun MutableTWorkspace.generateK2FixTests() {
model("$idea/quickfix/typeInferenceExpectedTypeMismatch", pattern = pattern)
model("$idea/quickfix/typeOfAnnotationMember", pattern = pattern)
model("$idea/quickfix/typeParameters", pattern = pattern)
model("$idea/quickfix/typeProjection", pattern = pattern, isIgnored = true)
model("$idea/quickfix/unnecessaryLateinit", pattern = pattern, isIgnored = true)
model("$idea/quickfix/typeProjection", pattern = pattern)
model("$idea/quickfix/unnecessaryLateinit", pattern = pattern)
model("$idea/quickfix/unusedSuppressAnnotation", pattern = pattern, isIgnored = true)
model("$idea/quickfix/useFullyqualifiedCall", pattern = pattern, isIgnored = true)
model("$idea/quickfix/variables", pattern = pattern, isRecursive = false, isIgnored = true)