diff --git a/idea/src/org/jetbrains/jet/plugin/refactoring/extractFunction/extractFunctionUtils.kt b/idea/src/org/jetbrains/jet/plugin/refactoring/extractFunction/extractFunctionUtils.kt index 131e041e471..078ffe0a346 100644 --- a/idea/src/org/jetbrains/jet/plugin/refactoring/extractFunction/extractFunctionUtils.kt +++ b/idea/src/org/jetbrains/jet/plugin/refactoring/extractFunction/extractFunctionUtils.kt @@ -343,7 +343,9 @@ private fun ExtractionData.inferParametersInfo( else { val extractThis = hasThisReceiver || thisExpr != null val extractLocalVar = - (originalDeclaration is JetProperty && originalDeclaration.isLocal()) || originalDeclaration is JetParameter + originalDeclaration is JetMultiDeclarationEntry || + (originalDeclaration is JetProperty && originalDeclaration.isLocal()) || + originalDeclaration is JetParameter val descriptorToExtract = (if (extractThis) thisDescriptor else null) ?: originalDescriptor diff --git a/idea/testData/refactoring/extractFunction/parameters/misc/multiDeclaration.kt b/idea/testData/refactoring/extractFunction/parameters/misc/multiDeclaration.kt new file mode 100644 index 00000000000..e3e6b45d5a7 --- /dev/null +++ b/idea/testData/refactoring/extractFunction/parameters/misc/multiDeclaration.kt @@ -0,0 +1,7 @@ +// SIBLING: +fun main(args: Array) { + val (a, b) = Data(1, 2) + a +} + +data class Data(val a: Int, val b: Int) \ No newline at end of file diff --git a/idea/testData/refactoring/extractFunction/parameters/misc/multiDeclaration.kt.after b/idea/testData/refactoring/extractFunction/parameters/misc/multiDeclaration.kt.after new file mode 100644 index 00000000000..6197dc5540b --- /dev/null +++ b/idea/testData/refactoring/extractFunction/parameters/misc/multiDeclaration.kt.after @@ -0,0 +1,11 @@ +// SIBLING: +fun main(args: Array) { + val (a, b) = Data(1, 2) + unit(a) +} + +fun unit(a: Int) { + a +} + +data class Data(val a: Int, val b: Int) \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/plugin/refactoring/introduce/introduceVariable/JetExtractionTestGenerated.java b/idea/tests/org/jetbrains/jet/plugin/refactoring/introduce/introduceVariable/JetExtractionTestGenerated.java index ae7e2e315f6..b4e61b50051 100644 --- a/idea/tests/org/jetbrains/jet/plugin/refactoring/introduce/introduceVariable/JetExtractionTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/plugin/refactoring/introduce/introduceVariable/JetExtractionTestGenerated.java @@ -724,6 +724,11 @@ public class JetExtractionTestGenerated extends AbstractJetExtractionTest { doExtractFunctionTest("idea/testData/refactoring/extractFunction/parameters/misc/innerClassObject.kt"); } + @TestMetadata("multiDeclaration.kt") + public void testMultiDeclaration() throws Exception { + doExtractFunctionTest("idea/testData/refactoring/extractFunction/parameters/misc/multiDeclaration.kt"); + } + @TestMetadata("multipleOccurrences.kt") public void testMultipleOccurrences() throws Exception { doExtractFunctionTest("idea/testData/refactoring/extractFunction/parameters/misc/multipleOccurrences.kt");