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 {
|
else {
|
||||||
val extractThis = hasThisReceiver || thisExpr != null
|
val extractThis = hasThisReceiver || thisExpr != null
|
||||||
val extractLocalVar =
|
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
|
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");
|
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")
|
@TestMetadata("multipleOccurrences.kt")
|
||||||
public void testMultipleOccurrences() throws Exception {
|
public void testMultipleOccurrences() throws Exception {
|
||||||
doExtractFunctionTest("idea/testData/refactoring/extractFunction/parameters/misc/multipleOccurrences.kt");
|
doExtractFunctionTest("idea/testData/refactoring/extractFunction/parameters/misc/multipleOccurrences.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user