Files
kotlin-fork/plugins/kapt3/kapt3-compiler/testData/converter/annotationsWithConstants.kt
T
2022-07-20 10:12:24 +00:00

176 lines
3.9 KiB
Kotlin
Vendored

// EXPECTED_ERROR: class B is public, should be declared in a file named B.java
// EXPECTED_ERROR: class R is public, should be declared in a file named R.java
// EXPECTED_ERROR: class R is public, should be declared in a file named R.java
// EXPECTED_ERROR: class R2 is public, should be declared in a file named R2.java
// FILE: lib/R.java
package lib;
public class R {
public static class id {
public final static int textView = 100;
}
}
// FILE: app/R.java
package app;
public class R {
public static class layout {
public final static int mainActivity = 100;
}
}
// FILE: app/R2.java
package app;
public class R2 { // For ButterKnife library project support
public static class layout {
public final static int mainActivity = 100;
}
}
// FILE: app/B.java
package app;
public class B {
public static class id {
public final static int textView = 200;
}
public final static boolean a1 = false;
public final static byte a2 = 1;
public final static int a3 = 2;
public final static short a4 = 3;
public final static long a5 = 4L;
public final static char a6 = '5';
public final static float a7 = 6.0f;
public final static double a8 = 7.0;
public final static String a9 = "A";
}
// FILE: lib/OnClick.java
package lib;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface OnClick {
int[] value() default {};
}
// FILE: test.kt
package app
import lib.R as LibR
import lib.R.id.textView
import lib.OnClick
annotation class Bind(val id: Int)
annotation class MultiValue(val ids: IntArray)
annotation class MultiValueString(val ids: Array<String>)
annotation class MultiValueByte(val ids: ByteArray)
@Target(AnnotationTarget.FIELD)
annotation class BindField(val id: Int)
annotation class Anno(
val a1: Boolean,
val a2: Byte,
val a3: Int,
val a4: Short,
val a5: Long,
val a6: Char,
val a7: Float,
val a8: Double,
val a9: String)
class MyActivity {
@Bind(LibR.id.textView)
@BindField(LibR.id.textView)
val a = 0
@Bind(lib.R.id.textView)
@BindField(lib.R.id.textView)
val b = 0
@Bind(app.R.layout.mainActivity)
@BindField(app.R.layout.mainActivity)
val c = 0
@Bind(R.layout.mainActivity)
@BindField(R.layout.mainActivity)
val d = 0
@Bind(R2.layout.mainActivity)
@BindField(R2.layout.mainActivity)
@Anno(a1 = B.a1, a2 = B.a2, a3 = B.a3, a4 = B.a4, a5 = B.a5, a6 = B.a6, a7 = B.a7, a8 = B.a8, a9 = B.a9)
val e = 0
@Bind(B.id.textView)
@BindField(B.id.textView)
val f = 0
@Bind(LibR.id.textView)
fun foo() {}
@Bind(lib.R.id.textView)
fun foo2() {}
@Bind(app.R.layout.mainActivity)
fun foo3() {}
@Bind(R.layout.mainActivity)
fun foo4() {}
@Bind(R2.layout.mainActivity)
@Anno(a1 = B.a1, a2 = B.a2, a3 = B.a3, a4 = B.a4, a5 = B.a5, a6 = B.a6, a7 = B.a7, a8 = B.a8, a9 = B.a9)
fun foo5() {}
@Bind(B.id.textView)
fun plainIntConstant() {}
@MultiValue(ids = [])
fun multi0() {}
@MultiValue(ids = [B.id.textView])
fun multi1() {}
@MultiValue(ids = [B.id.textView, B.a3])
fun multi2() {}
@MultiValue(ids = intArrayOf(B.id.textView, B.a3))
fun multi3() {}
@MultiValueString(ids = arrayOf(B.a9))
fun multi4() {}
@MultiValueByte(ids = byteArrayOf(B.a2))
fun multi5() {}
@OnClick(B.id.textView)
fun multiJava1() {}
@OnClick(B.id.textView, app.R.layout.mainActivity)
fun multiJava2() {}
const val propA = B.id.textView
val propB = B.id.textView
var propC = B.id.textView
@JvmField
val propD = B.id.textView
@JvmField
var propE = B.id.textView
val propF = JJ.b.length
}
object JJ {
val b = c()
fun c() = "42"
}