From b67e9cdd2dbb2bea7ebd6e588cfb3c13bdf24b2b 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 GitOrigin-RevId: 75d88fb2229d051f996ab6f1a334e5874945f716 --- .../extractionEngine/ExtractableCodeDescriptor.kt | 2 ++ .../introduce/JetExtractionTestGenerated.java | 12 ++++++++++++ .../extractExtensionWithInitializer.kt | 5 +++++ .../extractExtensionWithInitializer.kt.conflicts | 1 + .../introduceProperty/extractLazyExtension.kt | 5 +++++ .../extractLazyExtension.kt.conflicts | 1 + 6 files changed, 26 insertions(+) create mode 100644 plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/extractExtensionWithInitializer.kt create mode 100644 plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/extractExtensionWithInitializer.kt.conflicts create mode 100644 plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/extractLazyExtension.kt create mode 100644 plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/extractLazyExtension.kt.conflicts diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/ExtractableCodeDescriptor.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/ExtractableCodeDescriptor.kt index 37461b9e2a02..32d51d57d0dc 100644 --- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/ExtractableCodeDescriptor.kt +++ b/plugins/kotlin/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/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/refactoring/introduce/JetExtractionTestGenerated.java b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/refactoring/introduce/JetExtractionTestGenerated.java index d34ab8f475a6..cb9b51f83604 100644 --- a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/refactoring/introduce/JetExtractionTestGenerated.java +++ b/plugins/kotlin/idea/tests/test/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"); diff --git a/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/extractExtensionWithInitializer.kt b/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/extractExtensionWithInitializer.kt new file mode 100644 index 000000000000..d2ef386b5945 --- /dev/null +++ b/plugins/kotlin/idea/tests/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/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/extractExtensionWithInitializer.kt.conflicts b/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/extractExtensionWithInitializer.kt.conflicts new file mode 100644 index 000000000000..f9103f3f9ef4 --- /dev/null +++ b/plugins/kotlin/idea/tests/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/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/extractLazyExtension.kt b/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/extractLazyExtension.kt new file mode 100644 index 000000000000..de16f78b6363 --- /dev/null +++ b/plugins/kotlin/idea/tests/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/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/extractLazyExtension.kt.conflicts b/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/extractLazyExtension.kt.conflicts new file mode 100644 index 000000000000..074e1ea24ff6 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/refactoring/introduceProperty/extractLazyExtension.kt.conflicts @@ -0,0 +1 @@ +Can't generate lazy property: a + 1 \ No newline at end of file