Report error when LHS of class literal is not a class

This commit is contained in:
Alexander Udalov
2015-03-08 14:22:30 +03:00
parent b93b9bd565
commit 6468515d99
10 changed files with 183 additions and 27 deletions
@@ -0,0 +1,26 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
class A<T> {
class Nested<N>
inner class Inner<I>
}
val a1 = A::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 = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>A.Nested<*>::class<!>
val i1 = A.Inner::class
val i2 = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>A<*>.Inner<*>::class<!>
val i3 = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>A<<!DEBUG_INFO_MISSING_UNRESOLVED!>Int<!>>.Inner<CharSequence>::class<!>
val m1 = Map::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
@@ -0,0 +1,37 @@
package
internal val a1: kotlin.reflect.KClass<A<*>>
internal val a2: [ERROR : Unresolved class]
internal val a3: [ERROR : Unresolved class]
internal val a4: [ERROR : Unresolved class]
internal val b1: kotlin.reflect.KClass<kotlin.Int>
internal val b2: kotlin.reflect.KClass<kotlin.Nothing>
internal val i1: kotlin.reflect.KClass<A.Inner<*>>
internal val i2: [ERROR : Unresolved class]
internal val i3: [ERROR : Unresolved class]
internal val m1: kotlin.reflect.KClass<kotlin.Map<*, *>>
internal val m2: [ERROR : Unresolved class]
internal val m3: kotlin.reflect.KClass<kotlin.Map.Entry<*, *>>
internal val n1: kotlin.reflect.KClass<A.Nested<*>>
internal val n2: [ERROR : Unresolved class]
internal final class A</*0*/ T> {
public constructor A</*0*/ T>()
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
internal final inner class Inner</*0*/ I> {
public constructor Inner</*0*/ I>()
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
}
internal final class Nested</*0*/ N> {
public constructor Nested</*0*/ N>()
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
}
}
@@ -0,0 +1,14 @@
// !DIAGNOSTICS: -UNUSED_VARIABLE
class A
val a1 = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>A?::class<!>
val a2 = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>A?<!REDUNDANT_NULLABLE!>?<!>::class<!>
val l1 = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>List<String>?::class<!>
val l2 = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>List?::class<!>
fun foo<T : Any>() {
val t1 = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>T::class<!>
val t2 = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>T?::class<!>
}
@@ -0,0 +1,14 @@
package
internal val a1: [ERROR : Unresolved class]
internal val a2: [ERROR : Unresolved class]
internal val l1: [ERROR : Unresolved class]
internal val l2: [ERROR : Unresolved class]
internal fun </*0*/ T : kotlin.Any> foo(): kotlin.Unit
internal 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
}