Hey, this snippet fails to compile with 'expected ...
# announcements
b
Hey, this snippet fails to compile with 'expected Out<T> found [More specific subtype]'
Copy code
sealed class In<T>
data class InInt(val v: Int) : In<Int>()
data class InStr(val v: String) : In<String>()

sealed class Out<T>
data class OutInt(val v: Int) : Out<Int>()
data class OutStr(val v: String) : Out<String>()

fun <T> testTypeInference(i: In<T>) : Out<T> = when(i) {
    is InInt -> OutInt(i.v + 1)
    is InStr -> OutStr("Hello!" + i.v)
}