Extract method refactoring should order parameters by first usage
Fixes #KT-16198
This commit is contained in:
+2
-2
@@ -1,7 +1,7 @@
|
||||
// PARAM_TYPES: kotlin.String, kotlin.Comparable<kotlin.String>, kotlin.CharSequence, java.io.Serializable, kotlin.Any
|
||||
// PARAM_TYPES: X<kotlin.Any>
|
||||
// PARAM_DESCRIPTOR: value-parameter s: kotlin.String? defined in foo
|
||||
// PARAM_TYPES: kotlin.String, kotlin.Comparable<kotlin.String>, kotlin.CharSequence, java.io.Serializable, kotlin.Any
|
||||
// PARAM_DESCRIPTOR: value-parameter x: X<kotlin.Any> defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter s: kotlin.String? defined in foo
|
||||
class X<T> {
|
||||
fun add(t: T) {
|
||||
|
||||
|
||||
Vendored
+4
-4
@@ -1,7 +1,7 @@
|
||||
// PARAM_TYPES: kotlin.String, kotlin.Comparable<kotlin.String>, kotlin.CharSequence, java.io.Serializable, kotlin.Any
|
||||
// PARAM_TYPES: X<kotlin.Any>
|
||||
// PARAM_DESCRIPTOR: value-parameter s: kotlin.String? defined in foo
|
||||
// PARAM_TYPES: kotlin.String, kotlin.Comparable<kotlin.String>, kotlin.CharSequence, java.io.Serializable, kotlin.Any
|
||||
// PARAM_DESCRIPTOR: value-parameter x: X<kotlin.Any> defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter s: kotlin.String? defined in foo
|
||||
class X<T> {
|
||||
fun add(t: T) {
|
||||
|
||||
@@ -11,10 +11,10 @@ class X<T> {
|
||||
// SIBLING:
|
||||
fun foo(s: String?, x: X<Any>) {
|
||||
when {
|
||||
s != null -> __dummyTestFun__(s, x)
|
||||
s != null -> __dummyTestFun__(x, s)
|
||||
}
|
||||
}
|
||||
|
||||
private fun __dummyTestFun__(s: String, x: X<Any>) {
|
||||
private fun __dummyTestFun__(x: X<Any>, s: String) {
|
||||
x.add(s)
|
||||
}
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
// PARAM_TYPES: kotlin.String?, kotlin.Comparable<kotlin.String>?, kotlin.CharSequence?, java.io.Serializable?, kotlin.Any?
|
||||
// PARAM_TYPES: X<kotlin.Any?>
|
||||
// PARAM_DESCRIPTOR: value-parameter s: kotlin.String? defined in foo
|
||||
// PARAM_TYPES: kotlin.String?, kotlin.Comparable<kotlin.String>?, kotlin.CharSequence?, java.io.Serializable?, kotlin.Any?
|
||||
// PARAM_DESCRIPTOR: value-parameter x: X<kotlin.Any?> defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter s: kotlin.String? defined in foo
|
||||
class X<T> {
|
||||
fun add(t: T) {
|
||||
|
||||
|
||||
+4
-4
@@ -1,7 +1,7 @@
|
||||
// PARAM_TYPES: kotlin.String?, kotlin.Comparable<kotlin.String>?, kotlin.CharSequence?, java.io.Serializable?, kotlin.Any?
|
||||
// PARAM_TYPES: X<kotlin.Any?>
|
||||
// PARAM_DESCRIPTOR: value-parameter s: kotlin.String? defined in foo
|
||||
// PARAM_TYPES: kotlin.String?, kotlin.Comparable<kotlin.String>?, kotlin.CharSequence?, java.io.Serializable?, kotlin.Any?
|
||||
// PARAM_DESCRIPTOR: value-parameter x: X<kotlin.Any?> defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter s: kotlin.String? defined in foo
|
||||
class X<T> {
|
||||
fun add(t: T) {
|
||||
|
||||
@@ -11,10 +11,10 @@ class X<T> {
|
||||
// SIBLING:
|
||||
fun foo(s: String?, x: X<Any?>) {
|
||||
when {
|
||||
s != null -> __dummyTestFun__(s, x)
|
||||
s != null -> __dummyTestFun__(x, s)
|
||||
}
|
||||
}
|
||||
|
||||
private fun __dummyTestFun__(s: String?, x: X<Any?>) {
|
||||
private fun __dummyTestFun__(x: X<Any?>, s: String?) {
|
||||
x.add(s)
|
||||
}
|
||||
Vendored
+2
-2
@@ -1,8 +1,8 @@
|
||||
// OPTIONS: true, false, false, false, true, false
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar(m: kotlin.Int): kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter n: kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar(m: kotlin.Int): kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
fun foo(n: Int): Int {
|
||||
fun Int.bar(m: Int) = this * m * n
|
||||
|
||||
|
||||
Vendored
+4
-4
@@ -1,12 +1,12 @@
|
||||
// OPTIONS: true, false, false, false, true, false
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar(m: kotlin.Int): kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter n: kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar(m: kotlin.Int): kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
fun foo(n: Int): Int {
|
||||
fun Int.bar(m: Int) = this * m * n
|
||||
|
||||
return i(Int::bar, n)
|
||||
return i(n, Int::bar)
|
||||
}
|
||||
|
||||
private fun i(bar: Int.(m: Int) -> Int, n: Int) = n.bar(n + 1)
|
||||
private fun i(n: Int, bar: Int.(m: Int) -> Int) = n.bar(n + 1)
|
||||
+4
-3
@@ -1,10 +1,11 @@
|
||||
// OPTIONS: true, false, false, false, true, false
|
||||
// PARAM_DESCRIPTOR: value-parameter n: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar1(m: kotlin.Int): kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar2(m: kotlin.Int): kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter n: kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
|
||||
fun foo(n: Int): Int {
|
||||
fun Int.bar1(m: Int) = this + m + n
|
||||
fun Int.bar2(m: Int) = this * m * n
|
||||
|
||||
+6
-5
@@ -1,15 +1,16 @@
|
||||
// OPTIONS: true, false, false, false, true, false
|
||||
// PARAM_DESCRIPTOR: value-parameter n: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar1(m: kotlin.Int): kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar2(m: kotlin.Int): kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter n: kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
|
||||
fun foo(n: Int): Int {
|
||||
fun Int.bar1(m: Int) = this + m + n
|
||||
fun Int.bar2(m: Int) = this * m * n
|
||||
|
||||
return i(Int::bar1, Int::bar2, n)
|
||||
return i(n, Int::bar1, Int::bar2)
|
||||
}
|
||||
|
||||
private fun i(bar1: Int.(m: Int) -> Int, bar2: Int.(m: Int) -> Int, n: Int) = n.bar1(n + 1).bar2(n + 2)
|
||||
private fun i(n: Int, bar1: Int.(m: Int) -> Int, bar2: Int.(m: Int) -> Int) = n.bar1(n + 1).bar2(n + 2)
|
||||
idea/testData/refactoring/extractFunction/parameters/capturedFunctions/localExtensionFunInfixCall.kt
Vendored
+2
-2
@@ -1,8 +1,8 @@
|
||||
// OPTIONS: true, false, false, false, true, false
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar(m: kotlin.Int): kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter n: kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar(m: kotlin.Int): kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
fun foo(n: Int): Int {
|
||||
fun Int.bar(m: Int) = this * m * n
|
||||
|
||||
|
||||
+4
-4
@@ -1,12 +1,12 @@
|
||||
// OPTIONS: true, false, false, false, true, false
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar(m: kotlin.Int): kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter n: kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar(m: kotlin.Int): kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int.(m: kotlin.Int) -> kotlin.Int
|
||||
fun foo(n: Int): Int {
|
||||
fun Int.bar(m: Int) = this * m * n
|
||||
|
||||
return i(Int::bar, n)
|
||||
return i(n, Int::bar)
|
||||
}
|
||||
|
||||
private fun i(bar: Int.(m: Int) -> Int, n: Int) = n bar (n + 1)
|
||||
private fun i(n: Int, bar: Int.(m: Int) -> Int) = n bar (n + 1)
|
||||
+1
-1
@@ -4,8 +4,8 @@
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_DESCRIPTOR: value-parameter a: A defined in foo
|
||||
// PARAM_DESCRIPTOR: val t: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: val u: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter x: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: val u: kotlin.Int defined in foo
|
||||
// SIBLING:
|
||||
public class A() {
|
||||
fun bar(a: Int, b: Int): Int {
|
||||
|
||||
+3
-3
@@ -4,8 +4,8 @@
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_DESCRIPTOR: value-parameter a: A defined in foo
|
||||
// PARAM_DESCRIPTOR: val t: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: val u: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter x: kotlin.Int defined in foo
|
||||
// PARAM_DESCRIPTOR: val u: kotlin.Int defined in foo
|
||||
// SIBLING:
|
||||
public class A() {
|
||||
fun bar(a: Int, b: Int): Int {
|
||||
@@ -13,10 +13,10 @@ public class A() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun i(a: A, t: Int, u: Int, x: Int) = a.bar(t - x, u + x)
|
||||
private fun i(a: A, t: Int, x: Int, u: Int) = a.bar(t - x, u + x)
|
||||
|
||||
fun foo(a: A, x: Int): Int {
|
||||
val t = 10
|
||||
val u = 20
|
||||
return i(a, t, u, x)
|
||||
return i(a, t, x, u)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user