// !DIAGNOSTICS: -UNUSED_PARAMETER // KT-10444 Do not ignore smart (unchecked) casts to the same classifier class Base class Qwe(val a: T?) { fun test1(obj: Any) { obj as Qwe check(obj.a) } fun test1(obj: Qwe<*>) { obj as Qwe check(obj.a) } fun test2(b: Base<*>) { b as Base } fun check(a: T?) { } } open class Foo open class Bar(open val a: T?, open val b: T?) { @Suppress("UNCHECKED_CAST") fun compare(obj: Any) { if (obj !is Bar<*>) { throw IllegalArgumentException() } if (System.currentTimeMillis() > 100) { val b = (obj as Bar).b if (b == null) throw IllegalArgumentException() check(obj.a, b) } } fun check(a: T?, b: T) { } }