Load static final fields of appropriate types from Java as const

This commit is contained in:
Denis Zharkov
2015-09-21 17:32:17 +03:00
parent 98dd08109d
commit 8d13f08271
14 changed files with 94 additions and 23 deletions
@@ -0,0 +1,26 @@
// FILE: A.java
public class A {
public static final int X = 1;
public static final int Y;
public final int z = 3;
static {
Y = 2;
}
}
// FILE: main.kt
annotation class Ann(val x: Int)
@Ann(A.X)
fun main1() {}
@Ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>A.Y<!>)
fun main2() {}
val q = A()
@Ann(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>q.z<!>)
fun main3() {}
@@ -0,0 +1,26 @@
package
public val q: A
@Ann(x = 1) public fun main1(): kotlin.Unit
@Ann() public fun main2(): kotlin.Unit
@Ann(x = 3) public fun main3(): kotlin.Unit
public open class A {
public constructor A()
public final val z: kotlin.Int = 3
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public const final val X: kotlin.Int = 1
public const final val Y: kotlin.Int
}
@kotlin.annotation.annotation() public final class Ann : kotlin.Annotation {
public constructor Ann(/*0*/ x: kotlin.Int)
public final val x: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}