Extract Function: Allow capturing local function references as lambda parameters
This commit is contained in:
+1
-1
@@ -1,5 +1,5 @@
|
||||
// WITH_RUNTIME
|
||||
// OPTIONS: true, true, false, false
|
||||
// OPTIONS: true, true, false, false, false
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
// WITH_RUNTIME
|
||||
// OPTIONS: true, true, false, false
|
||||
// OPTIONS: true, true, false, false, false
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
// OPTIONS: true, false, false, false, true
|
||||
// PARAM_DESCRIPTOR: local final fun baz(m: kotlin.Int): Int defined in foo.bar
|
||||
// PARAM_DESCRIPTOR: value-parameter val n: kotlin.Int defined in foo
|
||||
// PARAM_TYPES: (kotlin.Int) -> Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
|
||||
// SIBLING:
|
||||
fun foo(n: Int): Int {
|
||||
fun bar(): Int {
|
||||
fun baz(m: Int) = m * n
|
||||
|
||||
return <selection>baz(n + 1)</selection>
|
||||
}
|
||||
|
||||
return bar()
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
// OPTIONS: true, false, false, false, true
|
||||
// PARAM_DESCRIPTOR: local final fun baz(m: kotlin.Int): Int defined in foo.bar
|
||||
// PARAM_DESCRIPTOR: value-parameter val n: kotlin.Int defined in foo
|
||||
// PARAM_TYPES: (kotlin.Int) -> Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
|
||||
// SIBLING:
|
||||
fun foo(n: Int): Int {
|
||||
fun bar(): Int {
|
||||
fun baz(m: Int) = m * n
|
||||
|
||||
return i(::baz, n)
|
||||
}
|
||||
|
||||
return bar()
|
||||
}
|
||||
|
||||
private fun i(baz: (Int) -> Int, n: Int) = baz(n + 1)
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
// OPTIONS: true, false, false, false, true
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar(m: kotlin.Int): Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter val n: kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int.(kotlin.Int) -> Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
fun foo(n: Int): Int {
|
||||
fun Int.bar(m: Int) = this * m * n
|
||||
|
||||
return <selection>n.bar(n + 1)</selection>
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
// OPTIONS: true, false, false, false, true
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar(m: kotlin.Int): Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter val n: kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int.(kotlin.Int) -> Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
fun foo(n: Int): Int {
|
||||
fun Int.bar(m: Int) = this * m * n
|
||||
|
||||
return i(Int::bar, n)
|
||||
}
|
||||
|
||||
private fun i(bar: Int.(Int) -> Int, n: Int) = n.bar(n + 1)
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
// OPTIONS: true, false, false, false, true
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar1(m: kotlin.Int): Int defined in foo
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar2(m: kotlin.Int): Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter val n: kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int.(kotlin.Int) -> Int
|
||||
// PARAM_TYPES: kotlin.Int.(kotlin.Int) -> Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
fun foo(n: Int): Int {
|
||||
fun Int.bar1(m: Int) = this + m + n
|
||||
fun Int.bar2(m: Int) = this * m * n
|
||||
|
||||
return <selection>n.bar1(n + 1).bar2(n + 2)</selection>
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
// OPTIONS: true, false, false, false, true
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar1(m: kotlin.Int): Int defined in foo
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar2(m: kotlin.Int): Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter val n: kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int.(kotlin.Int) -> Int
|
||||
// PARAM_TYPES: kotlin.Int.(kotlin.Int) -> Int
|
||||
// PARAM_TYPES: 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)
|
||||
}
|
||||
|
||||
private fun i(bar1: Int.(Int) -> Int, bar2: Int.(Int) -> Int, n: Int) = n.bar1(n + 1).bar2(n + 2)
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
// OPTIONS: true, false, false, false, true
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar(m: kotlin.Int): Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter val n: kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int.(kotlin.Int) -> Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
fun foo(n: Int): Int {
|
||||
fun Int.bar(m: Int) = this * m * n
|
||||
|
||||
return <selection>n bar (n + 1)</selection>
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
// OPTIONS: true, false, false, false, true
|
||||
// PARAM_DESCRIPTOR: local final fun kotlin.Int.bar(m: kotlin.Int): Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter val n: kotlin.Int defined in foo
|
||||
// PARAM_TYPES: kotlin.Int.(kotlin.Int) -> Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
fun foo(n: Int): Int {
|
||||
fun Int.bar(m: Int) = this * m * n
|
||||
|
||||
return i(Int::bar, n)
|
||||
}
|
||||
|
||||
private fun i(bar: Int.(Int) -> Int, n: Int) = n bar (n + 1)
|
||||
@@ -0,0 +1,10 @@
|
||||
// OPTIONS: true, false, false, false, true
|
||||
// PARAM_DESCRIPTOR: local final fun bar(m: kotlin.Int): Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter val n: kotlin.Int defined in foo
|
||||
// PARAM_TYPES: (kotlin.Int) -> Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
fun foo(n: Int): Int {
|
||||
fun bar(m: Int) = m * n
|
||||
|
||||
return <selection>bar(n + 1)</selection>
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
// OPTIONS: true, false, false, false, true
|
||||
// PARAM_DESCRIPTOR: local final fun bar(m: kotlin.Int): Int defined in foo
|
||||
// PARAM_DESCRIPTOR: value-parameter val n: kotlin.Int defined in foo
|
||||
// PARAM_TYPES: (kotlin.Int) -> Int
|
||||
// PARAM_TYPES: kotlin.Int
|
||||
fun foo(n: Int): Int {
|
||||
fun bar(m: Int) = m * n
|
||||
|
||||
return i(::bar, n)
|
||||
}
|
||||
|
||||
private fun i(bar: (Int) -> Int, n: Int) = bar(n + 1)
|
||||
Reference in New Issue
Block a user