From 2104a0fa2b2225187942eafe040af2fe37a91e4f Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Fri, 16 Mar 2018 16:26:11 +0300 Subject: [PATCH] Extract Function: Drop extra space in modifier list #KT-23274 Fixed --- .../introduce/extractionEngine/extractorUtil.kt | 4 +++- .../extractFunction/basic/extractSuspend.kt | 9 +++++++++ .../extractFunction/basic/extractSuspend.kt.after | 11 +++++++++++ .../introduce/ExtractionTestGenerated.java | 6 ++++++ 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 idea/testData/refactoring/extractFunction/basic/extractSuspend.kt create mode 100644 idea/testData/refactoring/extractFunction/basic/extractSuspend.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractorUtil.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractorUtil.kt index e6292a8e95d..3c3fd88034b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractorUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractorUtil.kt @@ -65,7 +65,9 @@ private fun buildSignature(config: ExtractionGeneratorConfiguration, renderer: D else -> CallableBuilder.Target.READ_ONLY_PROPERTY } return CallableBuilder(builderTarget).apply { - val modifiers = listOf(config.descriptor.visibility) + config.descriptor.modifiers.map { it.value } + val visibility = config.descriptor.visibility + val extraModifiers = config.descriptor.modifiers.map { it.value } + val modifiers = if (visibility.isNotEmpty()) listOf(visibility) + extraModifiers else extraModifiers modifier(modifiers.joinToString(separator = " ")) typeParams( diff --git a/idea/testData/refactoring/extractFunction/basic/extractSuspend.kt b/idea/testData/refactoring/extractFunction/basic/extractSuspend.kt new file mode 100644 index 00000000000..9c15063ef50 --- /dev/null +++ b/idea/testData/refactoring/extractFunction/basic/extractSuspend.kt @@ -0,0 +1,9 @@ +// PARAM_DESCRIPTOR: public suspend inline fun ExtendMe.receive(): T defined in root package in file extractSuspend.kt +// PARAM_TYPES: ExtendMe +suspend inline fun ExtendMe.receive(): T = receive("") as T + +class ExtendMe { + suspend fun receive(s: String): Any { + return Any() + } +} \ No newline at end of file diff --git a/idea/testData/refactoring/extractFunction/basic/extractSuspend.kt.after b/idea/testData/refactoring/extractFunction/basic/extractSuspend.kt.after new file mode 100644 index 00000000000..5da1cfd527b --- /dev/null +++ b/idea/testData/refactoring/extractFunction/basic/extractSuspend.kt.after @@ -0,0 +1,11 @@ +// PARAM_DESCRIPTOR: public suspend inline fun ExtendMe.receive(): T defined in root package in file extractSuspend.kt +// PARAM_TYPES: ExtendMe +suspend inline fun ExtendMe.receive(): T = any() as T + +suspend fun ExtendMe.any() = receive("") + +class ExtendMe { + suspend fun receive(s: String): Any { + return Any() + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java index b58ab116785..16d7d95a4d8 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/ExtractionTestGenerated.java @@ -935,6 +935,12 @@ public class ExtractionTestGenerated extends AbstractExtractionTest { doExtractFunctionTest(fileName); } + @TestMetadata("extractSuspend.kt") + public void testExtractSuspend() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/extractFunction/basic/extractSuspend.kt"); + doExtractFunctionTest(fileName); + } + @TestMetadata("extractToEnumClassBody.kt") public void testExtractToEnumClassBody() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/extractFunction/basic/extractToEnumClassBody.kt");