[FIR] Fix missing USELESS_CAST
`FirUselessTypeOperationCallChecker` always checks exact types matching for `as` operator Simplify code of cast checker and utils ^KT-56629 Fixed ^KT-56615 Fixed ^KT-59820 Fixed
This commit is contained in:
committed by
Space Team
parent
2f8026f335
commit
d50c6f1b6d
@@ -15,7 +15,7 @@ fun test(x: Int?) {
|
||||
foo(x as? Number)
|
||||
|
||||
if (x is Int) {
|
||||
val b = x as? Int
|
||||
val b = x <!USELESS_CAST!>as? Int<!>
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
fun asCall() {
|
||||
1 <!USELESS_CAST!>as Int<!>
|
||||
1 <!CAST_NEVER_SUCCEEDS!>as<!> Byte
|
||||
1 <!CAST_NEVER_SUCCEEDS!>as<!> Short
|
||||
1 <!CAST_NEVER_SUCCEEDS!>as<!> Long
|
||||
1 <!CAST_NEVER_SUCCEEDS!>as<!> Char
|
||||
1 <!CAST_NEVER_SUCCEEDS!>as<!> Double
|
||||
1 <!CAST_NEVER_SUCCEEDS!>as<!> Float
|
||||
|
||||
1.0 <!CAST_NEVER_SUCCEEDS!>as<!> Int
|
||||
1.0 <!CAST_NEVER_SUCCEEDS!>as<!> Byte
|
||||
1.0 <!CAST_NEVER_SUCCEEDS!>as<!> Short
|
||||
1.0 <!CAST_NEVER_SUCCEEDS!>as<!> Long
|
||||
1.0 <!CAST_NEVER_SUCCEEDS!>as<!> Char
|
||||
1.0 <!USELESS_CAST!>as Double<!>
|
||||
1.0 <!CAST_NEVER_SUCCEEDS!>as<!> Float
|
||||
|
||||
1f <!CAST_NEVER_SUCCEEDS!>as<!> Int
|
||||
1f <!CAST_NEVER_SUCCEEDS!>as<!> Byte
|
||||
1f <!CAST_NEVER_SUCCEEDS!>as<!> Short
|
||||
1f <!CAST_NEVER_SUCCEEDS!>as<!> Long
|
||||
1f <!CAST_NEVER_SUCCEEDS!>as<!> Char
|
||||
1f <!CAST_NEVER_SUCCEEDS!>as<!> Double
|
||||
1f <!USELESS_CAST!>as Float<!>
|
||||
}
|
||||
|
||||
fun asSafe() {
|
||||
1 as? Int
|
||||
1 <!CAST_NEVER_SUCCEEDS!>as?<!> Byte
|
||||
1 <!CAST_NEVER_SUCCEEDS!>as?<!> Short
|
||||
1 <!CAST_NEVER_SUCCEEDS!>as?<!> Long
|
||||
1 <!CAST_NEVER_SUCCEEDS!>as?<!> Char
|
||||
1 <!CAST_NEVER_SUCCEEDS!>as?<!> Double
|
||||
1 <!CAST_NEVER_SUCCEEDS!>as?<!> Float
|
||||
|
||||
1.0 <!CAST_NEVER_SUCCEEDS!>as?<!> Int
|
||||
1.0 <!CAST_NEVER_SUCCEEDS!>as?<!> Byte
|
||||
1.0 <!CAST_NEVER_SUCCEEDS!>as?<!> Short
|
||||
1.0 <!CAST_NEVER_SUCCEEDS!>as?<!> Long
|
||||
1.0 <!CAST_NEVER_SUCCEEDS!>as?<!> Char
|
||||
1.0 as? Double
|
||||
1.0 <!CAST_NEVER_SUCCEEDS!>as?<!> Float
|
||||
|
||||
1f <!CAST_NEVER_SUCCEEDS!>as?<!> Int
|
||||
1f <!CAST_NEVER_SUCCEEDS!>as?<!> Byte
|
||||
1f <!CAST_NEVER_SUCCEEDS!>as?<!> Short
|
||||
1f <!CAST_NEVER_SUCCEEDS!>as?<!> Long
|
||||
1f <!CAST_NEVER_SUCCEEDS!>as?<!> Char
|
||||
1f <!CAST_NEVER_SUCCEEDS!>as?<!> Double
|
||||
1f as? Float
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
fun asCall() {
|
||||
1 <!USELESS_CAST!>as Int<!>
|
||||
1 <!CAST_NEVER_SUCCEEDS!>as<!> Byte
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
// ISSUE: KT-56629, KT-56615
|
||||
|
||||
class Klass
|
||||
fun foo(arg: Klass) {
|
||||
arg <!USELESS_CAST!>as Klass<!>
|
||||
arg <!USELESS_CAST!>as? Klass<!>
|
||||
}
|
||||
|
||||
fun test_1(a: Any?) {
|
||||
(a as String?)!!
|
||||
a.length
|
||||
(a <!USELESS_CAST!>as? String<!>)!!
|
||||
a.length
|
||||
}
|
||||
|
||||
fun test_3(a: Any?) {
|
||||
a as String
|
||||
a <!USELESS_CAST!>as String<!>
|
||||
}
|
||||
|
||||
fun test_4(a: Any?) {
|
||||
a as String
|
||||
a <!USELESS_CAST!>as? String<!>
|
||||
}
|
||||
|
||||
fun test_5(a: Any?) {
|
||||
(a as? String)!!
|
||||
a.length
|
||||
(a <!USELESS_CAST!>as String<!>)
|
||||
}
|
||||
|
||||
fun test_6(a: Any?) {
|
||||
(a as? String)!!
|
||||
a.length
|
||||
(a <!USELESS_CAST!>as? String<!>)
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
// ISSUE: KT-56629, KT-56615
|
||||
|
||||
class Klass
|
||||
fun foo(arg: Klass) {
|
||||
arg <!USELESS_CAST!>as Klass<!>
|
||||
arg <!USELESS_CAST!>as? Klass<!>
|
||||
}
|
||||
|
||||
fun test_1(a: Any?) {
|
||||
(a as String?)!!
|
||||
a<!UNSAFE_CALL!>.<!>length
|
||||
(a <!USELESS_CAST!>as? String<!>)!!
|
||||
<!DEBUG_INFO_SMARTCAST!>a<!>.length
|
||||
}
|
||||
|
||||
fun test_3(a: Any?) {
|
||||
a as String
|
||||
a <!USELESS_CAST!>as String<!>
|
||||
}
|
||||
|
||||
fun test_4(a: Any?) {
|
||||
a as String
|
||||
a <!USELESS_CAST!>as? String<!>
|
||||
}
|
||||
|
||||
fun test_5(a: Any?) {
|
||||
(a as? String)!!
|
||||
<!DEBUG_INFO_SMARTCAST!>a<!>.length
|
||||
(a <!USELESS_CAST!>as String<!>)
|
||||
}
|
||||
|
||||
fun test_6(a: Any?) {
|
||||
(a as? String)!!
|
||||
<!DEBUG_INFO_SMARTCAST!>a<!>.length
|
||||
(a <!USELESS_CAST!>as? String<!>)
|
||||
}
|
||||
Reference in New Issue
Block a user