diff --git a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt index 2f93f03855c..efe60681233 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt +++ b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt @@ -1127,7 +1127,7 @@ fun main(args: Array) { model("quickfix/lateinit", pattern = pattern, filenameStartsLowerCase = true) model("quickfix/modifiers", pattern = pattern, filenameStartsLowerCase = true, recursive = false) model("quickfix/override/typeMismatchOnOverride", pattern = pattern, filenameStartsLowerCase = true, recursive = false) - model("quickfix/variables/changeMutability", pattern = pattern, filenameStartsLowerCase = true, recursive = false) + model("quickfix/variables/changeMutability", pattern = pattern, filenameStartsLowerCase = true) } testClass { diff --git a/idea/idea-fir/src/org/jetbrains/kotlin/idea/quickfix/MainKtQuickFixRegistrar.kt b/idea/idea-fir/src/org/jetbrains/kotlin/idea/quickfix/MainKtQuickFixRegistrar.kt index 667839546d5..c3c0d9c28d2 100644 --- a/idea/idea-fir/src/org/jetbrains/kotlin/idea/quickfix/MainKtQuickFixRegistrar.kt +++ b/idea/idea-fir/src/org/jetbrains/kotlin/idea/quickfix/MainKtQuickFixRegistrar.kt @@ -61,6 +61,7 @@ class MainKtQuickFixRegistrar : KtQuickFixRegistrar() { registerPsiQuickFixes(KtFirDiagnostic.VarAnnotationParameter::class, ChangeVariableMutabilityFix.VAR_ANNOTATION_PARAMETER_FACTORY) registerPsiQuickFixes(KtFirDiagnostic.InapplicableLateinitModifier::class, ChangeVariableMutabilityFix.LATEINIT_VAL_FACTORY) registerPsiQuickFixes(KtFirDiagnostic.ValWithSetter::class, ChangeVariableMutabilityFix.VAL_WITH_SETTER_FACTORY) + registerPsiQuickFixes(KtFirDiagnostic.MustBeInitialized::class, ChangeVariableMutabilityFix.MUST_BE_INITIALIZED_FACTORY) } override val list: KtQuickFixesList = KtQuickFixesList.createCombined( diff --git a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/quickfix/AbstractHighLevelQuickFixTest.kt b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/quickfix/AbstractHighLevelQuickFixTest.kt index 84cd922c20b..bc9feea4af5 100644 --- a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/quickfix/AbstractHighLevelQuickFixTest.kt +++ b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/quickfix/AbstractHighLevelQuickFixTest.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.idea.quickfix import com.intellij.codeInsight.intention.IntentionAction +import com.intellij.codeInspection.InspectionProfileEntry import org.jetbrains.kotlin.test.uitls.IgnoreTests import java.nio.file.Paths @@ -22,6 +23,10 @@ abstract class AbstractHighLevelQuickFixTest : AbstractQuickFixTest() { } } + // TODO: Enable these as more actions/inspections are enabled, and/or add more FIR-specific directives override fun checkForUnexpectedErrors() {} override fun checkAvailableActionsAreExpected(actions: List) {} + override fun parseInspectionsToEnable(beforeFileName: String, beforeFileText: String): List { + return emptyList() + } } \ No newline at end of file diff --git a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/quickfix/HighLevelQuickFixTestGenerated.java b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/quickfix/HighLevelQuickFixTestGenerated.java index 18068e4a7cf..65ec0ce6097 100644 --- a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/quickfix/HighLevelQuickFixTestGenerated.java +++ b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/quickfix/HighLevelQuickFixTestGenerated.java @@ -695,7 +695,7 @@ public class HighLevelQuickFixTestGenerated extends AbstractHighLevelQuickFixTes } public void testAllFilesPresentInChangeMutability() throws Exception { - KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("idea/testData/quickfix/variables/changeMutability"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), null, false); + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("idea/testData/quickfix/variables/changeMutability"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), null, true); } @TestMetadata("capturedMemberValInitialization.kt") @@ -762,5 +762,63 @@ public class HighLevelQuickFixTestGenerated extends AbstractHighLevelQuickFixTes public void testVarAnnotationParameter() throws Exception { runTest("idea/testData/quickfix/variables/changeMutability/varAnnotationParameter.kt"); } + + @TestMetadata("idea/testData/quickfix/variables/changeMutability/canBeVal") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class CanBeVal extends AbstractHighLevelQuickFixTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doTest, this, testDataFilePath); + } + + public void testAllFilesPresentInCanBeVal() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("idea/testData/quickfix/variables/changeMutability/canBeVal"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), null, true); + } + + @TestMetadata("const.kt") + public void testConst() throws Exception { + runTest("idea/testData/quickfix/variables/changeMutability/canBeVal/const.kt"); + } + + @TestMetadata("delegatedProperty.kt") + public void testDelegatedProperty() throws Exception { + runTest("idea/testData/quickfix/variables/changeMutability/canBeVal/delegatedProperty.kt"); + } + + @TestMetadata("delegatedProperty2.kt") + public void testDelegatedProperty2() throws Exception { + runTest("idea/testData/quickfix/variables/changeMutability/canBeVal/delegatedProperty2.kt"); + } + + @TestMetadata("delegatedProperty3.kt") + public void testDelegatedProperty3() throws Exception { + runTest("idea/testData/quickfix/variables/changeMutability/canBeVal/delegatedProperty3.kt"); + } + + @TestMetadata("multiVariable.kt") + public void testMultiVariable() throws Exception { + runTest("idea/testData/quickfix/variables/changeMutability/canBeVal/multiVariable.kt"); + } + + @TestMetadata("singleVariable.kt") + public void testSingleVariable() throws Exception { + runTest("idea/testData/quickfix/variables/changeMutability/canBeVal/singleVariable.kt"); + } + + @TestMetadata("uninitializedWithGetter.kt") + public void testUninitializedWithGetter() throws Exception { + runTest("idea/testData/quickfix/variables/changeMutability/canBeVal/uninitializedWithGetter.kt"); + } + + @TestMetadata("uninitializedWithGetter2.kt") + public void testUninitializedWithGetter2() throws Exception { + runTest("idea/testData/quickfix/variables/changeMutability/canBeVal/uninitializedWithGetter2.kt"); + } + + @TestMetadata("uninitializedWithGetter3.kt") + public void testUninitializedWithGetter3() throws Exception { + runTest("idea/testData/quickfix/variables/changeMutability/canBeVal/uninitializedWithGetter3.kt"); + } + } } } diff --git a/idea/testData/quickfix/variables/changeMutability/canBeVal/delegatedProperty2.kt b/idea/testData/quickfix/variables/changeMutability/canBeVal/delegatedProperty2.kt index 1e92ac942a1..c6ddffda71e 100644 --- a/idea/testData/quickfix/variables/changeMutability/canBeVal/delegatedProperty2.kt +++ b/idea/testData/quickfix/variables/changeMutability/canBeVal/delegatedProperty2.kt @@ -12,4 +12,5 @@ fun test() { class Delegate { operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) { } -} \ No newline at end of file +} +/* FIR_COMPARISON */ \ No newline at end of file diff --git a/idea/testData/quickfix/variables/changeMutability/canBeVal/delegatedProperty3.kt b/idea/testData/quickfix/variables/changeMutability/canBeVal/delegatedProperty3.kt index 124536d1350..a6bcd6463c5 100644 --- a/idea/testData/quickfix/variables/changeMutability/canBeVal/delegatedProperty3.kt +++ b/idea/testData/quickfix/variables/changeMutability/canBeVal/delegatedProperty3.kt @@ -10,4 +10,5 @@ fun test() { var foo: String by Delegate() } -class Delegate \ No newline at end of file +class Delegate +/* FIR_COMPARISON */ \ No newline at end of file diff --git a/idea/testData/quickfix/variables/changeMutability/canBeVal/uninitializedWithGetter.kt b/idea/testData/quickfix/variables/changeMutability/canBeVal/uninitializedWithGetter.kt index 426211802f1..f73c8ca0dc4 100644 --- a/idea/testData/quickfix/variables/changeMutability/canBeVal/uninitializedWithGetter.kt +++ b/idea/testData/quickfix/variables/changeMutability/canBeVal/uninitializedWithGetter.kt @@ -2,4 +2,5 @@ class Test { var foo get() = 1 -} \ No newline at end of file +} +/* FIR_COMPARISON */ \ No newline at end of file diff --git a/idea/testData/quickfix/variables/changeMutability/canBeVal/uninitializedWithGetter.kt.after b/idea/testData/quickfix/variables/changeMutability/canBeVal/uninitializedWithGetter.kt.after index 966528b0b06..3d50e991052 100644 --- a/idea/testData/quickfix/variables/changeMutability/canBeVal/uninitializedWithGetter.kt.after +++ b/idea/testData/quickfix/variables/changeMutability/canBeVal/uninitializedWithGetter.kt.after @@ -2,4 +2,5 @@ class Test { val foo get() = 1 -} \ No newline at end of file +} +/* FIR_COMPARISON */ \ No newline at end of file diff --git a/idea/testData/quickfix/variables/changeMutability/canBeVal/uninitializedWithGetter2.kt b/idea/testData/quickfix/variables/changeMutability/canBeVal/uninitializedWithGetter2.kt index d40cc9c975f..32becf0fb39 100644 --- a/idea/testData/quickfix/variables/changeMutability/canBeVal/uninitializedWithGetter2.kt +++ b/idea/testData/quickfix/variables/changeMutability/canBeVal/uninitializedWithGetter2.kt @@ -4,4 +4,5 @@ class Test { get() { return 1 } -} \ No newline at end of file +} +/* FIR_COMPARISON */ \ No newline at end of file diff --git a/idea/testData/quickfix/variables/changeMutability/canBeVal/uninitializedWithGetter2.kt.after b/idea/testData/quickfix/variables/changeMutability/canBeVal/uninitializedWithGetter2.kt.after index 8bf73a5e5bf..7c128835a47 100644 --- a/idea/testData/quickfix/variables/changeMutability/canBeVal/uninitializedWithGetter2.kt.after +++ b/idea/testData/quickfix/variables/changeMutability/canBeVal/uninitializedWithGetter2.kt.after @@ -4,4 +4,5 @@ class Test { get() { return 1 } -} \ No newline at end of file +} +/* FIR_COMPARISON */ \ No newline at end of file diff --git a/idea/testData/quickfix/variables/changeMutability/canBeVal/uninitializedWithGetter3.kt b/idea/testData/quickfix/variables/changeMutability/canBeVal/uninitializedWithGetter3.kt index 92ef7eefdbb..7592e7641b9 100644 --- a/idea/testData/quickfix/variables/changeMutability/canBeVal/uninitializedWithGetter3.kt +++ b/idea/testData/quickfix/variables/changeMutability/canBeVal/uninitializedWithGetter3.kt @@ -11,4 +11,5 @@ class Test { get() { return 1 } -} \ No newline at end of file +} +/* FIR_COMPARISON */ \ No newline at end of file