JVM IR: Avoid direct lambda invokes in inline tests
This commit is contained in:
committed by
Alexander Udalov
parent
f0760e0550
commit
2acfb3a41f
+1
-1
@@ -4,7 +4,7 @@
|
||||
package test
|
||||
|
||||
inline fun bar(crossinline y: () -> String) = {
|
||||
{ { call(y) }() }()
|
||||
{ { call(y) }.let { it() } }.let { it() }
|
||||
}
|
||||
|
||||
public inline fun <T> call(f: () -> T): T = f()
|
||||
|
||||
+3
-3
@@ -4,10 +4,10 @@
|
||||
package test
|
||||
|
||||
inline fun bar(crossinline y: () -> String) = {
|
||||
{ { call(y) }() }()
|
||||
{ { call(y) }.let { it() } }.let { it() }
|
||||
}
|
||||
|
||||
public inline fun <T> call(crossinline f: () -> T): T = {{ f() }()}()
|
||||
public inline fun <T> call(crossinline f: () -> T): T = {{ f() }.let { it() }}.let { it() }
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
@@ -20,5 +20,5 @@ fun box(): String {
|
||||
}
|
||||
|
||||
inline fun bar2(crossinline y: () -> String) = {
|
||||
{ { call(y) }() }()
|
||||
{ { call(y) }.let { it() } }.let { it() }
|
||||
}
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@ internal class A {
|
||||
inline fun doSomething(): String {
|
||||
return {
|
||||
"OK"
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@ internal class A {
|
||||
inline fun doSomething(s: String): String {
|
||||
return {
|
||||
s
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,11 +5,13 @@
|
||||
package test
|
||||
|
||||
inline fun inf(crossinline cif: Any.() -> String): () -> String {
|
||||
return {
|
||||
// Approximate the types manually to avoid running into KT-30696
|
||||
val factory: () -> () -> String = {
|
||||
object : () -> String {
|
||||
override fun invoke() = cif()
|
||||
}
|
||||
}()
|
||||
}
|
||||
return factory()
|
||||
}
|
||||
// FILE: 2.kt
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ package test
|
||||
|
||||
inline fun test(cond: Boolean, crossinline cif: () -> String): String {
|
||||
return if (cond) {
|
||||
{ cif() }()
|
||||
{ cif() }.let { it() }
|
||||
}
|
||||
else {
|
||||
cif()
|
||||
@@ -19,6 +19,6 @@ fun box(): String {
|
||||
return test(true) {
|
||||
{
|
||||
s
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ package test
|
||||
|
||||
inline fun inline1(crossinline action: () -> Unit) {
|
||||
action();
|
||||
{ action() }()
|
||||
{ action() }.let { it() }
|
||||
}
|
||||
|
||||
inline fun inline2(crossinline action: () -> Unit) = { action() }
|
||||
|
||||
@@ -17,7 +17,7 @@ import test.*
|
||||
var result = "fail"
|
||||
fun box(): String {
|
||||
inline1 {
|
||||
inline2 { { result ="OK" }() }()
|
||||
inline2 { { result ="OK" }.let { it() } }()
|
||||
}
|
||||
|
||||
return result
|
||||
|
||||
@@ -26,7 +26,7 @@ class Foo {
|
||||
ifNotBusyPerform {
|
||||
ifNotBusySayHello()
|
||||
}
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ import test.*
|
||||
class C {
|
||||
val x: String
|
||||
init {
|
||||
val y = myRun { { "OK" }() }
|
||||
val y = myRun { { "OK" }.let { it() } }
|
||||
x = y
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ import test.*
|
||||
class C {
|
||||
val x: String
|
||||
init {
|
||||
val y by myRun { { "OK" }() }
|
||||
val y by myRun { { "OK" }.let { it() } }
|
||||
x = y
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ fun box(): String {
|
||||
{
|
||||
locusMap = value
|
||||
gene = "OK"
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
}
|
||||
return gene
|
||||
|
||||
@@ -20,7 +20,7 @@ fun box(): String {
|
||||
{
|
||||
value
|
||||
gene = "OK"
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ inline fun testNested(crossinline f: (String) -> Unit) {
|
||||
}
|
||||
|
||||
inline fun test(crossinline f: (String) -> Unit) {
|
||||
testNested { it -> { f(it) }()}
|
||||
testNested { it -> { f(it) }.let { it() } }
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
+3
-3
@@ -20,10 +20,10 @@ fun box(): String {
|
||||
{
|
||||
{
|
||||
result = param + c + a
|
||||
}()
|
||||
}()
|
||||
}.let { it() }
|
||||
}.let { it() }
|
||||
}
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
return if (result == "start12") "OK" else "fail: $result"
|
||||
|
||||
+2
-2
@@ -5,7 +5,7 @@ package test
|
||||
inline fun <T> inlineFun(arg: T, crossinline f: (T) -> Unit) {
|
||||
{
|
||||
f(arg)
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
@@ -19,7 +19,7 @@ fun box(): String {
|
||||
inlineFun("2") { a ->
|
||||
{
|
||||
result = param + a
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
|
||||
|
||||
+4
-4
@@ -5,7 +5,7 @@ package test
|
||||
inline fun <T> inlineFun(arg: T, crossinline f: (T) -> Unit) {
|
||||
{
|
||||
f(arg)
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
@@ -21,10 +21,10 @@ fun box(): String {
|
||||
{
|
||||
{
|
||||
result = param + c + a
|
||||
}()
|
||||
}()
|
||||
}.let { it() }
|
||||
}.let { it() }
|
||||
}
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
return if (result == "start12") "OK" else "fail: $result"
|
||||
|
||||
+3
-3
@@ -5,7 +5,7 @@ package test
|
||||
inline fun <T> inlineFun(arg: T, crossinline f: (T) -> Unit) {
|
||||
{
|
||||
f(arg)
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
@@ -20,9 +20,9 @@ fun box(): String {
|
||||
inlineFun("2") { a ->
|
||||
{
|
||||
result = param + c + a
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
return if (result == "start12") "OK" else "fail: $result"
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ inline fun testNested(crossinline f: (String) -> Unit) {
|
||||
}
|
||||
|
||||
fun test(f: (String) -> Unit) {
|
||||
testNested { it -> { f(it) }()}
|
||||
testNested { it -> { f(it) }.let { it() } }
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
Vendored
+1
-1
@@ -17,7 +17,7 @@ class B(val o: String, val k: String) {
|
||||
}
|
||||
|
||||
inline fun test(crossinline f: (String) -> Unit) {
|
||||
testNested { it -> { f(it + k) }() }
|
||||
testNested { it -> { f(it + k) }.let { it() } }
|
||||
}
|
||||
|
||||
|
||||
|
||||
Vendored
+4
-4
@@ -11,7 +11,7 @@ class A {
|
||||
inline fun inlineFun(arg: String, crossinline f: (String) -> Unit) {
|
||||
{
|
||||
f(arg + addParam)
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
@@ -21,12 +21,12 @@ class A {
|
||||
{
|
||||
{
|
||||
result = param + c + a
|
||||
}()
|
||||
}()
|
||||
}.let { it() }
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
}
|
||||
}()
|
||||
}.let { it() }
|
||||
|
||||
return if (result == "start1_additional_2_additional_") "OK" else "fail: $result"
|
||||
}
|
||||
|
||||
Vendored
+3
-3
@@ -19,10 +19,10 @@ class A {
|
||||
{
|
||||
{
|
||||
result = param + c + a
|
||||
}()
|
||||
}()
|
||||
}.let { it() }
|
||||
}.let { it() }
|
||||
}
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
return if (result == "start1_additional_2_additional_") "OK" else "fail: $result"
|
||||
|
||||
Vendored
+2
-2
@@ -11,7 +11,7 @@ class A {
|
||||
inline fun inlineFun(arg: String, crossinline f: (String) -> Unit) {
|
||||
{
|
||||
f(arg + addParam)
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ class A {
|
||||
inlineFun("2") { a ->
|
||||
{
|
||||
result = param + a
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
return if (result == "start2_additional_") "OK" else "fail: $result"
|
||||
}
|
||||
|
||||
Vendored
+3
-3
@@ -11,7 +11,7 @@ class A {
|
||||
inline fun inlineFun(arg: String, crossinline f: (String) -> Unit) {
|
||||
{
|
||||
f(arg + addParam)
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
|
||||
@@ -20,9 +20,9 @@ class A {
|
||||
inlineFun("2") { a ->
|
||||
{
|
||||
result = param + a
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
}()
|
||||
}.let { it() }
|
||||
return if (result == "start2_additional_") "OK" else "fail: $result"
|
||||
}
|
||||
|
||||
|
||||
Vendored
+4
-4
@@ -11,7 +11,7 @@ class A {
|
||||
inline fun inlineFun(arg: String, crossinline f: (String) -> Unit) {
|
||||
{
|
||||
f(arg + addParam)
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
@@ -21,10 +21,10 @@ class A {
|
||||
{
|
||||
{
|
||||
result = param + c + a
|
||||
}()
|
||||
}()
|
||||
}.let { it() }
|
||||
}.let { it() }
|
||||
}
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
return if (result == "start1_additional_2_additional_") "OK" else "fail: $result"
|
||||
|
||||
Vendored
+3
-3
@@ -11,7 +11,7 @@ class A {
|
||||
inline fun inlineFun(arg: String, crossinline f: (String) -> Unit) {
|
||||
{
|
||||
f(arg + addParam)
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
@@ -20,9 +20,9 @@ class A {
|
||||
inlineFun("2") { a ->
|
||||
{
|
||||
result = param + c + a
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
return if (result == "start1_additional_2_additional_") "OK" else "fail: $result"
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ class B(val o: String, val k: String) {
|
||||
}
|
||||
|
||||
inline fun test(crossinline f: (String) -> Unit) {
|
||||
testNested { it -> { f(it + "K") }() }
|
||||
testNested { it -> { f(it + "K") }.let { it() } }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -18,7 +18,7 @@ class B(val o: String, val k: String) {
|
||||
}
|
||||
|
||||
fun test(f: (String) -> Unit) {
|
||||
testNested { it -> { f(it + k) }() }
|
||||
testNested { it -> { f(it + k) }.let { it() } }
|
||||
}
|
||||
|
||||
|
||||
|
||||
+2
-2
@@ -20,8 +20,8 @@ class B(val o: String, val k: String) {
|
||||
inline fun test(crossinline f: (String) -> Unit) {
|
||||
call {
|
||||
{
|
||||
testNested ({ it -> { f(it + o) }() }) { it -> { f(it + k) }() }
|
||||
}()
|
||||
testNested ({ it -> { f(it + o) }.let { it() } }) { it -> { f(it + k) }.let { it() } }
|
||||
}.let { it() }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -21,8 +21,8 @@ class B(val o: String, val k: String) {
|
||||
call {
|
||||
f("start");
|
||||
{
|
||||
testNested ({ it -> { f(it + o) }() }) { it -> { f(it + k) }() }
|
||||
}()
|
||||
testNested ({ it -> { f(it + o) }.let { it() } }) { it -> { f(it + k) }.let { it() } }
|
||||
}.let { it() }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ class W(val value: Any)
|
||||
inline fun W.safe(crossinline body : Any.() -> Unit) {
|
||||
{
|
||||
this.value?.body()
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
@@ -7,7 +7,7 @@ class W(val value: Any)
|
||||
inline fun W.safe(crossinline body : Any.() -> Unit) {
|
||||
{
|
||||
this.value?.body()
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
@@ -19,7 +19,7 @@ fun box(): String {
|
||||
W("OK").safe {
|
||||
{
|
||||
result = this as String
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
return result
|
||||
|
||||
@@ -6,7 +6,7 @@ package test
|
||||
|
||||
inline fun foo(value: String, crossinline s: () -> String): String {
|
||||
val x = { value }
|
||||
return java.util.concurrent.Callable(x).call() + { s() }()
|
||||
return java.util.concurrent.Callable(x).call() + { s() }.let { it() }
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ package test
|
||||
import java.util.concurrent.Executors
|
||||
|
||||
inline fun doWork(noinline job: ()-> Unit) {
|
||||
{ Executors.callable(job).call() } ()
|
||||
{ Executors.callable(job).call() }.let { it() }
|
||||
Executors.callable(job).call()
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ fun test(): String = ""
|
||||
|
||||
inline fun String.switchMapOnce(crossinline mapper: (String) -> String): String {
|
||||
Callable(::test)
|
||||
return { mapper(this) }()
|
||||
return { mapper(this) }.let { it() }
|
||||
}
|
||||
// FILE: 2.kt
|
||||
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ class A {
|
||||
inline fun test(crossinline l: () -> String): String {
|
||||
return {
|
||||
l() + callK()
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ class C(val x: String) {
|
||||
fun f(y: String) = C(y).g { x }
|
||||
|
||||
inline fun g(crossinline h: () -> String) =
|
||||
{ { h() + x }() }()
|
||||
{ { h() + x }.let { it() } }.let { it() }
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
Vendored
+1
-1
@@ -5,7 +5,7 @@ class C(val x: String) {
|
||||
inline fun f(crossinline h: () -> String) = C("").g { x + h() }
|
||||
|
||||
inline fun g(crossinline h: () -> String) =
|
||||
{ { h() + x }() }()
|
||||
{ { h() + x }.let { it() } }.let { it() }
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
package test
|
||||
|
||||
inline fun test(a: Int, b: Long, crossinline c: () -> String): String {
|
||||
return { "${a}_${b}_${c()}"} ()
|
||||
return { "${a}_${b}_${c()}" }.let { it() }
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
package test
|
||||
|
||||
inline fun Double.test(a: Int, b: Long, crossinline c: () -> String): String {
|
||||
|
||||
return { "${this}_${a}_${b}_${c()}"} ()
|
||||
return { "${this}_${a}_${b}_${c()}" }.let { it() }
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
@@ -24,7 +24,7 @@ class A {
|
||||
apply2 {
|
||||
this@linearLayout2::calc
|
||||
}()
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ public fun Input.copyTo(output: Output, size: Int): Long {
|
||||
}
|
||||
|
||||
|
||||
public inline fun <T> with2(receiver : T, crossinline body : T.() -> Unit) : Unit = {receiver.body()}()
|
||||
public inline fun <T> with2(receiver : T, crossinline body : T.() -> Unit) : Unit = {receiver.body()}.let { it() }
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ object ContentTypeByExtension {
|
||||
{
|
||||
val ext = B("OK")
|
||||
operation(ext.toLowerCase())
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ inline fun vBox(crossinline action: () -> Unit) {
|
||||
contract {
|
||||
callsInPlace(action, InvocationKind.EXACTLY_ONCE)
|
||||
}
|
||||
return { action() }()
|
||||
return { action() }.let { it() }
|
||||
}
|
||||
|
||||
inline fun button(onAction: () -> Unit) {
|
||||
|
||||
@@ -26,7 +26,7 @@ inline fun baz(crossinline exactly_once: () -> Unit) {
|
||||
callsInPlace(exactly_once, InvocationKind.EXACTLY_ONCE)
|
||||
};
|
||||
|
||||
{ exactly_once() }()
|
||||
{ exactly_once() }.let { it() }
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@ fun box(): String {
|
||||
x = 42
|
||||
{
|
||||
x
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
return if (res == 42 && x.inc() == 43) "OK" else "Fail: ${x.inc()}"
|
||||
}
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ package test
|
||||
inline fun String.inlineFun(crossinline lambda: () -> String = { this }): String {
|
||||
return {
|
||||
this + lambda()
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ package test
|
||||
inline fun String.inlineFun(crossinline lambda: () -> String, crossinline dlambda: () -> String = { this }): String {
|
||||
return {
|
||||
"${this} ${lambda()} ${dlambda()}"
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ class A(val value: String) {
|
||||
inline fun String.inlineFun(crossinline lambda: () -> String = { this }): String {
|
||||
return {
|
||||
"$value ${this} ${lambda()}"
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ class A(val value: String) {
|
||||
inline fun String.inlineFun(crossinline lambda: () -> String, crossinline dlambda: () -> String = { this }): String {
|
||||
return {
|
||||
"$value ${this} ${lambda()} ${dlambda()}"
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -6,8 +6,8 @@ inline fun String.inlineFun(crossinline lambda: () -> String = { { this }() }):
|
||||
return {
|
||||
{
|
||||
this + lambda()
|
||||
}()
|
||||
}()
|
||||
}.let { it() }
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
+2
-2
@@ -8,8 +8,8 @@ class A(val value: String) {
|
||||
return {
|
||||
{
|
||||
this + lambda()
|
||||
}()
|
||||
}()
|
||||
}.let { it() }
|
||||
}.let { it() }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ object C {
|
||||
inline fun inlineFun() = {
|
||||
val O by "K"
|
||||
O
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
// FILE: box.kt
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
package test
|
||||
|
||||
inline fun <R> call(crossinline s: () -> R) = { s() }()
|
||||
inline fun <R> call(crossinline s: () -> R) = { s() }.let { it() }
|
||||
|
||||
inline fun test(crossinline z: () -> String) = { z() }
|
||||
|
||||
|
||||
+1
-1
@@ -14,5 +14,5 @@ enum class Z {
|
||||
import test.*
|
||||
|
||||
fun box(): String {
|
||||
return { enumValueOf<Z>("OK").name } ()
|
||||
return { enumValueOf<Z>("OK").name }.let { it() }
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
package test
|
||||
|
||||
inline fun <reified T : Enum<T>> myValueOf(): String {
|
||||
return { enumValueOf<T>("OK") }().name
|
||||
return { enumValueOf<T>("OK") }.let { it() }.name
|
||||
}
|
||||
|
||||
enum class Z {
|
||||
|
||||
@@ -8,7 +8,7 @@ inline fun <reified Z : Enum<Z>> myValueOf(): String {
|
||||
}
|
||||
|
||||
inline fun <reified Y : Enum<Y>> myValueOf2(): String {
|
||||
return { enumValueOf<Y>("OK").name }()
|
||||
return { enumValueOf<Y>("OK").name }.let { it() }
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
package test
|
||||
|
||||
inline fun <reified T : Enum<T>> myValues(): String {
|
||||
val values = { enumValues<T>() }()
|
||||
val values = { enumValues<T>() }.let { it() }
|
||||
return values.joinToString("")
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
package test
|
||||
|
||||
inline fun <reified Y : Enum<Y>> myValues2(): String {
|
||||
val values = { enumValues<Y>() }()
|
||||
val values = { enumValues<Y>() }.let { it() }
|
||||
return values.joinToString("")
|
||||
}
|
||||
|
||||
|
||||
@@ -24,8 +24,8 @@ fun box(): String {
|
||||
{
|
||||
val q = object {}
|
||||
s2 = q.javaClass.enclosingMethod.declaringClass.toString()
|
||||
}()
|
||||
}()
|
||||
}.let { it() }
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
return "OK"
|
||||
|
||||
@@ -18,9 +18,9 @@ import zzz.*
|
||||
|
||||
fun box(): String {
|
||||
|
||||
val p = { calc { 11 }} ()
|
||||
val p = { calc { 11 } }.let { it() }
|
||||
|
||||
val z = { calc { 12 }}()
|
||||
val z = { calc { 12 } }.let { it() }
|
||||
|
||||
if (p == z) return "fail"
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ inline fun Int.inlineMethod() : Int {
|
||||
return noInlineLambda()
|
||||
}
|
||||
|
||||
inline fun Int.noInlineLambda() = { s++ } ()
|
||||
inline fun Int.noInlineLambda() = { s++ }.let { it() }
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
package test
|
||||
|
||||
inline fun <T> doSmth(a: T) : String {
|
||||
return {a.toString()}()
|
||||
return { a.toString() }.let { it() }
|
||||
}
|
||||
|
||||
inline fun <T> doSmth2(a: T) : String {
|
||||
return {{a.toString()}()}()
|
||||
return { { a.toString() }.let { it() } }.let { it() }
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
+1
-1
@@ -54,7 +54,7 @@ inline fun test2(crossinline param: () -> String): String {
|
||||
|
||||
inline fun test22(crossinline param: () -> String): String {
|
||||
var result = "fail1"
|
||||
{{result = param()}()}()
|
||||
{ { result = param() }.let { it() } }.let { it() }
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ package test
|
||||
|
||||
|
||||
inline fun <R> call(crossinline f: () -> R) : R {
|
||||
return {f()} ()
|
||||
return { f() }.let { it() }
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
package test
|
||||
|
||||
inline fun <R> call(crossinline f: () -> R) : R {
|
||||
return { f() }()
|
||||
return { f() }.let { it() }
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
@@ -47,7 +47,7 @@ fun fooLongCallableReference(): String {
|
||||
val r = "O"
|
||||
val a = run {
|
||||
fun f(x: Long, y: String? = null): String = r + x + y
|
||||
(::f)(4, "K")
|
||||
(::f).let { it(4, "K") }
|
||||
}
|
||||
return a
|
||||
}
|
||||
@@ -59,7 +59,7 @@ class A {
|
||||
override fun run(captured: String): String {
|
||||
return {
|
||||
callPrivate(capt, captured)
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
private fun callPrivate(x: Int, y: String?): String = "O" + x + y
|
||||
|
||||
@@ -19,10 +19,10 @@ fun test1(param: String): String {
|
||||
{
|
||||
{
|
||||
result = param + c + a
|
||||
}()
|
||||
}()
|
||||
}.let { it() }
|
||||
}.let { it() }
|
||||
}
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
return result
|
||||
@@ -35,8 +35,8 @@ fun test2(param: String): String {
|
||||
{
|
||||
{
|
||||
result = param + a
|
||||
}()
|
||||
}()
|
||||
}.let { it() }
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
return result
|
||||
@@ -51,10 +51,10 @@ fun test3(param: String): String {
|
||||
{
|
||||
{
|
||||
result = param + c + a
|
||||
}()
|
||||
}()
|
||||
}.let { it() }
|
||||
}.let { it() }
|
||||
}
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+8
-8
@@ -19,10 +19,10 @@ inline fun test1(crossinline param: () -> String): String {
|
||||
{
|
||||
{
|
||||
result = param() + c + a
|
||||
}()
|
||||
}()
|
||||
}.let { it() }
|
||||
}.let { it() }
|
||||
}
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
return result
|
||||
@@ -35,8 +35,8 @@ inline fun test2(crossinline param: () -> String): String {
|
||||
{
|
||||
{
|
||||
result = param() + a
|
||||
}()
|
||||
}()
|
||||
}.let { it() }
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
return result
|
||||
@@ -51,10 +51,10 @@ inline fun test3(crossinline param: () -> String): String {
|
||||
{
|
||||
{
|
||||
result = param() + c + a
|
||||
}()
|
||||
}()
|
||||
}.let { it() }
|
||||
}.let { it() }
|
||||
}
|
||||
}()
|
||||
}.let { it() }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,4 +14,4 @@ inline fun foo(f: () -> Unit) {
|
||||
fun box(): String = (bar@ l@ fun(): String {
|
||||
foo { return@bar "OK" }
|
||||
return "fail"
|
||||
}) ()
|
||||
}).let { it() }
|
||||
|
||||
+2
-2
@@ -10,12 +10,12 @@ inline fun foo(f: () -> Unit) {
|
||||
fun test(): String = fun (): String {
|
||||
foo { return "OK" }
|
||||
return "fail"
|
||||
} ()
|
||||
}.let { it() }
|
||||
|
||||
fun test2(): String = (l@ fun (): String {
|
||||
foo { return@l "OK" }
|
||||
return "fail"
|
||||
}) ()
|
||||
}).let { it() }
|
||||
|
||||
fun box(): String {
|
||||
if (test() != "OK") return "fail 1: ${test()}"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
// FILE: 1.kt
|
||||
package test
|
||||
|
||||
inline fun <reified T> inlineFun(p: String, lambda: () -> String = { { p + T::class.java.simpleName } () }): String {
|
||||
inline fun <reified T> inlineFun(p: String, lambda: () -> String = { { p + T::class.java.simpleName }.let { it() } }): String {
|
||||
return lambda()
|
||||
}
|
||||
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
// FILE: 1.kt
|
||||
package test
|
||||
|
||||
inline fun <reified T> inlineFun(p: String, crossinline lambda: () -> String = { { p + T::class.java.simpleName } () }): String {
|
||||
inline fun <reified T> inlineFun(p: String, crossinline lambda: () -> String = { { p + T::class.java.simpleName }.let { it() } }): String {
|
||||
return {
|
||||
lambda()
|
||||
} ()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
// FILE: 1.kt
|
||||
package test
|
||||
|
||||
inline fun <reified T> inlineFun(crossinline lambda: () -> String = { { T::class.java.simpleName } () }): String {
|
||||
inline fun <reified T> inlineFun(crossinline lambda: () -> String = { { T::class.java.simpleName }.let { it() } }): String {
|
||||
return {
|
||||
lambda()
|
||||
} ()
|
||||
}.let { it() }
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
// FILE: 1.kt
|
||||
package test
|
||||
|
||||
inline fun <reified T> inlineFun(lambda: () -> String = { { T::class.java.simpleName } () }): String {
|
||||
inline fun <reified T> inlineFun(lambda: () -> String = { { T::class.java.simpleName }.let { it() } }): String {
|
||||
return lambda()
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -1,9 +1,9 @@
|
||||
// FILE: 1.kt
|
||||
package test
|
||||
|
||||
inline fun foo(crossinline x: () -> String) = { x() }()
|
||||
inline fun foo(crossinline x: () -> String) = { x() }.let { it() }
|
||||
|
||||
inline fun <reified T> bar() = foo { { T::class.simpleName!! }() }
|
||||
inline fun <reified T> bar() = foo { { T::class.simpleName!! }.let { it() } }
|
||||
|
||||
// FILE: 2.kt
|
||||
import test.*
|
||||
|
||||
@@ -3,7 +3,7 @@ package test
|
||||
|
||||
inline fun foo(x: () -> String) = x()
|
||||
|
||||
inline fun <reified T> bar() = { foo { { T::class.simpleName!! }() } }()
|
||||
inline fun <reified T> bar() = { foo { { T::class.simpleName!! }.let { it() } } }.let { it() }
|
||||
|
||||
// FILE: 2.kt
|
||||
import test.*
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ public inline fun <reified T : Any> inlineMeIfYouCan(): String? =
|
||||
f {
|
||||
T::class.java.getName()
|
||||
}
|
||||
}()
|
||||
}.let { it() }
|
||||
|
||||
inline fun f(x: () -> String) = x()
|
||||
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@ import kotlin.reflect.KClass
|
||||
|
||||
inline fun <reified T : Any> injectFnc(): KClass<T> = {
|
||||
T::class
|
||||
} ()
|
||||
}.let { it() }
|
||||
|
||||
public class Box
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
package test
|
||||
abstract class Introspector {
|
||||
abstract inner class SchemaRetriever(val transaction: String) {
|
||||
inline fun inSchema(crossinline modifier: (String) -> Unit) =
|
||||
{ modifier.invoke(transaction) }()
|
||||
inline fun inSchema(crossinline modifier: (String) -> Unit)
|
||||
{ val lambda = { modifier.invoke(transaction) }; lambda() }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/Introspector$SchemaRetriever$inSchema$1
|
||||
test/Introspector$SchemaRetriever$inSchema$lambda$1
|
||||
*L
|
||||
1#1,12:1
|
||||
*E
|
||||
@@ -37,7 +37,7 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/Introspector$SchemaRetriever$inSchema$1
|
||||
test/Introspector$SchemaRetriever$inSchema$lambda$1
|
||||
+ 2 2.kt
|
||||
IntrospectorImpl$SchemaRetriever
|
||||
*L
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
package builders
|
||||
|
||||
inline fun call(crossinline init: () -> Unit) {
|
||||
return {
|
||||
val lambda = {
|
||||
init()
|
||||
}()
|
||||
}; lambda()
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
@@ -5,7 +5,7 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
builders/_1Kt$call$1
|
||||
builders/_1Kt$call$lambda$1
|
||||
*L
|
||||
1#1,13:1
|
||||
*E
|
||||
@@ -22,13 +22,13 @@ _2Kt
|
||||
builders/_1Kt
|
||||
*L
|
||||
1#1,31:1
|
||||
8#2:32
|
||||
8#2,4:32
|
||||
*S KotlinDebug
|
||||
*F
|
||||
+ 1 2.kt
|
||||
_2Kt
|
||||
*L
|
||||
20#1:32
|
||||
20#1:32,4
|
||||
*E
|
||||
|
||||
SMAP
|
||||
@@ -37,7 +37,7 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
builders/_1Kt$call$1
|
||||
builders/_1Kt$call$lambda$1
|
||||
+ 2 2.kt
|
||||
_2Kt
|
||||
*L
|
||||
|
||||
@@ -17,9 +17,9 @@ fun test(): String {
|
||||
var res = "Fail"
|
||||
|
||||
call {
|
||||
{
|
||||
val lambda ={
|
||||
res = "OK"
|
||||
}()
|
||||
}; lambda()
|
||||
}
|
||||
|
||||
return res
|
||||
|
||||
+2
-2
@@ -3,8 +3,8 @@
|
||||
package test
|
||||
|
||||
|
||||
inline fun annotatedWith2(crossinline predicate: () -> Boolean) =
|
||||
{ any { predicate() } }()
|
||||
inline fun annotatedWith2(crossinline predicate: () -> Boolean)
|
||||
{ val lambda = { any { predicate() } }; lambda() }
|
||||
|
||||
|
||||
inline fun annotatedWith(crossinline predicate: () -> Boolean) =
|
||||
|
||||
+2
-2
@@ -27,7 +27,7 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$annotatedWith2$1
|
||||
test/_1Kt$annotatedWith2$lambda$1
|
||||
+ 2 1.kt
|
||||
test/_1Kt
|
||||
+ 3 2.kt
|
||||
@@ -41,7 +41,7 @@ _2Kt
|
||||
*S KotlinDebug
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$annotatedWith2$1
|
||||
test/_1Kt$annotatedWith2$lambda$1
|
||||
*L
|
||||
7#1:20
|
||||
7#1:23
|
||||
|
||||
+2
-2
@@ -28,10 +28,10 @@ package test
|
||||
//A lot of blank lines [Don't delete]
|
||||
//A lot of blank lines [Don't delete]
|
||||
|
||||
inline fun kValue(crossinline s: () -> String) = { s() + "K" }()
|
||||
inline fun kValue(crossinline s: () -> String): String { val lambda = { s() + "K" }; return lambda() }
|
||||
|
||||
inline fun lParams(initParams: () -> String = {
|
||||
{ "" + kValue { "O" } }()
|
||||
val lambda = { "" + kValue { "O" } }; lambda()
|
||||
}): String {
|
||||
val z = "body"
|
||||
return initParams()
|
||||
|
||||
+5
-5
@@ -16,7 +16,7 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$lParams$1$1
|
||||
test/_1Kt$lParams$1$lambda$1
|
||||
+ 2 1.kt
|
||||
test/_1Kt
|
||||
*L
|
||||
@@ -25,7 +25,7 @@ test/_1Kt
|
||||
*S KotlinDebug
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$lParams$1$1
|
||||
test/_1Kt$lParams$1$lambda$1
|
||||
*L
|
||||
34#1:41
|
||||
*E
|
||||
@@ -36,9 +36,9 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$kValue$1
|
||||
test/_1Kt$kValue$lambda$1
|
||||
+ 2 1.kt
|
||||
test/_1Kt$lParams$1$1
|
||||
test/_1Kt$lParams$1$lambda$1
|
||||
*L
|
||||
1#1,40:1
|
||||
34#2:41
|
||||
@@ -50,7 +50,7 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$kValue$1
|
||||
test/_1Kt$kValue$lambda$1
|
||||
*L
|
||||
1#1,40:1
|
||||
*E
|
||||
|
||||
+9
-9
@@ -16,7 +16,7 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$lParams$1$1
|
||||
test/_1Kt$lParams$1$lambda$1
|
||||
+ 2 1.kt
|
||||
test/_1Kt
|
||||
*L
|
||||
@@ -25,7 +25,7 @@ test/_1Kt
|
||||
*S KotlinDebug
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$lParams$1$1
|
||||
test/_1Kt$lParams$1$lambda$1
|
||||
*L
|
||||
34#1:41
|
||||
*E
|
||||
@@ -36,9 +36,9 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$kValue$1
|
||||
test/_1Kt$kValue$lambda$1
|
||||
+ 2 1.kt
|
||||
test/_1Kt$lParams$1$1
|
||||
test/_1Kt$lParams$1$lambda$1
|
||||
*L
|
||||
1#1,40:1
|
||||
34#2:41
|
||||
@@ -50,7 +50,7 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$kValue$1
|
||||
test/_1Kt$kValue$lambda$1
|
||||
*L
|
||||
1#1,40:1
|
||||
*E
|
||||
@@ -86,7 +86,7 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$lParams$1$1
|
||||
test/_1Kt$lParams$1$lambda$1
|
||||
+ 2 1.kt
|
||||
test/_1Kt
|
||||
*L
|
||||
@@ -95,7 +95,7 @@ test/_1Kt
|
||||
*S KotlinDebug
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$lParams$1$1
|
||||
test/_1Kt$lParams$1$lambda$1
|
||||
*L
|
||||
34#1:41
|
||||
*E
|
||||
@@ -106,9 +106,9 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$kValue$1
|
||||
test/_1Kt$kValue$lambda$1
|
||||
+ 2 1.kt
|
||||
test/_1Kt$lParams$1$1
|
||||
test/_1Kt$lParams$1$lambda$1
|
||||
*L
|
||||
1#1,40:1
|
||||
34#2:41
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ package test
|
||||
//A lot of blank lines [Don't delete]
|
||||
//A lot of blank lines [Don't delete]
|
||||
|
||||
inline fun kValue(crossinline s: () -> String) = { s() + "K" }()
|
||||
inline fun kValue(crossinline s: () -> String): String { val lambda = { s() + "K" }; return lambda() }
|
||||
|
||||
inline fun lParams(initParams: () -> String = {
|
||||
"" + kValue { "O" }
|
||||
|
||||
+2
-2
@@ -25,7 +25,7 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$kValue$1
|
||||
test/_1Kt$kValue$lambda$1
|
||||
+ 2 1.kt
|
||||
test/_1Kt$lParams$1
|
||||
*L
|
||||
@@ -39,7 +39,7 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$kValue$1
|
||||
test/_1Kt$kValue$lambda$1
|
||||
*L
|
||||
1#1,41:1
|
||||
*E
|
||||
|
||||
+3
-3
@@ -25,7 +25,7 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$kValue$1
|
||||
test/_1Kt$kValue$lambda$1
|
||||
+ 2 1.kt
|
||||
test/_1Kt$lParams$1
|
||||
*L
|
||||
@@ -39,7 +39,7 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$kValue$1
|
||||
test/_1Kt$kValue$lambda$1
|
||||
*L
|
||||
1#1,41:1
|
||||
*E
|
||||
@@ -77,7 +77,7 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$kValue$1
|
||||
test/_1Kt$kValue$lambda$1
|
||||
+ 2 1.kt
|
||||
test/_1Kt$lParams$1
|
||||
*L
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ package test
|
||||
//A lot of blank lines [Don't delete]
|
||||
//A lot of blank lines [Don't delete]
|
||||
|
||||
inline fun kValue(crossinline s: () -> String) = { s() + "K" }()
|
||||
inline fun kValue(crossinline s: () -> String): String { val lambda = { s() + "K" }; return lambda() }
|
||||
|
||||
inline fun lParams(initParams: () -> String = {
|
||||
"" + kValue { "O" }
|
||||
|
||||
+2
-2
@@ -25,7 +25,7 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$kValue$1
|
||||
test/_1Kt$kValue$lambda$1
|
||||
+ 2 1.kt
|
||||
test/_1Kt$lParams$1
|
||||
*L
|
||||
@@ -39,7 +39,7 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$kValue$1
|
||||
test/_1Kt$kValue$lambda$1
|
||||
*L
|
||||
1#1,41:1
|
||||
*E
|
||||
|
||||
+3
-3
@@ -25,7 +25,7 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$kValue$1
|
||||
test/_1Kt$kValue$lambda$1
|
||||
+ 2 1.kt
|
||||
test/_1Kt$lParams$1
|
||||
*L
|
||||
@@ -39,7 +39,7 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$kValue$1
|
||||
test/_1Kt$kValue$lambda$1
|
||||
*L
|
||||
1#1,41:1
|
||||
*E
|
||||
@@ -77,7 +77,7 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$kValue$1
|
||||
test/_1Kt$kValue$lambda$1
|
||||
+ 2 1.kt
|
||||
test/_1Kt$lParams$1
|
||||
*L
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
|
||||
package test
|
||||
inline fun inlineFun(capturedParam: String, crossinline lambda: () -> String = { capturedParam }): String {
|
||||
return {
|
||||
val lambda2 = {
|
||||
lambda()
|
||||
}()
|
||||
}; return lambda2()
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
@@ -5,7 +5,7 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$inlineFun$2
|
||||
test/_1Kt$inlineFun$lambda2$1
|
||||
*L
|
||||
1#1,13:1
|
||||
*E
|
||||
@@ -33,13 +33,13 @@ _2Kt
|
||||
test/_1Kt
|
||||
*L
|
||||
1#1,20:1
|
||||
7#2,2:21
|
||||
7#2,4:21
|
||||
*S KotlinDebug
|
||||
*F
|
||||
+ 1 2.kt
|
||||
_2Kt
|
||||
*L
|
||||
18#1:21,2
|
||||
18#1:21,4
|
||||
*E
|
||||
|
||||
SMAP
|
||||
@@ -48,7 +48,7 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$inlineFun$2
|
||||
test/_1Kt$inlineFun$lambda2$1
|
||||
+ 2 1.kt
|
||||
test/_1Kt$inlineFun$1
|
||||
*L
|
||||
|
||||
+2
-2
@@ -8,11 +8,11 @@ inline fun myrun(s: () -> Unit) {
|
||||
}
|
||||
|
||||
inline fun test(crossinline s: () -> Unit) {
|
||||
{
|
||||
val lambda = {
|
||||
val z = 1;
|
||||
myrun(s)
|
||||
val x = 1;
|
||||
}()
|
||||
}; lambda()
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
+4
-4
@@ -5,7 +5,7 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$test$1
|
||||
test/_1Kt$test$lambda$1
|
||||
+ 2 1.kt
|
||||
test/_1Kt
|
||||
*L
|
||||
@@ -14,7 +14,7 @@ test/_1Kt
|
||||
*S KotlinDebug
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$test$1
|
||||
test/_1Kt$test$lambda$1
|
||||
*L
|
||||
13#1:19,3
|
||||
*E
|
||||
@@ -46,7 +46,7 @@ Kotlin
|
||||
*S Kotlin
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$test$1
|
||||
test/_1Kt$test$lambda$1
|
||||
+ 2 1.kt
|
||||
test/_1Kt
|
||||
+ 3 2.kt
|
||||
@@ -59,7 +59,7 @@ _2Kt
|
||||
*S KotlinDebug
|
||||
*F
|
||||
+ 1 1.kt
|
||||
test/_1Kt$test$1
|
||||
test/_1Kt$test$lambda$1
|
||||
*L
|
||||
13#1:19,2
|
||||
13#1:23
|
||||
|
||||
@@ -14,7 +14,7 @@ inline fun test(crossinline foo: String.() -> String): String {
|
||||
|
||||
{
|
||||
cycle.foo()
|
||||
}()
|
||||
}.let { it() }
|
||||
|
||||
|
||||
return cycle.foo()
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user