// NO_CHECK_LAMBDA_INLINING

// FILE: 1.kt
package test

inline fun call(crossinline s: () -> String): String {
    return {
        s()
    }.let { it() }
}

open class Base {

    protected open fun method(): String = "O"

    protected open val prop = "K"
}

// FILE: 2.kt
import test.*

class A : Base() {

    override fun method() = "fail method"

    override val prop = "fail property"

    fun test1(): String {
        return call {
            super.method() + super.prop
        }
    }

    fun test2(): String {
        return call {
            call {
                super.method() + super.prop
            }
        }
    }
}

fun box(): String {
    val a = A()
    if (a.test1() != "OK") return "fail 1: ${a.test1()}"
    return a.test2()
}
