[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:
Ivan Kochurkin
2023-10-19 20:35:03 +02:00
committed by Space Team
parent 2f8026f335
commit d50c6f1b6d
21 changed files with 209 additions and 121 deletions
@@ -2,7 +2,7 @@
fun test_1(a: Any?) {
(a as String?)!!
(a as? String)!!
(a <!USELESS_CAST!>as? String<!>)!!
}
fun test_2(a: Any?) {
@@ -14,7 +14,7 @@ interface FirTarget<E : FirTargetElement> {
fun foo(target: FirTarget<FirFunction<*>>, property: FirProperty) {
val functionTarget = target.labeledElement
val x = (functionTarget as? FirFunction)?.let {
val x = (functionTarget <!USELESS_CAST!>as? FirFunction<!>)?.let {
if (property.getter === functionTarget) {
return@let 1
}