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");