From e417a852765a5470a471fe77d0690f412e2724a1 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 30 Sep 2016 16:08:43 +0300 Subject: [PATCH] Minor: secondary constructor to primary is suggested only on keyword and value parameter list (cherry picked from commit 9a3e6d3) --- .../ConvertSecondaryConstructorToPrimaryIntention.kt | 4 +++- .../createSecondaryConstructor/superCallNoClass.kt | 1 - 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertSecondaryConstructorToPrimaryIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertSecondaryConstructorToPrimaryIntention.kt index 432ad921d47..b8b827e1921 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertSecondaryConstructorToPrimaryIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertSecondaryConstructorToPrimaryIntention.kt @@ -26,6 +26,8 @@ import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.containingClass import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject +import org.jetbrains.kotlin.psi.psiUtil.endOffset +import org.jetbrains.kotlin.psi.psiUtil.startOffset import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils @@ -65,7 +67,7 @@ class ConvertSecondaryConstructorToPrimaryIntention : SelfTargetingRangeIntentio if (!elementDescriptor.isReachableByDelegationFrom(constructorDescriptor, context)) return null } - return element.textRange + return TextRange(element.startOffset, element.valueParameterList?.endOffset ?: element.getConstructorKeyword().endOffset) } private fun KtExpression.tryConvertToPropertyByParameterInitialization( diff --git a/idea/testData/quickfix/createFromUsage/createSecondaryConstructor/superCallNoClass.kt b/idea/testData/quickfix/createFromUsage/createSecondaryConstructor/superCallNoClass.kt index 658bd7d912f..e82afcef257 100644 --- a/idea/testData/quickfix/createFromUsage/createSecondaryConstructor/superCallNoClass.kt +++ b/idea/testData/quickfix/createFromUsage/createSecondaryConstructor/superCallNoClass.kt @@ -1,6 +1,5 @@ // "Create secondary constructor" "false" // ERROR: Too many arguments for public constructor Any() defined in kotlin.Any -// ACTION: Convert to primary constructor // WITH_RUNTIME interface T {