Refactor and improve class literal type checking code
Infer something sensible instead of error types when an error is reported, such as absence of a type argument for Array or presence of type arguments for other types
This commit is contained in:
@@ -3,3 +3,5 @@ val a02 = Array<<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Array<!>>::class
|
||||
val a03 = Array<Any?>::class
|
||||
val a04 = Array<Array<Any?>?>::class
|
||||
val a05 = Array<IntArray?>::class
|
||||
val a06 = <!ARRAY_CLASS_LITERAL_REQUIRES_ARGUMENT!>kotlin.Array::class<!>
|
||||
val a07 = kotlin.Array<IntArray?>::class
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
package
|
||||
|
||||
public val a01: [ERROR : Unresolved class]
|
||||
public val a01: kotlin.reflect.KClass<kotlin.Array<*>>
|
||||
public val a02: kotlin.reflect.KClass<kotlin.Array<[ERROR : Array]>>
|
||||
public val a03: kotlin.reflect.KClass<kotlin.Array<kotlin.Any?>>
|
||||
public val a04: kotlin.reflect.KClass<kotlin.Array<kotlin.Array<kotlin.Any?>?>>
|
||||
public val a05: kotlin.reflect.KClass<kotlin.Array<kotlin.IntArray?>>
|
||||
public val a06: kotlin.reflect.KClass<kotlin.Array<*>>
|
||||
public val a07: kotlin.reflect.KClass<kotlin.Array<kotlin.IntArray?>>
|
||||
|
||||
@@ -4,5 +4,8 @@ fun <T> f1(): KClass<Array<T>> = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>Array<T>::clas
|
||||
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>> = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>Array<*>::class<!>
|
||||
fun f6(): KClass<Array<Int?>> = Array<Int?>::class
|
||||
fun f5(): KClass<Array<Any>> = <!CLASS_LITERAL_LHS_NOT_A_CLASS, TYPE_MISMATCH!>Array<*>::class<!>
|
||||
fun f6(): KClass<Array<Int?>> = Array<Int?>::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<!>
|
||||
|
||||
@@ -6,3 +6,6 @@ public inline fun </*0*/ reified T> f3(): kotlin.reflect.KClass<kotlin.Array<T>>
|
||||
public inline fun </*0*/ reified T> f4(): kotlin.reflect.KClass<kotlin.Array<kotlin.Array<T>>>
|
||||
public fun f5(): kotlin.reflect.KClass<kotlin.Array<kotlin.Any>>
|
||||
public fun f6(): kotlin.reflect.KClass<kotlin.Array<kotlin.Int?>>
|
||||
public fun f7(): kotlin.reflect.KClass<kotlin.Array<kotlin.collections.List<kotlin.String>>>
|
||||
public fun f8(): kotlin.reflect.KClass<kotlin.Array<kotlin.collections.List<kotlin.String>?>>
|
||||
public fun f9(): kotlin.reflect.KClass<kotlin.Array<kotlin.collections.List<*>?>>
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
package
|
||||
|
||||
public val a1: kotlin.reflect.KClass<A<*>>
|
||||
public val a2: [ERROR : Unresolved class]
|
||||
public val a3: [ERROR : Unresolved class]
|
||||
public val a4: [ERROR : Unresolved class]
|
||||
public val a2: kotlin.reflect.KClass<A<*>>
|
||||
public val a3: kotlin.reflect.KClass<A<kotlin.String>>
|
||||
public val a4: kotlin.reflect.KClass<A<out kotlin.String?>>
|
||||
public val b1: kotlin.reflect.KClass<kotlin.Int>
|
||||
public val b2: kotlin.reflect.KClass<kotlin.Nothing>
|
||||
public val i1: kotlin.reflect.KClass<A<*>.Inner<*>>
|
||||
public val i2: [ERROR : Unresolved class]
|
||||
public val i3: [ERROR : Unresolved class]
|
||||
public val i2: kotlin.reflect.KClass<A<*>.Inner<*>>
|
||||
public val i3: kotlin.reflect.KClass<A<kotlin.Int>.Inner<kotlin.CharSequence>>
|
||||
public val m1: kotlin.reflect.KClass<kotlin.collections.Map<*, *>>
|
||||
public val m2: [ERROR : Unresolved class]
|
||||
public val m2: kotlin.reflect.KClass<kotlin.collections.Map<kotlin.Int, *>>
|
||||
public val m3: kotlin.reflect.KClass<kotlin.collections.Map.Entry<*, *>>
|
||||
public val n1: kotlin.reflect.KClass<A.Nested<*>>
|
||||
public val n2: [ERROR : Unresolved class]
|
||||
public val n2: kotlin.reflect.KClass<A.Nested<*>>
|
||||
|
||||
public final class A</*0*/ T> {
|
||||
public constructor A</*0*/ T>()
|
||||
|
||||
@@ -13,4 +13,8 @@ fun <T : Any> foo() {
|
||||
val t2 = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>T?::class<!>
|
||||
}
|
||||
|
||||
val m = Map<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><String><!>::class
|
||||
inline fun <reified T : Any> bar() {
|
||||
val t3 = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>T?::class<!>
|
||||
}
|
||||
|
||||
val m = Map<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><String><!>::class
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
package
|
||||
|
||||
public val a1: [ERROR : Unresolved class]
|
||||
public val a2: [ERROR : Unresolved class]
|
||||
public val l1: [ERROR : Unresolved class]
|
||||
public val l2: [ERROR : Unresolved class]
|
||||
public val a1: kotlin.reflect.KClass<A?>
|
||||
public val a2: kotlin.reflect.KClass<A?>
|
||||
public val l1: kotlin.reflect.KClass<kotlin.collections.List<kotlin.String>?>
|
||||
public val l2: kotlin.reflect.KClass<kotlin.collections.List<*>?>
|
||||
public val m: [ERROR : Unresolved class]
|
||||
public inline fun </*0*/ reified T : kotlin.Any> bar(): kotlin.Unit
|
||||
public fun </*0*/ T : kotlin.Any> foo(): kotlin.Unit
|
||||
|
||||
public final class A {
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package test.foo.bar
|
||||
|
||||
class A
|
||||
|
||||
val k = test.foo.bar.A::class
|
||||
|
||||
val l = java.lang.Class::class
|
||||
@@ -0,0 +1,19 @@
|
||||
package
|
||||
|
||||
package test {
|
||||
|
||||
package test.foo {
|
||||
|
||||
package test.foo.bar {
|
||||
public val k: kotlin.reflect.KClass<test.foo.bar.A>
|
||||
public val l: kotlin.reflect.KClass<java.lang.Class<*>>
|
||||
|
||||
public final class A {
|
||||
public constructor A()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user