// !LANGUAGE: +InlineClasses // WITH_STDLIB // MODULE: lib // FILE: A.kt package z interface IFoo { fun foo(): String } inline class Z(val s: String) : IFoo { constructor(i: Int) : this(i.toString()) override fun foo(): String = s fun bar() = s inline fun run(lambda: (String) -> T) = lambda(s) companion object { fun z(i: Int) = Z(i) } } // MODULE: main(lib) // FILE: B.kt import z.* fun test(z: Z) { if (z.foo() != "1234") throw AssertionError() if (z.bar() != "1234") throw AssertionError() if (z.run { it } != "1234") throw AssertionError() if (listOf(z)[0].s != "1234") throw AssertionError() } fun box(): String { test(Z("1234")) test(Z(1234)) test(Z.z(1234)) return "OK" }