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