23 lines
360 B
Kotlin
Vendored
23 lines
360 B
Kotlin
Vendored
// !LANGUAGE: +ContextReceivers
|
|
// TARGET_BACKEND: JVM_IR
|
|
|
|
interface Canvas {
|
|
val suffix: String
|
|
}
|
|
|
|
interface Shape {
|
|
context(Canvas)
|
|
fun draw(): String
|
|
}
|
|
|
|
class Circle : Shape {
|
|
context(Canvas)
|
|
override fun draw() = "OK" + suffix
|
|
}
|
|
|
|
object MyCanvas : Canvas {
|
|
override val suffix = ""
|
|
}
|
|
|
|
fun box() = with(MyCanvas) { Circle().draw() }
|