diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVariableMutabilityFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVariableMutabilityFix.kt index d164dd7887a..bf9ca7a7fec 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVariableMutabilityFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVariableMutabilityFix.kt @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.diagnostics.Diagnostic import org.jetbrains.kotlin.diagnostics.Errors import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils class ChangeVariableMutabilityFix(element: KtNamedDeclaration, private val makeVar: Boolean) : KotlinQuickFixAction(element) { @@ -35,7 +36,9 @@ class ChangeVariableMutabilityFix(element: KtNamedDeclaration, private val makeV override fun isAvailable(project: Project, editor: Editor?, file: PsiFile): Boolean { return when (element) { is KtProperty -> element.isVar != makeVar - is KtParameter -> (element.valOrVarKeyword == KtTokens.VAR_KEYWORD) != makeVar + is KtParameter -> + element.getStrictParentOfType()?.valueParameterList == element.parent + && (element.valOrVarKeyword == KtTokens.VAR_KEYWORD) != makeVar else -> false } } diff --git a/idea/testData/quickfix/variables/changeMutability/funParameter.kt b/idea/testData/quickfix/variables/changeMutability/funParameter.kt new file mode 100644 index 00000000000..7424f192c32 --- /dev/null +++ b/idea/testData/quickfix/variables/changeMutability/funParameter.kt @@ -0,0 +1,5 @@ +// "Make variable mutable" "false" +// ERROR: Val cannot be reassigned +fun fun1(i: Int) { + i = 2 +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java index 93e73e77b80..3b44c9b91d9 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -7460,6 +7460,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/quickfix/variables/changeMutability"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), true); } + @TestMetadata("funParameter.kt") + public void testFunParameter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/variables/changeMutability/funParameter.kt"); + doTest(fileName); + } + @TestMetadata("localInGetter.kt") public void testLocalInGetter() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/variables/changeMutability/localInGetter.kt");