Add bytecode listing test for use site targets and default targets (with priorities)

This commit is contained in:
Yan Zhulanow
2015-08-26 15:51:57 +03:00
parent 9dbd355e92
commit 552211b2f4
9 changed files with 350 additions and 0 deletions

View File

@@ -0,0 +1,38 @@
target(AnnotationTarget.PROPERTY)
annotation class AnnProperty
target(AnnotationTarget.FIELD)
annotation class AnnField
target(AnnotationTarget.FIELD, AnnotationTarget.PROPERTY)
annotation class AnnFieldProperty
target(AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.PROPERTY)
annotation class AnnParameterProperty
target(AnnotationTarget.PROPERTY, AnnotationTarget.FIELD)
annotation class AnnParameterField
target(AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER)
annotation class AnnGetterSetter
target(AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.PROPERTY)
annotation class AnnPropertySetter
target(AnnotationTarget.PROPERTY, AnnotationTarget.PROPERTY_GETTER)
annotation class AnnTypeGetter
target(AnnotationTarget.PROPERTY, AnnotationTarget.TYPE)
annotation class AnnTypeField
public class A(
@AnnProperty @AnnField @AnnFieldProperty @AnnParameterProperty @AnnParameterField
@AnnGetterSetter @AnnPropertySetter @AnnTypeGetter @AnnTypeField
public val x: Int
) {
@AnnProperty @AnnField @AnnFieldProperty @AnnParameterProperty @AnnParameterField
@AnnGetterSetter @AnnPropertySetter @AnnTypeGetter @AnnTypeField
public val a: Int = 1
}

View File

@@ -0,0 +1,29 @@
@kotlin.jvm.internal.KotlinClass A {
field $kotlinClass: kotlin.reflect.KClass
@AnnField @AnnFieldProperty @AnnParameterField field a: int
@AnnField @AnnFieldProperty @AnnParameterField field x: int
method <clinit>(): void
@AnnProperty @AnnParameterProperty @AnnPropertySetter @AnnTypeGetter @AnnTypeField method a$annotations(): void
@AnnGetterSetter method getA(): int
@AnnProperty @AnnPropertySetter @AnnTypeGetter @AnnTypeField method x$annotations(): void
@AnnGetterSetter method getX(): int
method <init>(@AnnParameterProperty p0: int): void
}
@kotlin.annotation.target @java.lang.annotation.Retention @java.lang.annotation.Target @kotlin.jvm.internal.KotlinClass AnnField
@kotlin.annotation.target @java.lang.annotation.Retention @java.lang.annotation.Target @kotlin.jvm.internal.KotlinClass AnnFieldProperty
@kotlin.annotation.target @java.lang.annotation.Retention @java.lang.annotation.Target @kotlin.jvm.internal.KotlinClass AnnGetterSetter
@kotlin.annotation.target @java.lang.annotation.Retention @java.lang.annotation.Target @kotlin.jvm.internal.KotlinClass AnnParameterField
@kotlin.annotation.target @java.lang.annotation.Retention @java.lang.annotation.Target @kotlin.jvm.internal.KotlinClass AnnParameterProperty
@kotlin.annotation.target @java.lang.annotation.Retention @java.lang.annotation.Target @kotlin.jvm.internal.KotlinClass AnnProperty
@kotlin.annotation.target @java.lang.annotation.Retention @java.lang.annotation.Target @kotlin.jvm.internal.KotlinClass AnnPropertySetter
@kotlin.annotation.target @java.lang.annotation.Retention @java.lang.annotation.Target @kotlin.jvm.internal.KotlinClass AnnTypeField
@kotlin.annotation.target @java.lang.annotation.Retention @java.lang.annotation.Target @kotlin.jvm.internal.KotlinClass AnnTypeGetter

View File

@@ -0,0 +1,13 @@
annotation class AnnProp
annotation class AnnField
annotation class AnnProp2
annotation class AnnGetter
annotation class AnnSetter
annotation class AnnParam
public class A(@AnnParam @field:AnnField @property:AnnProp2 val x: Int, @param:AnnParam @get:AnnGetter @set:AnnSetter var y: Int) {
@AnnProp @field:AnnField @property:AnnProp2 @get:AnnGetter @set:AnnSetter @sparam:AnnParam
var p: Int = 0
}

View File

@@ -0,0 +1,27 @@
@kotlin.jvm.internal.KotlinClass A {
field $kotlinClass: kotlin.reflect.KClass
@AnnProp @AnnField field p: int
@AnnField field x: int
field y: int
method <clinit>(): void
@AnnProp2 method p$annotations(): void
@AnnGetter method getP(): int
@AnnSetter method setP(@AnnParam p0: int): void
@AnnProp2 method x$annotations(): void
method getX(): int
@AnnGetter method getY(): int
@AnnSetter method setY(p0: int): void
method <init>(@AnnParam p0: int, @AnnParam p1: int): void
}
@java.lang.annotation.Retention @kotlin.jvm.internal.KotlinClass AnnField
@java.lang.annotation.Retention @kotlin.jvm.internal.KotlinClass AnnGetter
@java.lang.annotation.Retention @kotlin.jvm.internal.KotlinClass AnnParam
@java.lang.annotation.Retention @kotlin.jvm.internal.KotlinClass AnnProp
@java.lang.annotation.Retention @kotlin.jvm.internal.KotlinClass AnnProp2
@java.lang.annotation.Retention @kotlin.jvm.internal.KotlinClass AnnSetter

View File

@@ -0,0 +1,14 @@
public annotation class Ann
public class A {
fun @receiver:Ann String.f(): String = ""
val @receiver:Ann String.p: String
get() = ""
}
fun @receiver:Ann String.topLevelF(): String = ""
val @receiver:Ann String.topLevelP: String
get() = ""

View File

@@ -0,0 +1,21 @@
@kotlin.jvm.internal.KotlinClass A {
field $kotlinClass: kotlin.reflect.KClass
method <clinit>(): void
@org.jetbrains.annotations.NotNull method f(@Ann p0: java.lang.String): java.lang.String
@org.jetbrains.annotations.NotNull method getP(@Ann p0: java.lang.String): java.lang.String
method <init>(): void
}
@java.lang.annotation.Retention @kotlin.jvm.internal.KotlinClass Ann
@kotlin.jvm.internal.KotlinSyntheticClass _DefaultPackage$onReceiver$b389baba {
@org.jetbrains.annotations.NotNull method topLevelF(@Ann p0: java.lang.String): java.lang.String
@org.jetbrains.annotations.NotNull method getTopLevelP(@Ann p0: java.lang.String): java.lang.String
}
@kotlin.jvm.internal.KotlinPackage _DefaultPackage {
field $kotlinPackage: kotlin.reflect.KPackage
method <clinit>(): void
@org.jetbrains.annotations.NotNull method getTopLevelP(@Ann p0: java.lang.String): java.lang.String
@org.jetbrains.annotations.NotNull method topLevelF(@Ann p0: java.lang.String): java.lang.String
}