From 95b77f638607983c4078465bb9a8b3d713061e8d Mon Sep 17 00:00:00 2001 From: Dmitry Gridin Date: Wed, 18 Mar 2020 17:23:46 +0700 Subject: [PATCH] AddJvmOverloadsIntention: disable for annotation classes #KT-36482 Fixed --- .../kotlin/idea/intentions/AddJvmOverloadsIntention.kt | 2 ++ .../addJvmOverloads/primaryConstructorOnAnnotationClass.kt | 3 +++ .../kotlin/idea/intentions/IntentionTestGenerated.java | 5 +++++ 3 files changed, 10 insertions(+) create mode 100644 idea/testData/intentions/addJvmOverloads/primaryConstructorOnAnnotationClass.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/AddJvmOverloadsIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/AddJvmOverloadsIntention.kt index 0c114da9f55..80bb8a4ccda 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/AddJvmOverloadsIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/AddJvmOverloadsIntention.kt @@ -16,6 +16,7 @@ import org.jetbrains.kotlin.platform.jvm.isJvm import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.endOffset import org.jetbrains.kotlin.psi.psiUtil.startOffset +import org.jetbrains.kotlin.utils.addToStdlib.safeAs private val annotationFqName = FqName("kotlin.jvm.JvmOverloads") @@ -44,6 +45,7 @@ class AddJvmOverloadsIntention : SelfTargetingIntention( KotlinBundle.message("text.secondary.constructor") to valueParameterList.parameters } is KtPrimaryConstructor -> { + if (element.parent.safeAs()?.isAnnotation() == true) return false val parameters = (element.valueParameterList ?: return false).parameters // For primary constructors with all default values, a zero-arg constructor is generated anyway. If there's only one diff --git a/idea/testData/intentions/addJvmOverloads/primaryConstructorOnAnnotationClass.kt b/idea/testData/intentions/addJvmOverloads/primaryConstructorOnAnnotationClass.kt new file mode 100644 index 00000000000..aa152c568b5 --- /dev/null +++ b/idea/testData/intentions/addJvmOverloads/primaryConstructorOnAnnotationClass.kt @@ -0,0 +1,3 @@ +// IS_APPLICABLE: false + +annotation class OverloadedAnn(val s1: String = "abc", val s2: String = "abc") \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java index cdfda043ad3..5bc335ec851 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -953,6 +953,11 @@ public class IntentionTestGenerated extends AbstractIntentionTest { runTest("idea/testData/intentions/addJvmOverloads/primaryConstructor.kt"); } + @TestMetadata("primaryConstructorOnAnnotationClass.kt") + public void testPrimaryConstructorOnAnnotationClass() throws Exception { + runTest("idea/testData/intentions/addJvmOverloads/primaryConstructorOnAnnotationClass.kt"); + } + @TestMetadata("primaryConstructorOneWithDefault.kt") public void testPrimaryConstructorOneWithDefault() throws Exception { runTest("idea/testData/intentions/addJvmOverloads/primaryConstructorOneWithDefault.kt");