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