blob: b4f1eef3ddd626be3a29da21ef68400476bd444e [file] [log] [blame]
// TARGET_BACKEND: JVM
// MODULE: lib
// FILE: A.kt
package a
interface IrSymbol {
val owner: Any
}
interface IrFunction
interface IrSimpleFunction : IrFunction {
val name: String
}
interface IrFunctionSymbol : IrSymbol {
override val owner: IrFunction
}
interface IrBindableSymbol<B : Any> : IrSymbol {
override val owner: B
}
interface IrSimpleFunctionSymbol : IrFunctionSymbol, IrBindableSymbol<IrSimpleFunction>
// MODULE: main(lib)
// FILE: B.kt
import a.*
fun foo(x: IrSimpleFunctionSymbol): String {
return x.owner.name
}
fun box(): String {
return foo(object : IrSimpleFunctionSymbol {
override val owner: IrSimpleFunction
get() = object : IrSimpleFunction {
override val name: String
get() = "OK"
}
})
}