// MODULE: m1 // FILE: m1.kt fun interface I { fun f(): String } fun rn(i: I) = i.f() inline fun rnInline(i: I) = i.f() inline fun rnInlineCtor(s: String) = I { s + ".m1" } // MODULE: m2(m1) // FILE: m2.kt fun rn2(f: () -> String) = rn(f) inline fun rn2Inline(noinline f: () -> String) = rnInline(f) inline fun rnInlineCtorProxy(s: String) = rnInlineCtor(s + ".m2").f() fun interface II { fun f(): String } // MODULE: main(m2) // FILE: main.kt fun id(i: II) = i fun box(): String { if (id { "1" }.f() != "1") return "fail 1" if (II { "2" }.f() != "2") return "fail 2" if (rnInlineCtorProxy("3") != "3.m2.m1") return "fail 3" if (rn2Inline { "inline" } != "inline") return "fail 4" return rn2 { "OK" } }