736ac12374
#KT-27799 Fixed
46 lines
1.3 KiB
Kotlin
Vendored
46 lines
1.3 KiB
Kotlin
Vendored
// !LANGUAGE: +ProhibitTypeParametersInClassLiteralsInAnnotationArguments
|
|
|
|
import kotlin.reflect.KClass
|
|
|
|
annotation class Ann(val k: KClass<*>)
|
|
annotation class AnnArray(val kk: Array<KClass<*>>)
|
|
|
|
object AnObject
|
|
|
|
class C {
|
|
companion object
|
|
}
|
|
|
|
fun foo() = "foo"
|
|
|
|
@Ann(<!ANNOTATION_ARGUMENT_MUST_BE_KCLASS_LITERAL!>"foo"::class<!>)
|
|
fun test1() {}
|
|
|
|
@Ann(String::class)
|
|
fun test2() {}
|
|
|
|
@Ann(AnObject::class)
|
|
fun test4() {}
|
|
|
|
@Ann(C::class)
|
|
fun test5() {}
|
|
|
|
@Ann(C.Companion::class)
|
|
fun test6() {}
|
|
|
|
@Ann(<!ANNOTATION_ARGUMENT_MUST_BE_KCLASS_LITERAL!>foo()::class<!>)
|
|
fun test7() {}
|
|
|
|
@AnnArray(arrayOf(<!ANNOTATION_ARGUMENT_MUST_BE_KCLASS_LITERAL!>""::class<!>, String::class, AnObject::class))
|
|
fun test8() {}
|
|
|
|
inline val <reified T> T.test9
|
|
get() = @AnnArray(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>arrayOf(
|
|
<!ANNOTATION_ARGUMENT_KCLASS_LITERAL_OF_TYPE_PARAMETER_ERROR!>T::class<!>,
|
|
<!ANNOTATION_ARGUMENT_KCLASS_LITERAL_OF_TYPE_PARAMETER_ERROR!>Array<T>::class<!>,
|
|
<!ANNOTATION_ARGUMENT_KCLASS_LITERAL_OF_TYPE_PARAMETER_ERROR!>Array<Array<Array<T>>>::class<!>
|
|
)<!>) object {}
|
|
|
|
inline val <reified T> T.test10
|
|
get() = @AnnArray(<!NON_CONST_VAL_USED_IN_CONSTANT_EXPRESSION!>[<!ANNOTATION_ARGUMENT_KCLASS_LITERAL_OF_TYPE_PARAMETER_ERROR!>T::class<!>]<!>) object {}
|