Prohibit Array::class, require type arguments for reified parameters
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
val Array<String>.firstElement: String get() = get(0)
|
||||
|
||||
fun box(): String {
|
||||
val p = Array<String>::firstElement
|
||||
return p.get(array("OK", "Fail"))
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
import kotlin.test.*
|
||||
import kotlin.reflect.jvm.*
|
||||
|
||||
fun box(): String {
|
||||
val any = Array<Any>::class
|
||||
val string = Array<String>::class
|
||||
|
||||
assertNotEquals(any, string)
|
||||
assertNotEquals(any.java, string.java)
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+3
@@ -8,6 +8,9 @@ fun box(): String {
|
||||
assertEquals("Int", Int::class.simpleName)
|
||||
assertEquals("Long", Long::class.simpleName)
|
||||
|
||||
assertEquals("Array", Array<Any>::class.simpleName)
|
||||
assertEquals("Array", Array<IntArray>::class.simpleName)
|
||||
|
||||
assertEquals("Companion", Int.Companion::class.simpleName)
|
||||
assertEquals("Companion", Double.Companion::class.simpleName)
|
||||
assertEquals("Companion", Char.Companion::class.simpleName)
|
||||
|
||||
@@ -15,11 +15,13 @@ fun box(): String {
|
||||
assertEquals("class kotlin.Int", "${Int::class}")
|
||||
assertEquals("class kotlin.Int\$Companion", "${Int.Companion::class}")
|
||||
assertEquals("class kotlin.IntArray", "${IntArray::class}")
|
||||
// TODO
|
||||
// assertEquals("class kotlin.Array", "${Array<Any>::class}")
|
||||
assertEquals("class kotlin.String", "${String::class}")
|
||||
assertEquals("class kotlin.String", "${java.lang.String::class}")
|
||||
|
||||
assertEquals("class kotlin.Array", "${Array<Any>::class}")
|
||||
assertEquals("class kotlin.Array", "${Array<Int>::class}")
|
||||
assertEquals("class kotlin.Array", "${Array<Array<String>>::class}")
|
||||
|
||||
assertEquals("class java.lang.Runnable", "${Runnable::class}")
|
||||
|
||||
return "OK"
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
val a01 = <!ARRAY_CLASS_LITERAL_REQUIRES_ARGUMENT!>Array::class<!>
|
||||
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
|
||||
@@ -0,0 +1,7 @@
|
||||
package
|
||||
|
||||
internal val a01: [ERROR : Unresolved class]
|
||||
internal val a02: kotlin.reflect.KClass<kotlin.Array<[ERROR : Array]>>
|
||||
internal val a03: kotlin.reflect.KClass<kotlin.Array<kotlin.Any?>>
|
||||
internal val a04: kotlin.reflect.KClass<kotlin.Array<kotlin.Array<kotlin.Any?>?>>
|
||||
internal val a05: kotlin.reflect.KClass<kotlin.Array<kotlin.IntArray?>>
|
||||
@@ -12,3 +12,5 @@ fun foo<T : Any>() {
|
||||
val t1 = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>T::class<!>
|
||||
val t2 = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>T?::class<!>
|
||||
}
|
||||
|
||||
val m = <!CLASS_LITERAL_LHS_NOT_A_CLASS!>Map<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><String><!>::class<!>
|
||||
|
||||
@@ -4,6 +4,7 @@ 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 val m: [ERROR : Unresolved class]
|
||||
internal fun </*0*/ T : kotlin.Any> foo(): kotlin.Unit
|
||||
|
||||
internal final class A {
|
||||
|
||||
Reference in New Issue
Block a user