Eugenio
11/29/2015, 3:03 PMinline fun <T, R> using(input: T, f: (T) -> R): R = f(input)
fun main(args: Array<String>) {
val input: Any? = null
val f: (Any?) -> String = {
when (it) {
is String -> it
else -> throw RuntimeException()
}
}
// works
val test1: String = using(input, f)
// Error:(18, 24) Type inference failed. Expected type mismatch: inferred type is kotlin.Any? but kotlin.String was expected
val test2: String = using(input) {
when (it) {
is String -> it
else -> throw RuntimeException()
}
}
}