diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractFunction/ExtractKotlinFunctionHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractFunction/ExtractKotlinFunctionHandler.kt index c89917a9a9f..9593834d373 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractFunction/ExtractKotlinFunctionHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractFunction/ExtractKotlinFunctionHandler.kt @@ -56,16 +56,8 @@ public class ExtractKotlinFunctionHandler( elements: List, targetSibling: PsiElement ) { - fun adjustElements(elements: List): List { - if (elements.size() != 1) return elements - - val e = elements.first() - if (e is JetBlockExpression && e.getParent() is JetFunctionLiteral) return e.getStatements() - - return elements - } - - val extractionData = ExtractionData(file, adjustElements(elements).toRange(false), targetSibling) + val adjustedElements = (elements.singleOrNull() as? JetBlockExpression)?.getStatements() ?: elements + val extractionData = ExtractionData(file, adjustedElements.toRange(false), targetSibling) ExtractionEngine(helper).run(editor, extractionData) { processDuplicates(it.duplicateReplacers, file.getProject(), editor) } diff --git a/idea/testData/refactoring/extractFunction/basic/extractBlockContent.kt b/idea/testData/refactoring/extractFunction/basic/extractBlockContent.kt new file mode 100644 index 00000000000..f0bf2a12c83 --- /dev/null +++ b/idea/testData/refactoring/extractFunction/basic/extractBlockContent.kt @@ -0,0 +1,5 @@ +fun test() { + if (true) { + println("Hello world!") + } +} \ No newline at end of file diff --git a/idea/testData/refactoring/extractFunction/basic/extractBlockContent.kt.after b/idea/testData/refactoring/extractFunction/basic/extractBlockContent.kt.after new file mode 100644 index 00000000000..74f17546abf --- /dev/null +++ b/idea/testData/refactoring/extractFunction/basic/extractBlockContent.kt.after @@ -0,0 +1,9 @@ +fun test() { + if (true) { + __dummyTestFun__() + } +} + +private fun __dummyTestFun__() { + println("Hello world!") +} \ 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 3d9d93a3d07..eee163ac1f9 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/JetExtractionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/JetExtractionTestGenerated.java @@ -366,6 +366,12 @@ public class JetExtractionTestGenerated extends AbstractJetExtractionTest { doExtractFunctionTest(fileName); } + @TestMetadata("extractBlockContent.kt") + public void testExtractBlockContent() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/extractFunction/basic/extractBlockContent.kt"); + doExtractFunctionTest(fileName); + } + @TestMetadata("fakeOverride.kt") public void testFakeOverride() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/extractFunction/basic/fakeOverride.kt");