Extract Function: Treat multi declarations as local variables
#KT-5054 Fixed
This commit is contained in:
+3
-1
@@ -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)
|
||||
+5
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user