Prohibit Array::class, require type arguments for reified parameters

This commit is contained in:
Alexander Udalov
2015-04-08 16:35:39 +03:00
parent a0d2b00287
commit 6182b3ff5c
17 changed files with 137 additions and 39 deletions
@@ -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"
}
@@ -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"