[FE 1.0] Report USELESS_IS_CHECK if is expression is always false
^KT-47684 Fixed
This commit is contained in:
committed by
teamcityserver
parent
785e2f862c
commit
7b5a5f5682
@@ -0,0 +1,69 @@
|
||||
abstract class A
|
||||
abstract class B : A()
|
||||
|
||||
abstract class AS
|
||||
abstract class BS : AS()
|
||||
|
||||
interface AI
|
||||
interface BI : AI
|
||||
|
||||
fun test_1(a: A) {
|
||||
<!USELESS_IS_CHECK("true")!>a is A<!> // always true
|
||||
a is B
|
||||
|
||||
<!USELESS_IS_CHECK("false")!>a is AS<!> // always false
|
||||
<!USELESS_IS_CHECK("false")!>a is BS<!> // always false
|
||||
|
||||
a is AI
|
||||
a is BI
|
||||
}
|
||||
|
||||
fun test_2(a: A) {
|
||||
<!USELESS_IS_CHECK("false")!>a !is A<!> // always false
|
||||
a !is B
|
||||
|
||||
<!USELESS_IS_CHECK("true")!>a !is AS<!> // always true
|
||||
<!USELESS_IS_CHECK("true")!>a !is BS<!> // always true
|
||||
|
||||
a !is AI
|
||||
a !is BI
|
||||
}
|
||||
|
||||
fun test_3(a: Any) {
|
||||
if (a is A) {
|
||||
<!USELESS_IS_CHECK("true")!>a is A<!> // always true
|
||||
a is B
|
||||
|
||||
<!USELESS_IS_CHECK("false")!>a is AS<!> // always false
|
||||
<!USELESS_IS_CHECK("false")!>a is BS<!> // always false
|
||||
|
||||
a is AI
|
||||
a is BI
|
||||
}
|
||||
}
|
||||
|
||||
fun test_4(a: A) {
|
||||
when (a) {
|
||||
<!USELESS_IS_CHECK("true")!>is A<!> -> {} // always true
|
||||
is B -> {}
|
||||
|
||||
<!USELESS_IS_CHECK("false")!>is AS<!> -> {} // always false
|
||||
<!USELESS_IS_CHECK("false")!>is BS<!> -> {} // always false
|
||||
|
||||
is AI -> {}
|
||||
is BI -> {}
|
||||
}
|
||||
}
|
||||
|
||||
fun test_5(a: A) {
|
||||
when (a) {
|
||||
<!USELESS_IS_CHECK("false")!>!is A<!> -> {} // always false
|
||||
!is B -> {}
|
||||
|
||||
<!USELESS_IS_CHECK("true")!>!is AS<!> -> {} // always true
|
||||
!is BS -> {} // here a may has type AS (by data flow)
|
||||
|
||||
!is AI -> {}
|
||||
!is BI -> {}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user