573188bdc4
Currently FirThisReceiverExpression of instance methods are translated to references of the class' thisReceiver, not the method's dispatch receiver, which causes problems with IrFrameMap::typeOf, as the class' thisReceiver is not in the typeMap. This commit translates non-qualified "this" references of instance methods to references of the methods' dispatch receiver.
17 lines
317 B
Kotlin
Vendored
17 lines
317 B
Kotlin
Vendored
open class SuperFoo {
|
|
public fun bar(): String {
|
|
if (this is Foo) {
|
|
superFoo() // Smart cast
|
|
return baz() // Cannot be cast
|
|
}
|
|
return baz()
|
|
}
|
|
|
|
public fun baz() = "OK"
|
|
}
|
|
|
|
class Foo : SuperFoo() {
|
|
public fun superFoo() {}
|
|
}
|
|
|
|
fun box(): String = Foo().bar() |