FIR checker: report KClass with incorrect type argument

This commit is contained in:
Jinseong Jeon
2021-03-05 01:42:06 -08:00
committed by Mikhail Glukhikh
parent bc2228d434
commit 7fff4108b6
12 changed files with 138 additions and 4 deletions
@@ -1,10 +1,10 @@
// !DIAGNOSTICS: -TYPE_PARAMETER_AS_REIFIED -TYPE_PARAMETER_OF_PROPERTY_NOT_USED_IN_RECEIVER -UNUSED_VARIABLE -UNUSED_PARAMETER
fun <T> test1() = T::class
fun <T> <!KCLASS_WITH_NULLABLE_TYPE_PARAMETER_IN_SIGNATURE!>test1<!>() = T::class
fun <T : Any> test2() = T::class
val <T> test3 = T::class
val <T> test4 get() = T::class
val <T> <!KCLASS_WITH_NULLABLE_TYPE_PARAMETER_IN_SIGNATURE!>test3<!> = T::class
val <T> <!KCLASS_WITH_NULLABLE_TYPE_PARAMETER_IN_SIGNATURE!>test4<!> get() = T::class
fun <T> test5() = listOf(T::class)
@@ -12,6 +12,8 @@ fun <T> test6(): kotlin.reflect.KClass<T> = T::class
fun <T> test7(): kotlin.reflect.KClass<*> = T::class
fun test8() = <!NULLABLE_TYPE_IN_CLASS_LITERAL_LHS!>String?::class<!>
fun <T> test9() where T : Any?, T : Comparable<T> = T::class
fun <T> listOf(e: T): List<T> = null!!
fun <L> locals() {
@@ -21,3 +23,8 @@ fun <L> locals() {
val test3 = L::class
fun test4() = L::class
}
class Foo<T> {
val p = T::class
fun f() = T::class
}
@@ -12,6 +12,8 @@ fun <T> test6(): kotlin.reflect.KClass<<!UPPER_BOUND_VIOLATED!>T<!>> = T::class
fun <T> test7(): kotlin.reflect.KClass<*> = T::class
fun test8() = <!NULLABLE_TYPE_IN_CLASS_LITERAL_LHS!>String?::class<!>
fun <T> test9() where T : Any?, T : Comparable<T> = T::class
fun <T> listOf(e: T): List<T> = null!!
fun <L> locals() {
@@ -21,3 +23,8 @@ fun <L> locals() {
val test3 = L::class
fun test4() = L::class
}
class Foo<T> {
val p = T::class
fun f() = T::class
}
@@ -10,3 +10,14 @@ public fun </*0*/ T> test5(): kotlin.collections.List<kotlin.reflect.KClass<T>>
public fun </*0*/ T> test6(): kotlin.reflect.KClass<T>
public fun </*0*/ T> test7(): kotlin.reflect.KClass<*>
public fun test8(): kotlin.reflect.KClass<kotlin.String?>
public fun </*0*/ T> test9(): kotlin.reflect.KClass<T> where T : kotlin.Comparable<T>
public final class Foo</*0*/ T> {
public constructor Foo</*0*/ T>()
public final val p: kotlin.reflect.KClass<T>
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun f(): kotlin.reflect.KClass<T>
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}