Extract Function: Treat multi declarations as local variables

#KT-5054 Fixed
This commit is contained in:
Alexey Sedunov
2014-05-22 18:53:46 +04:00
parent 3a75aa27f0
commit f4c21d3a28
4 changed files with 26 additions and 1 deletions
@@ -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
@@ -0,0 +1,7 @@
// SIBLING:
fun main(args: Array<String>) {
val (a, b) = Data(1, 2)
<selection>a</selection>
}
data class Data(val a: Int, val b: Int)
@@ -0,0 +1,11 @@
// SIBLING:
fun main(args: Array<String>) {
val (a, b) = Data(1, 2)
unit(a)
}
fun unit(a: Int) {
a
}
data class Data(val a: Int, val b: Int)
@@ -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");