semoro
09/23/2016, 8:54 AMinterface GenericInterface<T>
class GenericImpl<T>(t: T) : GenericInterface<T>
fun GenericImpl(t: Nothing): Nothing {
return t
}
fun <T> genericConsumer(thing: GenericInterface<T>) {
}
fun genericConsumer(thing: Nothing) {
}
fun compileMe() {
genericConsumer(GenericImpl("hello"))
genericConsumer(GenericImpl(throw RuntimeException()))
}
fun Any.genericExtension(thing: Nothing) {
}
fun <T> T.genericExtension(thing: GenericInterface<T>) {
}
fun compileMe2() {
"world".genericExtension(GenericImpl("hello"))
"world".genericExtension(GenericImpl(2))
"world".genericExtension(GenericImpl(throw RuntimeException()))
}