| // MODULE: lib | |
| // FILE: l1.kt | |
| package ann | |
| annotation class Test1<T>(val x: Int) | |
| annotation class Test2<T1 : Any, T2>(val x: Int = 0) | |
| interface I<T> | |
| annotation class Test3<T1, T2 : I<T1>>(val x: Test1<I<T2>>) | |
| class C<T> : I<T> | |
| annotation class Test4(val x: Array<Test3<Int, C<Int>>>) | |
| class ARG | |
| annotation class Test5<T>(vararg val xs: Test3<T, C<T>>) | |
| // FILE: l2.kt | |
| import ann.* | |
| @Test1<ARG>(42) | |
| @Test2<String, String>(38) | |
| @Test3<String, C<String>>(Test1(39)) | |
| @Test4([Test3<Int, C<Int>>(Test1(40)), Test3<Int, C<Int>>(Test1(50)), Test3<Int, C<Int>>(Test1(60))]) | |
| //@Test5<ARG>(*arrayOf(Test3(Test1(70))), *arrayOf(Test3(Test1(80)))) <-- KT-45414 | |
| class O { | |
| fun test(): String = "O" | |
| } | |
| // MODULE: main(lib) | |
| // FILE: main.kt | |
| import ann.* | |
| @Test1<ARG>(24) | |
| @Test2<String, String>(83) | |
| @Test3<String, C<String>>(Test1(93)) | |
| @Test4([Test3<Int, C<Int>>(Test1(44)), Test3<Int, C<Int>>(Test1(55)), Test3<Int, C<Int>>(Test1(66))]) | |
| //@Test5<ARG>(*arrayOf(Test3(Test1(77))), *arrayOf(Test3(Test1(88)))) <-- KT-45414 | |
| class K { | |
| fun test(): String = "K" | |
| } | |
| fun box(): String = O().test() + K().test() |