FIR: Fix case when smartcast receiver is used for call to private method

^KT-54432 Fixed
This commit is contained in:
Denis.Zharkov
2022-05-27 16:07:38 +03:00
committed by teamcity
parent ccc32b4e3b
commit c1904004c4
20 changed files with 306 additions and 27 deletions
@@ -0,0 +1,25 @@
// SKIP_TXT
// ISSUE: KT-52543
abstract class A {
fun foo(a: Any) {
if (a is A) {
a.prv()
if (a is B) {
a.<!INVISIBLE_REFERENCE!>prv<!>()
}
}
if (a is B) {
a.<!INVISIBLE_REFERENCE!>prv<!>()
if (<!USELESS_IS_CHECK!>a is A<!>) {
a.<!INVISIBLE_REFERENCE!>prv<!>()
}
}
}
private fun prv() {}
}
open class B : A()
@@ -0,0 +1,25 @@
// SKIP_TXT
// ISSUE: KT-52543
abstract class A {
fun foo(a: Any) {
if (a is A) {
<!DEBUG_INFO_SMARTCAST!>a<!>.prv()
if (a is B) {
<!DEBUG_INFO_SMARTCAST!>a<!>.prv()
}
}
if (a is B) {
<!DEBUG_INFO_SMARTCAST!>a<!>.<!INVISIBLE_MEMBER!>prv<!>()
if (<!USELESS_IS_CHECK!>a is A<!>) {
<!DEBUG_INFO_SMARTCAST!>a<!>.<!INVISIBLE_MEMBER!>prv<!>()
}
}
}
private fun prv() {}
}
open class B : A()
@@ -0,0 +1,15 @@
// FIR_IDENTICAL
// SKIP_TXT
abstract class A {
fun foo(a: A) {
a.prv()
if (a is B) {
a.prv()
}
}
private fun prv() {}
}
abstract class B : A()