diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterHandler.kt index 5c5dbe81cdc..8ac6201f16d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceParameter/KotlinIntroduceParameterHandler.kt @@ -369,6 +369,13 @@ open class KotlinIntroduceParameterHandler( } if (file !is KtFile) return + + val elementAtCaret = file.findElementAt(editor.caretModel.offset) ?: return + if (elementAtCaret.getNonStrictParentOfType() != null) { + showErrorHint(project, editor, "Introduce Parameter is not available inside of annotation entries", INTRODUCE_PARAMETER) + return + } + selectNewParameterContext(editor, file) { elements, targetParent -> val expression = ((elements.singleOrNull() as? KtBlockExpression)?.statements ?: elements).singleOrNull() if (expression is KtExpression) { diff --git a/idea/testData/refactoring/introduceParameter/annotationArgument.kt b/idea/testData/refactoring/introduceParameter/annotationArgument.kt new file mode 100644 index 00000000000..beed564bf7b --- /dev/null +++ b/idea/testData/refactoring/introduceParameter/annotationArgument.kt @@ -0,0 +1,2 @@ +annotation class FromCollection1(val value: String) +@FromCollection1("a") class CollectionValueUserJ \ No newline at end of file diff --git a/idea/testData/refactoring/introduceParameter/annotationArgument.kt.conflicts b/idea/testData/refactoring/introduceParameter/annotationArgument.kt.conflicts new file mode 100644 index 00000000000..19d790c2fca --- /dev/null +++ b/idea/testData/refactoring/introduceParameter/annotationArgument.kt.conflicts @@ -0,0 +1 @@ +Introduce Parameter is not available inside of annotation entries diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java index 7619105a2a3..c66bb9c930f 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java @@ -3344,6 +3344,12 @@ public class ExtractionTestGenerated extends AbstractExtractionTest { KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/refactoring/introduceParameter"), Pattern.compile("^(.+)\\.(kt|kts)$"), TargetBackend.ANY, true); } + @TestMetadata("annotationArgument.kt") + public void testAnnotationArgument() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/introduceParameter/annotationArgument.kt"); + doIntroduceSimpleParameterTest(fileName); + } + @TestMetadata("assignment.kt") public void testAssignment() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/introduceParameter/assignment.kt");