J2K: convert annotations in annotations parameters correctly

#KT-11126 Fixed
This commit is contained in:
Natalia Ukhorskaya
2016-02-20 17:55:30 +03:00
parent 7d594970ff
commit 405b0b1df6
9 changed files with 154 additions and 27 deletions
@@ -0,0 +1,28 @@
public @interface Ann {
Inner[] value();
InnerParam[] test1() default @InnerParam(C.class);
}
public @interface Inner {
}
public @interface InnerParam {
Class<?> value();
}
@Ann(value = {@Inner, @Inner}, test1 = { @InnerParam(C.class) })
public class C {
}
@Ann({@Inner, @Inner})
public class D {
}
@Ann(value = @Inner)
public class E {
}
@Ann(value = {@Inner}, test1 = { @InnerParam(value = C.class) })
public class F {
}
@@ -0,0 +1,19 @@
import kotlin.reflect.KClass
annotation class Ann(vararg val value: Inner, val test1: Array<InnerParam> = arrayOf(InnerParam(C::class)))
annotation class Inner
annotation class InnerParam(val value: KClass<*>)
@Ann(value = *arrayOf(Inner(), Inner()), test1 = arrayOf(InnerParam(C::class)))
class C
@Ann(Inner(), Inner())
class D
@Ann(value = Inner())
class E
@Ann(value = *arrayOf(Inner()), test1 = arrayOf(InnerParam(value = C::class)))
class F
@@ -0,0 +1,16 @@
public @interface Ann {
int i() default 1;
int[] i2() default 1;
int[] i3() default { 1 };
Class<?> klass() default A.class;
Class<?>[] klass2() default A.class;
Class<?>[] klass3() default { A.class };
Inner ann() default @Inner();
Inner[] ann2() default @Inner;
Inner[] ann3() default { @Inner, @Inner() };
}
public class A
public @interface Inner {
}
@@ -0,0 +1,6 @@
import kotlin.reflect.KClass
annotation class Ann(val i: Int = 1, val i2: IntArray = intArrayOf(1), val i3: IntArray = intArrayOf(1), val klass: KClass<*> = A::class, val klass2: Array<KClass<*>> = arrayOf(A::class), val klass3: Array<KClass<*>> = arrayOf(A::class), val ann: Inner = Inner(), val ann2: Array<Inner> = arrayOf(Inner()), val ann3: Array<Inner> = arrayOf(Inner(), Inner()))
class A
annotation class Inner