Remove @get: @set:, reorder remaining annotation targets
This commit is contained in:
+4
-4
@@ -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
|
||||
|
||||
+2
-2
@@ -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
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -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
-2
@@ -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
|
||||
|
||||
Vendored
+4
-4
@@ -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
|
||||
|
||||
|
||||
Vendored
+4
-4
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user