[FIR] Check is for impossibility

^KT-58203 Fixed
^KT-62646
This commit is contained in:
Nikolay Lunyak
2024-02-29 15:39:33 +02:00
committed by Space Team
parent 92d8da621e
commit 88ff93df7f
42 changed files with 110 additions and 83 deletions
@@ -11,7 +11,7 @@ fun foo(a: A) {
if (a is B) {
if (a is C) {
val t = when (a) {
is CC -> "CC"
<!USELESS_IS_CHECK!>is CC<!> -> "CC"
}
}
}
@@ -21,7 +21,7 @@ fun foo2(a: A) {
if (a is C) {
if (a is B) {
val t = when (a) {
is CC -> "CC"
<!USELESS_IS_CHECK!>is CC<!> -> "CC"
}
}
}
@@ -25,7 +25,7 @@ fun test() {
b.<!UNRESOLVED_REFERENCE!>length<!> // error
c.length // OK, since `c` is aliased to `a`
}
if (b is String) {
if (<!USELESS_IS_CHECK!>b is String<!>) {
a.<!UNRESOLVED_REFERENCE!>length<!> // error
c.<!UNRESOLVED_REFERENCE!>length<!> // error
}
@@ -35,11 +35,11 @@ fun test() {
}
a = 2 // break `c` -> `a`
if (a is String) {
if (<!USELESS_IS_CHECK!>a is String<!>) {
b.<!UNRESOLVED_REFERENCE!>length<!> // error
c.<!UNRESOLVED_REFERENCE!>length<!> // error
}
if (b is String) {
if (<!USELESS_IS_CHECK!>b is String<!>) {
a.<!UNRESOLVED_REFERENCE!>length<!> // error
c.<!UNRESOLVED_REFERENCE!>length<!> // error
}