ebb9659e03
Currently JVM IR is not supported in kapt, so almost all tests are failing, and thus are muted with IGNORE_BACKEND. #KT-49682
177 lines
3.9 KiB
Kotlin
Vendored
177 lines
3.9 KiB
Kotlin
Vendored
// IGNORE_BACKEND: JVM_IR
|
|
//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"
|
|
}
|
|
|
|
// 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
|