Introduction of AnnotationTarget.CLASS as a replacement for CLASSIFIER (first step)
This commit is contained in:
@@ -189,6 +189,7 @@ public abstract class AnnotationCodegen {
|
|||||||
|
|
||||||
static {
|
static {
|
||||||
annotationTargetMap.put(KotlinTarget.CLASSIFIER, ElementType.TYPE);
|
annotationTargetMap.put(KotlinTarget.CLASSIFIER, ElementType.TYPE);
|
||||||
|
annotationTargetMap.put(KotlinTarget.CLASS, ElementType.TYPE);
|
||||||
annotationTargetMap.put(KotlinTarget.ANNOTATION_CLASS, ElementType.ANNOTATION_TYPE);
|
annotationTargetMap.put(KotlinTarget.ANNOTATION_CLASS, ElementType.ANNOTATION_TYPE);
|
||||||
annotationTargetMap.put(KotlinTarget.CONSTRUCTOR, ElementType.CONSTRUCTOR);
|
annotationTargetMap.put(KotlinTarget.CONSTRUCTOR, ElementType.CONSTRUCTOR);
|
||||||
annotationTargetMap.put(KotlinTarget.LOCAL_VARIABLE, ElementType.LOCAL_VARIABLE);
|
annotationTargetMap.put(KotlinTarget.LOCAL_VARIABLE, ElementType.LOCAL_VARIABLE);
|
||||||
|
|||||||
@@ -204,7 +204,7 @@ public class AnnotationChecker(private val additionalCheckers: Iterable<Addition
|
|||||||
}
|
}
|
||||||
|
|
||||||
private object TargetLists {
|
private object TargetLists {
|
||||||
val T_CLASSIFIER = targetList(CLASSIFIER)
|
val T_CLASSIFIER = targetList(CLASS, CLASSIFIER)
|
||||||
|
|
||||||
val T_LOCAL_VARIABLE = targetList(LOCAL_VARIABLE) {
|
val T_LOCAL_VARIABLE = targetList(LOCAL_VARIABLE) {
|
||||||
onlyWithUseSiteTarget(PROPERTY, FIELD, PROPERTY_GETTER, PROPERTY_SETTER, VALUE_PARAMETER)
|
onlyWithUseSiteTarget(PROPERTY, FIELD, PROPERTY_GETTER, PROPERTY_SETTER, VALUE_PARAMETER)
|
||||||
|
|||||||
@@ -39,26 +39,26 @@ public object ModifierCheckerCore {
|
|||||||
|
|
||||||
private val possibleTargetMap = mapOf<JetModifierKeywordToken, Set<KotlinTarget>>(
|
private val possibleTargetMap = mapOf<JetModifierKeywordToken, Set<KotlinTarget>>(
|
||||||
ENUM_KEYWORD to EnumSet.of(ENUM_CLASS),
|
ENUM_KEYWORD to EnumSet.of(ENUM_CLASS),
|
||||||
ABSTRACT_KEYWORD to EnumSet.of(CLASS, LOCAL_CLASS, INNER_CLASS, INTERFACE, MEMBER_PROPERTY, MEMBER_FUNCTION),
|
ABSTRACT_KEYWORD to EnumSet.of(CLASS_ONLY, LOCAL_CLASS, INNER_CLASS, INTERFACE, MEMBER_PROPERTY, MEMBER_FUNCTION),
|
||||||
OPEN_KEYWORD to EnumSet.of(CLASS, LOCAL_CLASS, INNER_CLASS, INTERFACE, MEMBER_PROPERTY, MEMBER_FUNCTION),
|
OPEN_KEYWORD to EnumSet.of(CLASS_ONLY, LOCAL_CLASS, INNER_CLASS, INTERFACE, MEMBER_PROPERTY, MEMBER_FUNCTION),
|
||||||
FINAL_KEYWORD to EnumSet.of(CLASS, LOCAL_CLASS, INNER_CLASS, ENUM_CLASS, OBJECT, MEMBER_PROPERTY, MEMBER_FUNCTION),
|
FINAL_KEYWORD to EnumSet.of(CLASS_ONLY, LOCAL_CLASS, INNER_CLASS, ENUM_CLASS, OBJECT, MEMBER_PROPERTY, MEMBER_FUNCTION),
|
||||||
SEALED_KEYWORD to EnumSet.of(CLASS, LOCAL_CLASS, INNER_CLASS),
|
SEALED_KEYWORD to EnumSet.of(CLASS_ONLY, LOCAL_CLASS, INNER_CLASS),
|
||||||
INNER_KEYWORD to EnumSet.of(INNER_CLASS),
|
INNER_KEYWORD to EnumSet.of(INNER_CLASS),
|
||||||
OVERRIDE_KEYWORD to EnumSet.of(MEMBER_PROPERTY, MEMBER_FUNCTION),
|
OVERRIDE_KEYWORD to EnumSet.of(MEMBER_PROPERTY, MEMBER_FUNCTION),
|
||||||
PRIVATE_KEYWORD to EnumSet.of(CLASSIFIER, MEMBER_FUNCTION, TOP_LEVEL_FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER,
|
PRIVATE_KEYWORD to EnumSet.of(CLASS, CLASSIFIER, MEMBER_FUNCTION, TOP_LEVEL_FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER,
|
||||||
MEMBER_PROPERTY, TOP_LEVEL_PROPERTY, CONSTRUCTOR),
|
MEMBER_PROPERTY, TOP_LEVEL_PROPERTY, CONSTRUCTOR),
|
||||||
PUBLIC_KEYWORD to EnumSet.of(CLASSIFIER, MEMBER_FUNCTION, TOP_LEVEL_FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER,
|
PUBLIC_KEYWORD to EnumSet.of(CLASS, CLASSIFIER, MEMBER_FUNCTION, TOP_LEVEL_FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER,
|
||||||
MEMBER_PROPERTY, TOP_LEVEL_PROPERTY, CONSTRUCTOR),
|
MEMBER_PROPERTY, TOP_LEVEL_PROPERTY, CONSTRUCTOR),
|
||||||
INTERNAL_KEYWORD to EnumSet.of(CLASSIFIER, MEMBER_FUNCTION, TOP_LEVEL_FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER,
|
INTERNAL_KEYWORD to EnumSet.of(CLASS, CLASSIFIER, MEMBER_FUNCTION, TOP_LEVEL_FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER,
|
||||||
MEMBER_PROPERTY, TOP_LEVEL_PROPERTY, CONSTRUCTOR),
|
MEMBER_PROPERTY, TOP_LEVEL_PROPERTY, CONSTRUCTOR),
|
||||||
PROTECTED_KEYWORD to EnumSet.of(CLASSIFIER, MEMBER_FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER, MEMBER_PROPERTY, CONSTRUCTOR),
|
PROTECTED_KEYWORD to EnumSet.of(CLASS, CLASSIFIER, MEMBER_FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER, MEMBER_PROPERTY, CONSTRUCTOR),
|
||||||
IN_KEYWORD to EnumSet.of(TYPE_PARAMETER, TYPE_PROJECTION),
|
IN_KEYWORD to EnumSet.of(TYPE_PARAMETER, TYPE_PROJECTION),
|
||||||
OUT_KEYWORD to EnumSet.of(TYPE_PARAMETER, TYPE_PROJECTION),
|
OUT_KEYWORD to EnumSet.of(TYPE_PARAMETER, TYPE_PROJECTION),
|
||||||
REIFIED_KEYWORD to EnumSet.of(TYPE_PARAMETER),
|
REIFIED_KEYWORD to EnumSet.of(TYPE_PARAMETER),
|
||||||
VARARG_KEYWORD to EnumSet.of(VALUE_PARAMETER, PROPERTY_PARAMETER),
|
VARARG_KEYWORD to EnumSet.of(VALUE_PARAMETER, PROPERTY_PARAMETER),
|
||||||
COMPANION_KEYWORD to EnumSet.of(OBJECT),
|
COMPANION_KEYWORD to EnumSet.of(OBJECT),
|
||||||
LATE_INIT_KEYWORD to EnumSet.of(MEMBER_PROPERTY),
|
LATE_INIT_KEYWORD to EnumSet.of(MEMBER_PROPERTY),
|
||||||
DATA_KEYWORD to EnumSet.of(CLASSIFIER),
|
DATA_KEYWORD to EnumSet.of(CLASS, CLASSIFIER),
|
||||||
INLINE_KEYWORD to EnumSet.of(FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER, PROPERTY),
|
INLINE_KEYWORD to EnumSet.of(FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER, PROPERTY),
|
||||||
NOINLINE_KEYWORD to EnumSet.of(VALUE_PARAMETER),
|
NOINLINE_KEYWORD to EnumSet.of(VALUE_PARAMETER),
|
||||||
TAILREC_KEYWORD to EnumSet.of(FUNCTION),
|
TAILREC_KEYWORD to EnumSet.of(FUNCTION),
|
||||||
@@ -75,10 +75,10 @@ public object ModifierCheckerCore {
|
|||||||
)
|
)
|
||||||
|
|
||||||
private val possibleParentTargetMap = mapOf<JetModifierKeywordToken, Set<KotlinTarget>>(
|
private val possibleParentTargetMap = mapOf<JetModifierKeywordToken, Set<KotlinTarget>>(
|
||||||
INNER_KEYWORD to EnumSet.of(CLASS, INNER_CLASS, LOCAL_CLASS, ENUM_CLASS, ENUM_ENTRY),
|
INNER_KEYWORD to EnumSet.of(CLASS_ONLY, INNER_CLASS, LOCAL_CLASS, ENUM_CLASS, ENUM_ENTRY),
|
||||||
OVERRIDE_KEYWORD to EnumSet.of(CLASSIFIER, ENUM_ENTRY),
|
OVERRIDE_KEYWORD to EnumSet.of(CLASS, CLASSIFIER, ENUM_ENTRY),
|
||||||
PROTECTED_KEYWORD to EnumSet.of(CLASSIFIER, ENUM_ENTRY),
|
PROTECTED_KEYWORD to EnumSet.of(CLASS, CLASSIFIER, ENUM_ENTRY),
|
||||||
COMPANION_KEYWORD to EnumSet.of(CLASS, ENUM_CLASS, INTERFACE)
|
COMPANION_KEYWORD to EnumSet.of(CLASS_ONLY, ENUM_CLASS, INTERFACE)
|
||||||
)
|
)
|
||||||
|
|
||||||
// First modifier in pair should be also first in declaration
|
// First modifier in pair should be also first in declaration
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package foo
|
package foo
|
||||||
|
|
||||||
@Target(AnnotationTarget.CLASSIFIER, AnnotationTarget.FUNCTION, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.EXPRESSION)
|
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.EXPRESSION)
|
||||||
annotation class fancy
|
annotation class fancy
|
||||||
|
|
||||||
@fancy
|
@fancy
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
@Target(AnnotationTarget.CLASSIFIER)
|
@Target(AnnotationTarget.CLASS)
|
||||||
annotation class classifier
|
annotation class classifier
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASSIFIER}) kotlin.annotation.annotation() public final class classifier : kotlin.Annotation {
|
kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS}) kotlin.annotation.annotation() public final class classifier : kotlin.Annotation {
|
||||||
public constructor classifier()
|
public constructor classifier()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
@Target(AnnotationTarget.CLASSIFIER, AnnotationTarget.FUNCTION)
|
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION)
|
||||||
annotation class multiple
|
annotation class multiple
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASSIFIER, AnnotationTarget.FUNCTION}) kotlin.annotation.annotation() public final class multiple : kotlin.Annotation {
|
kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FUNCTION}) kotlin.annotation.annotation() public final class multiple : kotlin.Annotation {
|
||||||
public constructor multiple()
|
public constructor multiple()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||||
@Target(AnnotationTarget.TYPE, AnnotationTarget.CLASSIFIER,
|
@Target(AnnotationTarget.TYPE, AnnotationTarget.CLASS,
|
||||||
AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION,
|
AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION,
|
||||||
AnnotationTarget.EXPRESSION, AnnotationTarget.PROPERTY)
|
AnnotationTarget.EXPRESSION, AnnotationTarget.PROPERTY)
|
||||||
@Retention(AnnotationRetention.SOURCE)
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ Ann(x = 1) Ann(x = 2) Ann(x = 3) private final class A {
|
|||||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPE, AnnotationTarget.CLASSIFIER, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.EXPRESSION, AnnotationTarget.PROPERTY}) kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) kotlin.annotation.Repeatable() kotlin.annotation.annotation() public final class Ann : kotlin.Annotation {
|
kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPE, AnnotationTarget.CLASS, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.EXPRESSION, AnnotationTarget.PROPERTY}) kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) kotlin.annotation.Repeatable() kotlin.annotation.annotation() public final class Ann : kotlin.Annotation {
|
||||||
public constructor Ann(/*0*/ x: kotlin.Int = ...)
|
public constructor Ann(/*0*/ x: kotlin.Int = ...)
|
||||||
public final val 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 equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
import java.lang.annotation.*
|
import java.lang.annotation.*
|
||||||
|
|
||||||
<!DEPRECATED_JAVA_ANNOTATION!>@java.lang.annotation.Target(ElementType.PACKAGE)<!>
|
<!DEPRECATED_JAVA_ANNOTATION!>@java.lang.annotation.Target(ElementType.PACKAGE)<!>
|
||||||
@Target(AnnotationTarget.CLASSIFIER)
|
@Target(AnnotationTarget.CLASS)
|
||||||
annotation class my
|
annotation class my
|
||||||
|
|
||||||
<!DEPRECATED_JAVA_ANNOTATION!>@java.lang.annotation.Retention(RetentionPolicy.SOURCE)<!>
|
<!DEPRECATED_JAVA_ANNOTATION!>@java.lang.annotation.Retention(RetentionPolicy.SOURCE)<!>
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
package
|
package
|
||||||
|
|
||||||
java.lang.annotation.Target(value = {ElementType.PACKAGE}) kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASSIFIER}) kotlin.annotation.annotation() public final class my : kotlin.Annotation {
|
java.lang.annotation.Target(value = {ElementType.PACKAGE}) kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS}) kotlin.annotation.annotation() public final class my : kotlin.Annotation {
|
||||||
public constructor my()
|
public constructor my()
|
||||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
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 hashCode(): kotlin.Int
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
@Target(AnnotationTarget.CLASSIFIER)
|
@Target(AnnotationTarget.CLASS)
|
||||||
annotation class base
|
annotation class base
|
||||||
|
|
||||||
@base data class My
|
@base data class My
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ base() kotlin.data() public final class My {
|
|||||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASSIFIER}) kotlin.annotation.annotation() public final class base : kotlin.Annotation {
|
kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS}) kotlin.annotation.annotation() public final class base : kotlin.Annotation {
|
||||||
public constructor base()
|
public constructor base()
|
||||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
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 hashCode(): kotlin.Int
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||||
@Target(AnnotationTarget.CLASSIFIER) annotation class base
|
@Target(AnnotationTarget.CLASS) annotation class base
|
||||||
|
|
||||||
@base annotation class derived
|
@base annotation class derived
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -22,7 +22,7 @@ base() public final enum class My : kotlin.Enum<My> {
|
|||||||
public final /*synthesized*/ fun values(): kotlin.Array<My>
|
public final /*synthesized*/ fun values(): kotlin.Array<My>
|
||||||
}
|
}
|
||||||
|
|
||||||
kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASSIFIER}) kotlin.annotation.annotation() public final class base : kotlin.Annotation {
|
kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS}) kotlin.annotation.annotation() public final class base : kotlin.Annotation {
|
||||||
public constructor base()
|
public constructor base()
|
||||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
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 hashCode(): kotlin.Int
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ package test {
|
|||||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASSIFIER, AnnotationTarget.FILE}) public final class type : kotlin.Annotation {
|
kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FILE}) public final class type : kotlin.Annotation {
|
||||||
public constructor type()
|
public constructor type()
|
||||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
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 hashCode(): kotlin.Int
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
@Target(AnnotationTarget.CLASSIFIER)
|
@Target(AnnotationTarget.CLASS)
|
||||||
annotation class base
|
annotation class base
|
||||||
|
|
||||||
@Target(AnnotationTarget.ANNOTATION_CLASS)
|
@Target(AnnotationTarget.ANNOTATION_CLASS)
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ base() public final class Outer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASSIFIER}) kotlin.annotation.annotation() public final class base : kotlin.Annotation {
|
kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS}) kotlin.annotation.annotation() public final class base : kotlin.Annotation {
|
||||||
public constructor base()
|
public constructor base()
|
||||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
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 hashCode(): kotlin.Int
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ public open class AnnotationTargets {
|
|||||||
public constructor parameter()
|
public constructor parameter()
|
||||||
}
|
}
|
||||||
|
|
||||||
kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASSIFIER, AnnotationTarget.FILE}) public final class type : kotlin.Annotation {
|
kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FILE}) public final class type : kotlin.Annotation {
|
||||||
public constructor type()
|
public constructor type()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -2,5 +2,5 @@
|
|||||||
|
|
||||||
package test
|
package test
|
||||||
|
|
||||||
@Target(AnnotationTarget.CLASSIFIER)
|
@Target(AnnotationTarget.CLASS)
|
||||||
public annotation class TargetedAnnotation
|
public annotation class TargetedAnnotation
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
package test
|
package test
|
||||||
|
|
||||||
kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASSIFIER}) kotlin.annotation.annotation() public final class TargetedAnnotation : kotlin.Annotation {
|
kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS}) kotlin.annotation.annotation() public final class TargetedAnnotation : kotlin.Annotation {
|
||||||
/*primary*/ public constructor TargetedAnnotation()
|
/*primary*/ public constructor TargetedAnnotation()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ package kotlin.annotation
|
|||||||
public enum class AnnotationTarget {
|
public enum class AnnotationTarget {
|
||||||
/** Class, interface or object, annotation class is also included */
|
/** Class, interface or object, annotation class is also included */
|
||||||
CLASSIFIER,
|
CLASSIFIER,
|
||||||
|
CLASS,
|
||||||
/** Annotation class only */
|
/** Annotation class only */
|
||||||
ANNOTATION_CLASS,
|
ANNOTATION_CLASS,
|
||||||
/** Generic type parameter (unsupported yet) */
|
/** Generic type parameter (unsupported yet) */
|
||||||
|
|||||||
+1
-1
@@ -156,7 +156,7 @@ class JavaRetentionAnnotationDescriptor(
|
|||||||
|
|
||||||
public object JavaAnnotationTargetMapper {
|
public object JavaAnnotationTargetMapper {
|
||||||
private val targetNameLists = mapOf("PACKAGE" to EnumSet.noneOf(KotlinTarget::class.java),
|
private val targetNameLists = mapOf("PACKAGE" to EnumSet.noneOf(KotlinTarget::class.java),
|
||||||
"TYPE" to EnumSet.of(KotlinTarget.CLASSIFIER, KotlinTarget.FILE),
|
"TYPE" to EnumSet.of(KotlinTarget.CLASS, KotlinTarget.FILE),
|
||||||
"ANNOTATION_TYPE" to EnumSet.of(KotlinTarget.ANNOTATION_CLASS),
|
"ANNOTATION_TYPE" to EnumSet.of(KotlinTarget.ANNOTATION_CLASS),
|
||||||
"TYPE_PARAMETER" to EnumSet.of(KotlinTarget.TYPE_PARAMETER),
|
"TYPE_PARAMETER" to EnumSet.of(KotlinTarget.TYPE_PARAMETER),
|
||||||
"FIELD" to EnumSet.of(KotlinTarget.FIELD),
|
"FIELD" to EnumSet.of(KotlinTarget.FIELD),
|
||||||
|
|||||||
@@ -24,7 +24,8 @@ import java.util.*
|
|||||||
// NOTE: this enum must have the same entries with kotlin.annotation.AnnotationTarget,
|
// NOTE: this enum must have the same entries with kotlin.annotation.AnnotationTarget,
|
||||||
// and may also have some additional entries
|
// and may also have some additional entries
|
||||||
public enum class KotlinTarget(val description: String, val isDefault: Boolean = true) {
|
public enum class KotlinTarget(val description: String, val isDefault: Boolean = true) {
|
||||||
CLASSIFIER("classifier"), // includes CLASS, OBJECT, INTERFACE, *_CLASS but not ENUM_ENTRY
|
CLASSIFIER("class"), // deprecated: migrates to CLASS
|
||||||
|
CLASS("class"), // includes CLASS_ONLY, OBJECT, INTERFACE, *_CLASS but not ENUM_ENTRY
|
||||||
ANNOTATION_CLASS("annotation class"),
|
ANNOTATION_CLASS("annotation class"),
|
||||||
TYPE_PARAMETER("type parameter", false),
|
TYPE_PARAMETER("type parameter", false),
|
||||||
PROPERTY("property"), // includes *_PROPERTY, PROPERTY_PARAMETER, ENUM_ENTRY
|
PROPERTY("property"), // includes *_PROPERTY, PROPERTY_PARAMETER, ENUM_ENTRY
|
||||||
@@ -43,7 +44,7 @@ public enum class KotlinTarget(val description: String, val isDefault: Boolean =
|
|||||||
STAR_PROJECTION("star projection", false),
|
STAR_PROJECTION("star projection", false),
|
||||||
PROPERTY_PARAMETER("property constructor parameter", false),
|
PROPERTY_PARAMETER("property constructor parameter", false),
|
||||||
|
|
||||||
CLASS("class", false),
|
CLASS_ONLY("class", false), // includes only top level classes and nested classes (but not enums, objects, interfaces, inner or local classes)
|
||||||
OBJECT("object", false),
|
OBJECT("object", false),
|
||||||
INTERFACE("interface", false),
|
INTERFACE("interface", false),
|
||||||
ENUM_CLASS("enum class", false),
|
ENUM_CLASS("enum class", false),
|
||||||
@@ -79,25 +80,25 @@ public enum class KotlinTarget(val description: String, val isDefault: Boolean =
|
|||||||
public val ALL_TARGET_SET: Set<KotlinTarget> = values().toSet()
|
public val ALL_TARGET_SET: Set<KotlinTarget> = values().toSet()
|
||||||
|
|
||||||
public fun classActualTargets(descriptor: ClassDescriptor): List<KotlinTarget> = when (descriptor.kind) {
|
public fun classActualTargets(descriptor: ClassDescriptor): List<KotlinTarget> = when (descriptor.kind) {
|
||||||
ClassKind.ANNOTATION_CLASS -> listOf(ANNOTATION_CLASS, CLASSIFIER)
|
ClassKind.ANNOTATION_CLASS -> listOf(ANNOTATION_CLASS, CLASS, CLASSIFIER)
|
||||||
ClassKind.CLASS ->
|
ClassKind.CLASS ->
|
||||||
if (descriptor.isInner) {
|
if (descriptor.isInner) {
|
||||||
listOf(INNER_CLASS, CLASSIFIER)
|
listOf(INNER_CLASS, CLASS, CLASSIFIER)
|
||||||
}
|
}
|
||||||
else if (DescriptorUtils.isLocal(descriptor)) {
|
else if (DescriptorUtils.isLocal(descriptor)) {
|
||||||
listOf(LOCAL_CLASS, CLASSIFIER)
|
listOf(LOCAL_CLASS, CLASS, CLASSIFIER)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
listOf(CLASS, CLASSIFIER)
|
listOf(CLASS_ONLY, CLASS, CLASSIFIER)
|
||||||
}
|
}
|
||||||
ClassKind.OBJECT -> listOf(OBJECT, CLASSIFIER)
|
ClassKind.OBJECT -> listOf(OBJECT, CLASS, CLASSIFIER)
|
||||||
ClassKind.INTERFACE -> listOf(INTERFACE, CLASSIFIER)
|
ClassKind.INTERFACE -> listOf(INTERFACE, CLASS, CLASSIFIER)
|
||||||
ClassKind.ENUM_CLASS ->
|
ClassKind.ENUM_CLASS ->
|
||||||
if (DescriptorUtils.isLocal(descriptor)) {
|
if (DescriptorUtils.isLocal(descriptor)) {
|
||||||
listOf(LOCAL_CLASS, CLASSIFIER)
|
listOf(LOCAL_CLASS, CLASS, CLASSIFIER)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
listOf(ENUM_CLASS, CLASSIFIER)
|
listOf(ENUM_CLASS, CLASS, CLASSIFIER)
|
||||||
}
|
}
|
||||||
ClassKind.ENUM_ENTRY -> listOf(ENUM_ENTRY, PROPERTY, FIELD)
|
ClassKind.ENUM_ENTRY -> listOf(ENUM_ENTRY, PROPERTY, FIELD)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
package dependency
|
package dependency
|
||||||
|
|
||||||
@Target(AnnotationTarget.CLASSIFIER, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY,
|
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY,
|
||||||
AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.TYPE)
|
AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.TYPE)
|
||||||
annotation class A(val s: String)
|
annotation class A(val s: String)
|
||||||
|
|
||||||
@Target(AnnotationTarget.CLASSIFIER, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY,
|
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY,
|
||||||
AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.TYPE)
|
AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.TYPE)
|
||||||
annotation class B(val i: Int)
|
annotation class B(val i: Int)
|
||||||
|
|
||||||
@Target(AnnotationTarget.CLASSIFIER, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY,
|
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY,
|
||||||
AnnotationTarget.VALUE_PARAMETER)
|
AnnotationTarget.VALUE_PARAMETER)
|
||||||
annotation class C
|
annotation class C
|
||||||
|
|||||||
@@ -27,10 +27,10 @@ a public class Annotations private @a constructor(private @property:a @param:a v
|
|||||||
|
|
||||||
@Target(AnnotationTarget.PROPERTY, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.FUNCTION,
|
@Target(AnnotationTarget.PROPERTY, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.FUNCTION,
|
||||||
AnnotationTarget.CONSTRUCTOR, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER,
|
AnnotationTarget.CONSTRUCTOR, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER,
|
||||||
AnnotationTarget.TYPE, AnnotationTarget.CLASSIFIER)
|
AnnotationTarget.TYPE, AnnotationTarget.CLASS)
|
||||||
annotation class a
|
annotation class a
|
||||||
|
|
||||||
@Target(AnnotationTarget.PROPERTY, AnnotationTarget.FUNCTION, AnnotationTarget.CLASSIFIER,
|
@Target(AnnotationTarget.PROPERTY, AnnotationTarget.FUNCTION, AnnotationTarget.CLASS,
|
||||||
AnnotationTarget.CONSTRUCTOR, AnnotationTarget.TYPE)
|
AnnotationTarget.CONSTRUCTOR, AnnotationTarget.TYPE)
|
||||||
@Retention(AnnotationRetention.SOURCE)
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
@Repeatable
|
@Repeatable
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
<info descr="null" textAttributesKey="KOTLIN_ANNOTATION">@Target</info>(<info descr="null" textAttributesKey="KOTLIN_CLASS">AnnotationTarget</info>.<info descr="null" textAttributesKey="KOTLIN_ENUM_ENTRY">CLASSIFIER</info>, <info descr="null" textAttributesKey="KOTLIN_CLASS">AnnotationTarget</info>.<info descr="null" textAttributesKey="KOTLIN_ENUM_ENTRY">EXPRESSION</info>)
|
<info descr="null" textAttributesKey="KOTLIN_ANNOTATION">@Target</info>(<info descr="null" textAttributesKey="KOTLIN_CLASS">AnnotationTarget</info>.<info descr="null" textAttributesKey="KOTLIN_ENUM_ENTRY">CLASS</info>, <info descr="null" textAttributesKey="KOTLIN_CLASS">AnnotationTarget</info>.<info descr="null" textAttributesKey="KOTLIN_ENUM_ENTRY">EXPRESSION</info>)
|
||||||
<info descr="null">annotation</info> class <info descr="null">Ann</info>
|
<info descr="null">annotation</info> class <info descr="null">Ann</info>
|
||||||
|
|
||||||
<info descr="null" textAttributesKey="KOTLIN_ANNOTATION">@Ann</info> class <info descr="null">A</info>
|
<info descr="null" textAttributesKey="KOTLIN_ANNOTATION">@Ann</info> class <info descr="null">A</info>
|
||||||
|
|||||||
Reference in New Issue
Block a user