mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-08 15:53:19 +00:00
36 lines
796 B
Kotlin
Vendored
36 lines
796 B
Kotlin
Vendored
// FILE: Promise.java
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
interface Consumer<T> {
|
|
void consume(T t);
|
|
}
|
|
|
|
public abstract class Promise<T> {
|
|
@NotNull
|
|
public abstract Promise<T> done(@NotNull Consumer<? super T> done);
|
|
}
|
|
|
|
// FILE: 1.kt
|
|
class User {
|
|
fun use(promise: Promise<*>): Promise<*> {
|
|
promise.done { }
|
|
return promise
|
|
}
|
|
}
|
|
|
|
fun box(): String {
|
|
var result = ""
|
|
User().use(
|
|
object : Promise<CharSequence>() {
|
|
override fun done(x: Consumer<in CharSequence?>): Promise<CharSequence> {
|
|
result = x.javaClass.genericInterfaces[0].toString()
|
|
return this
|
|
}
|
|
}
|
|
)
|
|
|
|
if (result != "Consumer<java.lang.Object>") return "fail: $result"
|
|
|
|
return "OK"
|
|
}
|