| // WITH_STDLIB |
| // The test depends on kotlin.jvm package |
| // TARGET_BACKEND: JVM |
| // MODULE: lib |
| // FILE: b.kt |
| |
| package b |
| |
| import a.* |
| |
| public object MstLogicAlgebra1 : LogicAlgebra1<StringSymbol1> { |
| override fun const(boolean: Boolean): StringSymbol1 = if (boolean) { |
| LogicAlgebra1.TRUE |
| } else { |
| LogicAlgebra1.FALSE |
| } |
| } |
| |
| // FILE: a.kt |
| |
| package a |
| |
| import kotlin.properties.ReadOnlyProperty |
| |
| public interface LogicAlgebra1<T : Any> { |
| |
| public fun const(boolean: Boolean): T |
| |
| public companion object { |
| public val TRUE: StringSymbol1 by symbol1 |
| public val FALSE: StringSymbol1 by symbol1 |
| } |
| } |
| |
| public val symbol1: ReadOnlyProperty<Any?, StringSymbol1> = ReadOnlyProperty { _, property -> |
| StringSymbol1(property.name) |
| } |
| |
| @JvmInline |
| public value class StringSymbol1(public val identity: String) |
| |
| // MODULE: main(lib) |
| // FILE: c.kt |
| |
| import b.* |
| |
| fun box(): String { |
| MstLogicAlgebra1.run { const(true) } |
| return "OK" |
| } |