blob: 517c3034587aec6c530ae3c7814ad8f07b2479bc [file]
// TARGET_BACKEND: JVM_IR
// FULL_JDK
// ISSUE: KT-79816
// FILE: JavaSupplier.java
public interface JavaSupplier<V> {
public V get();
}
// FILE: main.kt
import java.util.function.Supplier
fun interface KotlinSupplier<V> {
fun get(): V
}
class KotlinSupplierProxy<V>(supplier: KotlinSupplier<V>) : KotlinSupplier<V> by supplier
class JavaManualSupplierProxy<V>(supplier: JavaSupplier<V>) : JavaSupplier<V> by supplier
class JavaStdlibSupplierProxy<V>(supplier: Supplier<V>) : Supplier<V> by supplier
fun requireNull(x: Any?) {
if (x != null) {
throw IllegalStateException("Value is not null: $x")
}
}
fun box(): String {
val nullKotlinSupplier = KotlinSupplier<Boolean?> { null }
val kotlinProxy = KotlinSupplierProxy(nullKotlinSupplier)
requireNull(kotlinProxy.get())
val nullManualJavaSupplier = JavaSupplier<Boolean?> { null }
val javaManualProxy = JavaManualSupplierProxy(nullManualJavaSupplier)
requireNull(javaManualProxy.get())
val nullJavaStdlibSupplier = Supplier<Boolean?> { null }
val javaStdlibProxy = JavaStdlibSupplierProxy(nullJavaStdlibSupplier)
requireNull(javaStdlibProxy.get())
return "OK"
}