From 02006126f5955bf33d290831724e643c8808c694 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Tue, 12 May 2015 13:21:15 +0300 Subject: [PATCH] Introduce Property: Forbid extension properties with initializers and lazy ones --- .../extractionEngine/ExtractableCodeDescriptor.kt | 2 ++ .../extractExtensionWithInitializer.kt | 5 +++++ .../extractExtensionWithInitializer.kt.conflicts | 1 + .../introduceProperty/extractLazyExtension.kt | 5 +++++ .../extractLazyExtension.kt.conflicts | 1 + .../introduce/JetExtractionTestGenerated.java | 12 ++++++++++++ 6 files changed, 26 insertions(+) create mode 100644 idea/testData/refactoring/introduceProperty/extractExtensionWithInitializer.kt create mode 100644 idea/testData/refactoring/introduceProperty/extractExtensionWithInitializer.kt.conflicts create mode 100644 idea/testData/refactoring/introduceProperty/extractLazyExtension.kt create mode 100644 idea/testData/refactoring/introduceProperty/extractLazyExtension.kt.conflicts diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/ExtractableCodeDescriptor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/ExtractableCodeDescriptor.kt index 37461b9e2a0..32d51d57d0d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/ExtractableCodeDescriptor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/ExtractableCodeDescriptor.kt @@ -326,6 +326,7 @@ enum class ExtractionTarget(val name: String) { && checkSimpleControlFlow(descriptor) && checkSimpleBody(descriptor) && checkNotTrait(descriptor) + && descriptor.receiverParameter == null } } @@ -340,6 +341,7 @@ enum class ExtractionTarget(val name: String) { return checkSignatureAndParent(descriptor) && checkSimpleControlFlow(descriptor) && checkNotTrait(descriptor) + && descriptor.receiverParameter == null } } diff --git a/idea/testData/refactoring/introduceProperty/extractExtensionWithInitializer.kt b/idea/testData/refactoring/introduceProperty/extractExtensionWithInitializer.kt new file mode 100644 index 00000000000..d2ef386b594 --- /dev/null +++ b/idea/testData/refactoring/introduceProperty/extractExtensionWithInitializer.kt @@ -0,0 +1,5 @@ +// EXTRACTION_TARGET: property with initializer +// SIBLING: +class A(val a: Int){ + fun foo() = a + 1 +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceProperty/extractExtensionWithInitializer.kt.conflicts b/idea/testData/refactoring/introduceProperty/extractExtensionWithInitializer.kt.conflicts new file mode 100644 index 00000000000..f9103f3f9ef --- /dev/null +++ b/idea/testData/refactoring/introduceProperty/extractExtensionWithInitializer.kt.conflicts @@ -0,0 +1 @@ +Can't generate property with initializer: a + 1 \ No newline at end of file diff --git a/idea/testData/refactoring/introduceProperty/extractLazyExtension.kt b/idea/testData/refactoring/introduceProperty/extractLazyExtension.kt new file mode 100644 index 00000000000..de16f78b636 --- /dev/null +++ b/idea/testData/refactoring/introduceProperty/extractLazyExtension.kt @@ -0,0 +1,5 @@ +// EXTRACTION_TARGET: lazy property +// SIBLING: +class A(val a: Int){ + fun foo() = a + 1 +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceProperty/extractLazyExtension.kt.conflicts b/idea/testData/refactoring/introduceProperty/extractLazyExtension.kt.conflicts new file mode 100644 index 00000000000..074e1ea24ff --- /dev/null +++ b/idea/testData/refactoring/introduceProperty/extractLazyExtension.kt.conflicts @@ -0,0 +1 @@ +Can't generate lazy property: a + 1 \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/JetExtractionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/JetExtractionTestGenerated.java index d34ab8f475a..cb9b51f8360 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/JetExtractionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/JetExtractionTestGenerated.java @@ -2053,6 +2053,12 @@ public class JetExtractionTestGenerated extends AbstractJetExtractionTest { JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/refactoring/introduceProperty"), Pattern.compile("^(.+)\\.kt$"), true); } + @TestMetadata("extractExtensionWithInitializer.kt") + public void testExtractExtensionWithInitializer() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/introduceProperty/extractExtensionWithInitializer.kt"); + doIntroducePropertyTest(fileName); + } + @TestMetadata("extractFromDefaultValueInConstructor.kt") public void testExtractFromDefaultValueInConstructor() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/introduceProperty/extractFromDefaultValueInConstructor.kt"); @@ -2065,6 +2071,12 @@ public class JetExtractionTestGenerated extends AbstractJetExtractionTest { doIntroducePropertyTest(fileName); } + @TestMetadata("extractLazyExtension.kt") + public void testExtractLazyExtension() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/introduceProperty/extractLazyExtension.kt"); + doIntroducePropertyTest(fileName); + } + @TestMetadata("extractLazyMultipleExpressions.kt") public void testExtractLazyMultipleExpressions() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/introduceProperty/extractLazyMultipleExpressions.kt");