diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertSecondaryConstructorToPrimaryIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertSecondaryConstructorToPrimaryIntention.kt index 51a3190aa21..4993a757813 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertSecondaryConstructorToPrimaryIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertSecondaryConstructorToPrimaryIntention.kt @@ -128,7 +128,9 @@ class ConvertSecondaryConstructorToPrimaryIntention : SelfTargetingRangeIntentio if (parameterDescriptor != null && propertyDescriptor != null) { val property = DescriptorToSourceUtils.descriptorToDeclaration(propertyDescriptor) as? KtProperty if (property != null) { - if (propertyDescriptor.name == parameterDescriptor.name && propertyDescriptor.type == parameterDescriptor.type) { + if (propertyDescriptor.name == parameterDescriptor.name && + propertyDescriptor.type == parameterDescriptor.type && + propertyDescriptor.accessors.all { it.isDefault }) { propertyCommentSaver = CommentSaver(property) val valOrVar = if (property.isVar) factory.createVarKeyword() else factory.createValKeyword() newParameter.addBefore(valOrVar, newParameter.nameIdentifier) diff --git a/idea/testData/intentions/convertSecondaryConstructorToPrimary/propertyWithGetter.kt b/idea/testData/intentions/convertSecondaryConstructorToPrimary/propertyWithGetter.kt new file mode 100644 index 00000000000..85ef93beeff --- /dev/null +++ b/idea/testData/intentions/convertSecondaryConstructorToPrimary/propertyWithGetter.kt @@ -0,0 +1,14 @@ +fun log(s: String) { +} + +class A { + var x: String + get() { + log(field) + return field + } + + constructor(x: String) { + this.x = x + } +} diff --git a/idea/testData/intentions/convertSecondaryConstructorToPrimary/propertyWithGetter.kt.after b/idea/testData/intentions/convertSecondaryConstructorToPrimary/propertyWithGetter.kt.after new file mode 100644 index 00000000000..508f46dfd51 --- /dev/null +++ b/idea/testData/intentions/convertSecondaryConstructorToPrimary/propertyWithGetter.kt.after @@ -0,0 +1,11 @@ +fun log(s: String) { +} + +class A(x: String) { + var x: String = x + get() { + log(field) + return field + } + +} diff --git a/idea/testData/intentions/convertSecondaryConstructorToPrimary/propertyWithSetter.kt b/idea/testData/intentions/convertSecondaryConstructorToPrimary/propertyWithSetter.kt new file mode 100644 index 00000000000..33970ef8ebc --- /dev/null +++ b/idea/testData/intentions/convertSecondaryConstructorToPrimary/propertyWithSetter.kt @@ -0,0 +1,14 @@ +fun log(s: String) { +} + +class A { + var x: String + set(value) { + log(value) + field = value + } + + constructor(x: String) { + this.x = x + } +} \ No newline at end of file diff --git a/idea/testData/intentions/convertSecondaryConstructorToPrimary/propertyWithSetter.kt.after b/idea/testData/intentions/convertSecondaryConstructorToPrimary/propertyWithSetter.kt.after new file mode 100644 index 00000000000..e3bfb39729a --- /dev/null +++ b/idea/testData/intentions/convertSecondaryConstructorToPrimary/propertyWithSetter.kt.after @@ -0,0 +1,11 @@ +fun log(s: String) { +} + +class A(x: String) { + var x: String = x + set(value) { + log(value) + field = value + } + +} \ 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 9da5982b3c3..9c79180e0de 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -5867,6 +5867,18 @@ public class IntentionTestGenerated extends AbstractIntentionTest { doTest(fileName); } + @TestMetadata("propertyWithGetter.kt") + public void testPropertyWithGetter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertSecondaryConstructorToPrimary/propertyWithGetter.kt"); + doTest(fileName); + } + + @TestMetadata("propertyWithSetter.kt") + public void testPropertyWithSetter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertSecondaryConstructorToPrimary/propertyWithSetter.kt"); + doTest(fileName); + } + @TestMetadata("protectedConstructor.kt") public void testProtectedConstructor() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertSecondaryConstructorToPrimary/protectedConstructor.kt");