blob: 4f8861f7d51e9aff4fb5aae207424429d84861d7 [file]
// NO_CHECK_LAMBDA_INLINING
// KJS_WITH_FULL_RUNTIME
// See KT-11711
// FILE: lib.kt
package foo
import kotlin.test.*
inline fun <T> buzz(x: T): T {
log("buzz($x)")
return x
}
// CHECK_NOT_CALLED: buzz
private var LOG = ""
fun log(string: String) {
LOG += "$string;"
}
fun pullLog(): String {
val string = LOG
LOG = ""
return string
}
val g: Any?
get() {
log("g.get")
return "c"
}
inline fun foo(): Any? {
log("foo()")
return g;
}
inline fun bar(): Any? {
return g;
}
inline fun baz(): Any? {
return log("baz()");
}
inline fun boo(a: Any?): Any? {
return log("boo()");
}
// FILE: main.kt
package foo
import kotlin.test.*
// CHECK_NOT_CALLED: buzz
fun <T> fizz(x: T): T {
log("fizz($x)")
return x
}
interface A {
val b: B
}
interface B {
fun c(a: Any?)
}
val a: A
get() {
log("a.get")
return object : A {
override val b: B
get() {
log("b.get")
return object : B {
override fun c(a: Any?) {
log("c()")
}
}
}
}
}
fun box(): String {
log("--1--")
a.b.c(g)
log("--2--")
a.b.c(foo())
log("--3--")
a.b.c(bar())
log("--4--")
a.b.c(baz())
log("--5--")
a.b.c(boo(g))
assertEquals("""--1--
a.get
b.get
g.get
c()
--2--
a.get
b.get
foo()
g.get
c()
--3--
a.get
b.get
g.get
c()
--4--
a.get
b.get
baz()
c()
--5--
a.get
b.get
g.get
boo()
c()
""", pullLog().replace(';', '\n'))
return "OK"
}