Files
kotlin-fork/compiler/testData/codegen/box/collectionLiterals/collectionLiteralsWithConstants.kt
T
2018-06-28 12:26:41 +02:00

40 lines
1.1 KiB
Kotlin
Vendored

// IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND: JS_IR
// LANGUAGE_VERSION: 1.2
// WITH_REFLECT
// IGNORE_BACKEND: JS
// IGNORE_BACKEND: NATIVE
import java.util.Arrays
import kotlin.reflect.KFunction0
inline fun <reified T> test(kFunction: KFunction0<Unit>, test: T.() -> Unit) {
val annotation = kFunction.annotations.single() as T
annotation.test()
}
fun check(b: Boolean, message: String) {
if (!b) throw RuntimeException(message)
}
annotation class Foo(val a: IntArray = [], val b: Array<String> = [])
const val ONE_INT = 1
const val ONE_FLOAT = 1f
const val HELLO = "hello"
const val C_CHAR = 'c'
@Foo(
a = [ONE_INT, ONE_INT + ONE_FLOAT.toInt(), ONE_INT + 10, (ONE_INT % 1.0).toInt()],
b = [HELLO, HELLO + C_CHAR, HELLO + ", Kotlin", C_CHAR.toString() + C_CHAR])
fun test1() {}
fun box(): String {
test<Foo>(::test1) {
check(a.contentEquals(intArrayOf(1, 2, 11, 0)), "Fail 1: ${a.joinToString()}")
check(b.contentEquals(arrayOf("hello", "helloc", "hello, Kotlin", "cc")), "Fail 2: ${b.joinToString()}")
}
return "OK"
}