[FIR] Check is for impossibility
^KT-58203 Fixed ^KT-62646
This commit is contained in:
committed by
Space Team
parent
92d8da621e
commit
88ff93df7f
+1
-1
@@ -18,7 +18,7 @@ fun foo() : Int {
|
||||
val s = ""
|
||||
val x = 1
|
||||
when (x) {
|
||||
is String -> 1
|
||||
<!USELESS_IS_CHECK!>is String<!> -> 1
|
||||
<!USELESS_IS_CHECK!>!is Int<!> -> 1
|
||||
<!USELESS_IS_CHECK!>is Any?<!> -> 1
|
||||
<!USELESS_IS_CHECK!>is Any<!> -> 1
|
||||
|
||||
+2
-2
@@ -39,8 +39,8 @@ fun testWithSubject_ok(x: Boolean, y: Boolean?, any: Any, z: Boolean) {
|
||||
y ?: x -> {}
|
||||
x in x -> {}
|
||||
x !in x -> {}
|
||||
x is String -> {}
|
||||
x !is String -> {}
|
||||
<!USELESS_IS_CHECK!>x is String<!> -> {}
|
||||
<!USELESS_IS_CHECK!>x !is String<!> -> {}
|
||||
x < x -> {}
|
||||
x > x -> {}
|
||||
x <= x -> {}
|
||||
|
||||
+8
-8
@@ -57,8 +57,8 @@ fun testWithSubject_bad_1(x: A) {
|
||||
when (x) {
|
||||
<!CONFUSING_BRANCH_CONDITION_ERROR!>x in x<!> -> {}
|
||||
<!CONFUSING_BRANCH_CONDITION_ERROR!>x !in x<!> -> {}
|
||||
<!CONFUSING_BRANCH_CONDITION_ERROR!>x is String<!> -> {}
|
||||
<!CONFUSING_BRANCH_CONDITION_ERROR!>x !is String<!> -> {}
|
||||
<!CONFUSING_BRANCH_CONDITION_ERROR, USELESS_IS_CHECK!>x is String<!> -> {}
|
||||
<!CONFUSING_BRANCH_CONDITION_ERROR, USELESS_IS_CHECK!>x !is String<!> -> {}
|
||||
<!CONFUSING_BRANCH_CONDITION_ERROR!>x < x<!> -> {}
|
||||
<!CONFUSING_BRANCH_CONDITION_ERROR!>x > x<!> -> {}
|
||||
<!CONFUSING_BRANCH_CONDITION_ERROR!>x <= x<!> -> {}
|
||||
@@ -72,8 +72,8 @@ fun testWithSubject_bad_1(x: A) {
|
||||
when (x) {
|
||||
(x in x) -> {}
|
||||
(x !in x) -> {}
|
||||
(x is String) -> {}
|
||||
(x !is String) -> {}
|
||||
(<!USELESS_IS_CHECK!>x is String<!>) -> {}
|
||||
(<!USELESS_IS_CHECK!>x !is String<!>) -> {}
|
||||
(x < x) -> {}
|
||||
(x > x) -> {}
|
||||
(x <= x) -> {}
|
||||
@@ -161,8 +161,8 @@ fun testWithRange_bad_1(x: A) {
|
||||
when (x) {
|
||||
in <!CONFUSING_BRANCH_CONDITION_ERROR!>x in x<!> -> {}
|
||||
in <!CONFUSING_BRANCH_CONDITION_ERROR!>x !in x<!> -> {}
|
||||
in <!CONFUSING_BRANCH_CONDITION_ERROR!>x is String<!> -> {}
|
||||
in <!CONFUSING_BRANCH_CONDITION_ERROR!>x !is String<!> -> {}
|
||||
in <!CONFUSING_BRANCH_CONDITION_ERROR, USELESS_IS_CHECK!>x is String<!> -> {}
|
||||
in <!CONFUSING_BRANCH_CONDITION_ERROR, USELESS_IS_CHECK!>x !is String<!> -> {}
|
||||
in <!CONFUSING_BRANCH_CONDITION_ERROR!>x < x<!> -> {}
|
||||
in <!CONFUSING_BRANCH_CONDITION_ERROR!>x > x<!> -> {}
|
||||
in <!CONFUSING_BRANCH_CONDITION_ERROR!>x <= x<!> -> {}
|
||||
@@ -176,8 +176,8 @@ fun testWithRange_bad_1(x: A) {
|
||||
when (x) {
|
||||
in (x in x) -> {}
|
||||
in (x !in x) -> {}
|
||||
in (x is String) -> {}
|
||||
in (x !is String) -> {}
|
||||
in (<!USELESS_IS_CHECK!>x is String<!>) -> {}
|
||||
in (<!USELESS_IS_CHECK!>x !is String<!>) -> {}
|
||||
in (x < x) -> {}
|
||||
in (x > x) -> {}
|
||||
in (x <= x) -> {}
|
||||
|
||||
+8
-8
@@ -57,8 +57,8 @@ fun testWithSubject_bad_1(x: A) {
|
||||
when (x) {
|
||||
<!CONFUSING_BRANCH_CONDITION_WARNING!>x in x<!> -> {}
|
||||
<!CONFUSING_BRANCH_CONDITION_WARNING!>x !in x<!> -> {}
|
||||
<!CONFUSING_BRANCH_CONDITION_WARNING!>x is String<!> -> {}
|
||||
<!CONFUSING_BRANCH_CONDITION_WARNING!>x !is String<!> -> {}
|
||||
<!CONFUSING_BRANCH_CONDITION_WARNING, USELESS_IS_CHECK!>x is String<!> -> {}
|
||||
<!CONFUSING_BRANCH_CONDITION_WARNING, USELESS_IS_CHECK!>x !is String<!> -> {}
|
||||
<!CONFUSING_BRANCH_CONDITION_WARNING!>x < x<!> -> {}
|
||||
<!CONFUSING_BRANCH_CONDITION_WARNING!>x > x<!> -> {}
|
||||
<!CONFUSING_BRANCH_CONDITION_WARNING!>x <= x<!> -> {}
|
||||
@@ -72,8 +72,8 @@ fun testWithSubject_bad_1(x: A) {
|
||||
when (x) {
|
||||
(x in x) -> {}
|
||||
(x !in x) -> {}
|
||||
(x is String) -> {}
|
||||
(x !is String) -> {}
|
||||
(<!USELESS_IS_CHECK!>x is String<!>) -> {}
|
||||
(<!USELESS_IS_CHECK!>x !is String<!>) -> {}
|
||||
(x < x) -> {}
|
||||
(x > x) -> {}
|
||||
(x <= x) -> {}
|
||||
@@ -161,8 +161,8 @@ fun testWithRange_bad_1(x: A) {
|
||||
when (x) {
|
||||
in <!CONFUSING_BRANCH_CONDITION_WARNING!>x in x<!> -> {}
|
||||
in <!CONFUSING_BRANCH_CONDITION_WARNING!>x !in x<!> -> {}
|
||||
in <!CONFUSING_BRANCH_CONDITION_WARNING!>x is String<!> -> {}
|
||||
in <!CONFUSING_BRANCH_CONDITION_WARNING!>x !is String<!> -> {}
|
||||
in <!CONFUSING_BRANCH_CONDITION_WARNING, USELESS_IS_CHECK!>x is String<!> -> {}
|
||||
in <!CONFUSING_BRANCH_CONDITION_WARNING, USELESS_IS_CHECK!>x !is String<!> -> {}
|
||||
in <!CONFUSING_BRANCH_CONDITION_WARNING!>x < x<!> -> {}
|
||||
in <!CONFUSING_BRANCH_CONDITION_WARNING!>x > x<!> -> {}
|
||||
in <!CONFUSING_BRANCH_CONDITION_WARNING!>x <= x<!> -> {}
|
||||
@@ -176,8 +176,8 @@ fun testWithRange_bad_1(x: A) {
|
||||
when (x) {
|
||||
in (x in x) -> {}
|
||||
in (x !in x) -> {}
|
||||
in (x is String) -> {}
|
||||
in (x !is String) -> {}
|
||||
in (<!USELESS_IS_CHECK!>x is String<!>) -> {}
|
||||
in (<!USELESS_IS_CHECK!>x !is String<!>) -> {}
|
||||
in (x < x) -> {}
|
||||
in (x > x) -> {}
|
||||
in (x <= x) -> {}
|
||||
|
||||
+12
-12
@@ -14,29 +14,29 @@ fun foo(a: A) {
|
||||
if (a !is B) return
|
||||
|
||||
when (a) {
|
||||
is A.A1 -> ""
|
||||
is A.A2 -> "v"
|
||||
<!USELESS_IS_CHECK!>is A.A1<!> -> ""
|
||||
<!USELESS_IS_CHECK!>is A.A2<!> -> "v"
|
||||
}.length
|
||||
|
||||
when (a) {
|
||||
is A.A1 -> ""
|
||||
is A.A2 -> "v"
|
||||
<!USELESS_IS_CHECK!>is A.A1<!> -> ""
|
||||
<!USELESS_IS_CHECK!>is A.A2<!> -> "v"
|
||||
}.length // OK
|
||||
|
||||
when (a) {
|
||||
is A.A1 -> ""
|
||||
is A.A2 -> "v"
|
||||
is B.B1 -> "..." // should be warning: unreachable code
|
||||
<!USELESS_IS_CHECK!>is A.A1<!> -> ""
|
||||
<!USELESS_IS_CHECK!>is A.A2<!> -> "v"
|
||||
<!USELESS_IS_CHECK!>is B.B1<!> -> "..." // should be warning: unreachable code
|
||||
}.length // OK
|
||||
|
||||
when (a) {
|
||||
is A.A1 -> ""
|
||||
is B.B1 -> "..."
|
||||
is A.A2 -> "v"
|
||||
<!USELESS_IS_CHECK!>is A.A1<!> -> ""
|
||||
<!USELESS_IS_CHECK!>is B.B1<!> -> "..."
|
||||
<!USELESS_IS_CHECK!>is A.A2<!> -> "v"
|
||||
}.length // OK
|
||||
|
||||
<!NO_ELSE_IN_WHEN!>when<!> (a) {
|
||||
is A.A1 -> ""
|
||||
is B.B1 -> "..."
|
||||
<!USELESS_IS_CHECK!>is A.A1<!> -> ""
|
||||
<!USELESS_IS_CHECK!>is B.B1<!> -> "..."
|
||||
}.length
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
// SKIP_TXT
|
||||
// FIR_IDENTICAL
|
||||
// SKIP_TXT
|
||||
// !CHECK_TYPE
|
||||
|
||||
sealed class KtClassifierSymbol
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ fun testSimpleValInWhenSubject() {
|
||||
|
||||
fun testValWithoutInitializerWhenSubject() {
|
||||
when (<!ILLEGAL_DECLARATION_IN_WHEN_SUBJECT!>val y: Any<!>) {
|
||||
<!EXPECTED_CONDITION!>is String<!> -> <!UNINITIALIZED_VARIABLE!>y<!>.<!UNRESOLVED_REFERENCE!>length<!>
|
||||
<!EXPECTED_CONDITION, USELESS_IS_CHECK!>is String<!> -> <!UNINITIALIZED_VARIABLE!>y<!>.<!UNRESOLVED_REFERENCE!>length<!>
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user