From 0a0043a851dd3edb30b521c06218dc86e38e8718 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Fri, 16 Mar 2018 17:11:00 +0300 Subject: [PATCH] Convert Function to Property: Forbid for properties with both initializer and getter #KT-23293 Fixed --- .../idea/intentions/ConvertPropertyToFunctionIntention.kt | 2 +- .../convertPropertyToFunction/initializerWithGetter.kt | 5 +++++ .../kotlin/idea/intentions/IntentionTestGenerated.java | 6 ++++++ 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 idea/testData/intentions/convertPropertyToFunction/initializerWithGetter.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertPropertyToFunctionIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertPropertyToFunctionIntention.kt index 725a03fde38..f4cef3242f0 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertPropertyToFunctionIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertPropertyToFunctionIntention.kt @@ -191,7 +191,7 @@ class ConvertPropertyToFunctionIntention : SelfTargetingIntention(Kt override fun isApplicableTo(element: KtProperty, caretOffset: Int): Boolean { val identifier = element.nameIdentifier ?: return false if (!identifier.textRange.containsOffset(caretOffset)) return false - return element.delegate == null && !element.isVar && !element.isLocal + return element.delegate == null && !element.isVar && !element.isLocal && (element.initializer == null || element.getter == null) } override fun applyTo(element: KtProperty, editor: Editor?) { diff --git a/idea/testData/intentions/convertPropertyToFunction/initializerWithGetter.kt b/idea/testData/intentions/convertPropertyToFunction/initializerWithGetter.kt new file mode 100644 index 00000000000..332413ff706 --- /dev/null +++ b/idea/testData/intentions/convertPropertyToFunction/initializerWithGetter.kt @@ -0,0 +1,5 @@ +// IS_APPLICABLE: false +val foo = 1 + get() { + return field + } \ 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 b02d4f77647..b4af64e0631 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -6147,6 +6147,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest { doTest(fileName); } + @TestMetadata("initializerWithGetter.kt") + public void testInitializerWithGetter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertPropertyToFunction/initializerWithGetter.kt"); + doTest(fileName); + } + @TestMetadata("javaUsageAsField.kt") public void testJavaUsageAsField() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/convertPropertyToFunction/javaUsageAsField.kt");