Remove @get: @set:, reorder remaining annotation targets

This commit is contained in:
Yan Zhulanow
2015-09-11 20:27:00 +03:00
parent 4e8d664dfb
commit 01b2d02196
11 changed files with 41 additions and 58 deletions
@@ -43,9 +43,9 @@ public class AnnotationSplitter(
applicableTargetsLazy: () -> Set<AnnotationUseSiteTarget>
) {
public companion object {
private val TARGET_PRIORITIES = setOf(CONSTRUCTOR_PARAMETER, FIELD, PROPERTY, PROPERTY_SETTER, PROPERTY_GETTER)
private val TARGET_PRIORITIES = setOf(CONSTRUCTOR_PARAMETER, PROPERTY, FIELD)
@jvmStatic
@JvmStatic
public fun create(
storageManager: StorageManager,
annotations: Annotations,
@@ -54,7 +54,7 @@ public class AnnotationSplitter(
return AnnotationSplitter(storageManager, annotations, { targets })
}
@jvmStatic
@JvmStatic
public fun getTargetSet(parameter: Boolean, context: BindingContext, wrapper: PropertyWrapper): Set<AnnotationUseSiteTarget> {
val property = wrapper.property
assert(property != null)
@@ -62,7 +62,7 @@ public class AnnotationSplitter(
return getTargetSet(parameter, property!!.isVar, hasBackingField)
}
@jvmStatic
@JvmStatic
public fun getTargetSet(parameter: Boolean, isVar: Boolean, hasBackingField: Boolean): Set<AnnotationUseSiteTarget> {
return hashSetOf(PROPERTY, PROPERTY_GETTER).apply {
if (parameter) add(CONSTRUCTOR_PARAMETER)
@@ -29,7 +29,6 @@ import org.jetbrains.kotlin.types.TypeUtils
import org.jetbrains.kotlin.resolve.descriptorUtil.isRepeatableAnnotation
import org.jetbrains.kotlin.descriptors.annotations.KotlinTarget.*
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
import kotlin.platform.platformStatic
public class AnnotationChecker(private val additionalCheckers: Iterable<AdditionalAnnotationChecker>) {
@@ -146,7 +145,7 @@ public class AnnotationChecker(private val additionalCheckers: Iterable<Addition
return applicableTargetSet(classDescriptor) ?: KotlinTarget.DEFAULT_TARGET_SET
}
platformStatic
@JvmStatic
public fun applicableTargetSet(descriptor: AnnotationDescriptor): Set<KotlinTarget> {
val classDescriptor = descriptor.type.constructor.declarationDescriptor as? ClassDescriptor ?: return emptySet()
return applicableTargetSet(classDescriptor) ?: KotlinTarget.DEFAULT_TARGET_SET
@@ -211,24 +210,25 @@ public class AnnotationChecker(private val additionalCheckers: Iterable<Addition
}
val T_MEMBER_PROPERTY = targetList(MEMBER_PROPERTY, PROPERTY) {
canBeSubstituted(PROPERTY_GETTER, PROPERTY_SETTER, FIELD)
onlyWithUseSiteTarget(VALUE_PARAMETER)
extraTargets(FIELD)
onlyWithUseSiteTarget(VALUE_PARAMETER, PROPERTY_GETTER, PROPERTY_SETTER)
}
val T_TOP_LEVEL_PROPERTY = targetList(TOP_LEVEL_PROPERTY, PROPERTY) {
canBeSubstituted(FIELD, PROPERTY_GETTER, PROPERTY_SETTER)
onlyWithUseSiteTarget(VALUE_PARAMETER)
extraTargets(FIELD)
onlyWithUseSiteTarget(VALUE_PARAMETER, PROPERTY_GETTER, PROPERTY_SETTER)
}
val T_PROPERTY_GETTER = targetList(PROPERTY_GETTER)
val T_PROPERTY_SETTER = targetList(PROPERTY_SETTER)
val T_VALUE_PARAMETER_WITHOUT_VAL = targetList(VALUE_PARAMETER) {
onlyWithUseSiteTarget(PROPERTY, FIELD, PROPERTY_GETTER, PROPERTY_SETTER)
onlyWithUseSiteTarget(PROPERTY, FIELD)
}
val T_VALUE_PARAMETER_WITH_VAL = targetList(VALUE_PARAMETER, PROPERTY, MEMBER_PROPERTY) {
canBeSubstituted(FIELD, PROPERTY_GETTER, PROPERTY_SETTER)
extraTargets(FIELD)
onlyWithUseSiteTarget(PROPERTY_GETTER, PROPERTY_SETTER)
}
val T_FILE = targetList(FILE)
@@ -273,7 +273,7 @@ public class AnnotationChecker(private val additionalCheckers: Iterable<Addition
private var canBeSubstituted: List<KotlinTarget> = listOf()
private var onlyWithUseSiteTarget: List<KotlinTarget> = listOf()
fun canBeSubstituted(vararg targets: KotlinTarget) {
fun extraTargets(vararg targets: KotlinTarget) {
canBeSubstituted = targets.toList()
}
@@ -10,29 +10,18 @@ annotation class AnnFieldProperty
@Target(AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.PROPERTY)
annotation class AnnParameterProperty
@Target(AnnotationTarget.PROPERTY, AnnotationTarget.FIELD)
@Target(AnnotationTarget.VALUE_PARAMETER, 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)
@Target(AnnotationTarget.FIELD, AnnotationTarget.TYPE)
annotation class AnnTypeField
public class A(
@AnnProperty @AnnField @AnnFieldProperty @AnnParameterProperty @AnnParameterField
@AnnGetterSetter @AnnPropertySetter @AnnTypeGetter @AnnTypeField
@AnnProperty @AnnField @AnnFieldProperty @AnnParameterProperty @AnnParameterField @AnnTypeField
public val x: Int
) {
@AnnProperty @AnnField @AnnFieldProperty @AnnParameterProperty @AnnParameterField
@AnnGetterSetter @AnnPropertySetter @AnnTypeGetter @AnnTypeField
@AnnProperty @AnnField @AnnFieldProperty @AnnParameterProperty @AnnParameterField @AnnTypeField
public val a: Int = 1
}
@@ -1,29 +1,23 @@
@kotlin.jvm.internal.KotlinClass A {
field $kotlinClass: kotlin.reflect.KClass
@AnnField @AnnFieldProperty @AnnParameterField field a: int
@AnnField @AnnFieldProperty @AnnParameterField field x: int
@AnnField @AnnParameterField @AnnTypeField field a: int
@AnnField @AnnTypeField 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
@AnnProperty @AnnFieldProperty @AnnParameterProperty method a$annotations(): void
method getA(): int
@AnnProperty @AnnFieldProperty method x$annotations(): void
method getX(): int
method <init>(@AnnParameterProperty @AnnParameterField 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
@kotlin.annotation.Target @java.lang.annotation.Retention @java.lang.annotation.Target @kotlin.jvm.internal.KotlinClass AnnTypeField
@@ -1,10 +1,10 @@
@kotlin.jvm.internal.KotlinClass A {
field $kotlinClass: kotlin.reflect.KClass
@AnnProp @AnnField field p: int
@AnnField field p: int
@AnnField field x: int
field y: int
method <clinit>(): void
@AnnProp2 method p$annotations(): void
@AnnProp @AnnProp2 method p$annotations(): void
@AnnGetter method getP(): int
@AnnSetter method setP(@AnnParam p0: int): void
@AnnProp2 method x$annotations(): void
@@ -8,9 +8,9 @@ annotation class smartset
annotation class base
class My(x: Int) {
@smartget var y = x
<!WRONG_ANNOTATION_TARGET!>@smartget<!> var y = x
<!WRONG_ANNOTATION_TARGET!>@base<!> @smartget <!WRONG_ANNOTATION_TARGET!>@smartset<!> get
<!WRONG_ANNOTATION_TARGET!>@base<!> <!WRONG_ANNOTATION_TARGET!>@smartget<!> @smartset set
@base <!WRONG_ANNOTATION_TARGET!>@smartget<!> <!WRONG_ANNOTATION_TARGET!>@smartset<!> fun foo() = y
}
}
@@ -2,7 +2,7 @@ package
public final class My {
public constructor My(/*0*/ x: kotlin.Int)
public final var y: kotlin.Int
smartget() public final var y: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
base() smartget() smartset() public final fun foo(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -2,8 +2,8 @@ package
public final class A {
public constructor A(/*0*/ @param:Ann() Ann() x: kotlin.Int, /*1*/ @param:RepeatableAnn() Ann() y: kotlin.Int)
@property:Ann() @property:RepeatableAnn() @field:Ann() RepeatableAnn() public final val a: kotlin.Int = 0
@property:Ann() Ann() @field:Ann() public final val b: kotlin.Int = 0
@property:Ann() RepeatableAnn() @property:RepeatableAnn() @field:Ann() public final val a: kotlin.Int = 0
Ann() @property:Ann() @field:Ann() public final val b: kotlin.Int = 0
@field:RepeatableAnn() @field:RepeatableAnn() public final val c: kotlin.Int = 0
@property:RepeatableAnn() RepeatableAnn() public final val d: kotlin.Int = 0
public final val x: kotlin.Int
@@ -6,10 +6,10 @@ fun foo() {}
@JvmName("b")
fun Any.foo() {}
@JvmName("c")
<!WRONG_ANNOTATION_TARGET!>@JvmName("c")<!>
val px = 1
@JvmName("d")
<!WRONG_ANNOTATION_TARGET!>@JvmName("d")<!>
val Any.px : Int
get() = 1
@@ -39,10 +39,10 @@ class C <!WRONG_ANNOTATION_TARGET!>@JvmName("primary")<!> constructor() {
@JvmName("b")
fun Any.foo() {}
@JvmName("c")
<!WRONG_ANNOTATION_TARGET!>@JvmName("c")<!>
val px = 1
@JvmName("d")
<!WRONG_ANNOTATION_TARGET!>@JvmName("d")<!>
val Any.px : Int
get() = 1
@@ -1,10 +1,10 @@
package
public val px: kotlin.Int = 1
kotlin.jvm.JvmName(name = "c") public val px: kotlin.Int = 1
public val valx: kotlin.Int
public var vardef: kotlin.Int
public var varx: kotlin.Int
public val kotlin.Any.px: kotlin.Int
kotlin.jvm.JvmName(name = "d") public val kotlin.Any.px: kotlin.Int
kotlin.jvm.JvmName(name = "a") public fun foo(): kotlin.Unit
public fun foo1(): kotlin.Unit
kotlin.jvm.JvmName(name = "b") public fun kotlin.Any.foo(): kotlin.Unit
@@ -22,10 +22,10 @@ public abstract class AB {
kotlin.jvm.JvmName(name = "C") public final class C {
kotlin.jvm.JvmName(name = "primary") public constructor C()
kotlin.jvm.JvmName(name = "ctr") public constructor C(/*0*/ x: kotlin.Int)
public final val px: kotlin.Int = 1
kotlin.jvm.JvmName(name = "c") public final val px: kotlin.Int = 1
public final val valx: kotlin.Int
public final var varx: kotlin.Int
public final val kotlin.Any.px: kotlin.Int
kotlin.jvm.JvmName(name = "d") public final val kotlin.Any.px: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
kotlin.jvm.JvmName(name = "a") public final fun foo(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -6,7 +6,7 @@ class A {
fun foo() {
@Ann("class") class Local {
Ann("fun") fun foo(): Local = this
Ann("val") val x = foo()
@field:Ann("val") val x = foo()
Ann("inner") inner class Inner
}