// NO_CHECK_LAMBDA_INLINING
// FILE: 1.kt

package test

inline fun test(a: String, b: String, c: () -> String): String {
    return a + b + c();
}

// FILE: 2.kt

import test.*

var res = ""

fun String.id() = this

val receiver: String
    get() {
        res += "L"
        return "L"
    }


fun box(): String {
    res = ""
    var call = test(b = { res += "K"; "K" }(), a = { res += "O"; "O" }(), c = receiver::id)
    if (res != "KOL" || call != "OKL") return "fail 1: $res != KOL or $call != OKL"

    res = ""
    call = test(b = { res += "K"; "K" }(), c = receiver::id, a = { res += "O"; "O" }())
    if (res != "KLO" || call != "OKL") return "fail 2: $res != KLO or $call != OKL"


    res = ""
    call = test(c = receiver::id, b = { res += "K"; "K" }(), a = { res += "O"; "O" }())
    if (res != "LKO" || call != "OKL") return "fail 3: $res != LKO or $call != OKL"

    return "OK"
}
