FIR checker: report nullable/non-class LHS of class literals
This commit is contained in:
committed by
Dmitriy Novozhilov
parent
a6d1d47918
commit
e8028e7825
@@ -1,11 +1,11 @@
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
fun <T> f1(): KClass<Array<T>> = Array<T>::class
|
||||
fun <T> f2(): KClass<Array<Array<T>>> = Array<Array<T>>::class
|
||||
fun <T> f1(): KClass<Array<T>> = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>Array<T>::class<!>
|
||||
fun <T> f2(): KClass<Array<Array<T>>> = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>Array<Array<T>>::class<!>
|
||||
inline fun <reified T> f3() = Array<T>::class
|
||||
inline fun <reified T> f4() = Array<Array<T>>::class
|
||||
fun f5(): KClass<Array<Any>> = Array<*>::class
|
||||
fun f5(): KClass<Array<Any>> = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>Array<*>::class<!>
|
||||
fun f6(): KClass<Array<Int?>> = Array<Int?>::class
|
||||
fun f7() = Array<List<String>>::class
|
||||
fun f8() = Array<List<String>?>::class
|
||||
fun f9() = Array<List<*>?>::class
|
||||
fun f7() = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>Array<List<String>>::class<!>
|
||||
fun f8() = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>Array<List<String>?>::class<!>
|
||||
fun f9() = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>Array<List<*>?>::class<!>
|
||||
|
||||
@@ -7,20 +7,20 @@ class A<T> {
|
||||
}
|
||||
|
||||
val a1 = A::class
|
||||
val a2 = A<*>::class
|
||||
val a3 = A<String>::class
|
||||
val a4 = A<out String?>::class
|
||||
val a2 = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>A<*>::class<!>
|
||||
val a3 = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>A<String>::class<!>
|
||||
val a4 = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>A<out String?>::class<!>
|
||||
|
||||
val n1 = A.Nested::class
|
||||
val n2 = A.Nested<*>::class
|
||||
val n2 = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>A.Nested<*>::class<!>
|
||||
|
||||
val i1 = A.Inner::class
|
||||
val i2 = A<*>.Inner<*>::class
|
||||
val i3 = A<Int>.Inner<CharSequence>::class
|
||||
val i2 = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>A<*>.Inner<*>::class<!>
|
||||
val i3 = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>A<Int>.Inner<CharSequence>::class<!>
|
||||
|
||||
val m1 = Map::class
|
||||
val m2 = Map<Int, *>::class
|
||||
val m2 = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>Map<Int, *>::class<!>
|
||||
val m3 = Map.Entry::class
|
||||
|
||||
val b1 = Int::class
|
||||
val b2 = Nothing::class
|
||||
val b2 = Nothing::class
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
class A
|
||||
|
||||
val a1 = A?::class
|
||||
val a2 = A??::class
|
||||
val a1 = <!NULLABLE_TYPE_IN_CLASS_LITERAL_LHS!>A?::class<!>
|
||||
val a2 = <!NULLABLE_TYPE_IN_CLASS_LITERAL_LHS!>A??::class<!>
|
||||
|
||||
val l1 = List<String>?::class
|
||||
val l2 = List?::class
|
||||
val l1 = <!NULLABLE_TYPE_IN_CLASS_LITERAL_LHS!>List<String>?::class<!>
|
||||
val l2 = <!NULLABLE_TYPE_IN_CLASS_LITERAL_LHS!>List?::class<!>
|
||||
|
||||
fun <T : Any> foo() {
|
||||
val t1 = <!OTHER_ERROR!>T<!>::class
|
||||
|
||||
Vendored
+1
-1
@@ -18,7 +18,7 @@ fun test2() {}
|
||||
@Foo([Array::class])
|
||||
fun test3() {}
|
||||
|
||||
@Foo([Gen<Int>::class])
|
||||
@Foo([<!CLASS_LITERAL_LHS_NOT_A_CLASS!>Gen<Int>::class<!>])
|
||||
fun test4() {}
|
||||
|
||||
@Foo([""])
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ fun <T> test5() = listOf(<!OTHER_ERROR!>T<!>::class)
|
||||
|
||||
fun <T> test6(): kotlin.reflect.KClass<T> = <!OTHER_ERROR!>T<!>::class
|
||||
fun <T> test7(): kotlin.reflect.KClass<*> = <!OTHER_ERROR!>T<!>::class
|
||||
fun test8() = String?::class
|
||||
fun test8() = <!NULLABLE_TYPE_IN_CLASS_LITERAL_LHS!>String?::class<!>
|
||||
|
||||
fun <T> listOf(e: T): List<T> = null!!
|
||||
|
||||
|
||||
+1
-1
@@ -13,6 +13,6 @@ enum class E {
|
||||
val ok4 = E.Entry::class
|
||||
|
||||
val fail1 = ""::class
|
||||
val fail2 = String?::class
|
||||
val fail2 = <!NULLABLE_TYPE_IN_CLASS_LITERAL_LHS!>String?::class<!>
|
||||
val fail3 = (C)::class
|
||||
val fail4 = (C.Companion)::class
|
||||
|
||||
Reference in New Issue
Block a user