43 lines
762 B
Kotlin
Vendored
43 lines
762 B
Kotlin
Vendored
// !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 <T> 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"
|
|
}
|