Is this expected or a bug in Kotlin? ``` open clas...
# announcements
g
Is this expected or a bug in Kotlin?
Copy code
open class ClassA<T> {
    open operator fun invoke(): T? = null
}

class ClassB<T : Any>(private val value: T) : ClassA<T>() {
    override operator fun invoke(): T = value
}

val foo: ClassA<String> = ClassB("123")

if (foo is ClassB) {
    // This smart casts to String
    println(foo.invoke().reversed())
    // This doesn't and is still String?
    //  println(foo().reversed())
}