diff --git a/compiler/frontend/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationSplitter.kt b/compiler/frontend/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationSplitter.kt index bd23f90830a..8860078dee4 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationSplitter.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationSplitter.kt @@ -43,9 +43,9 @@ public class AnnotationSplitter( applicableTargetsLazy: () -> Set ) { 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 { 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 { return hashSetOf(PROPERTY, PROPERTY_GETTER).apply { if (parameter) add(CONSTRUCTOR_PARAMETER) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/AnnotationChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/AnnotationChecker.kt index 4bd22c9222d..507ead78a09 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/AnnotationChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/AnnotationChecker.kt @@ -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) { @@ -146,7 +145,7 @@ public class AnnotationChecker(private val additionalCheckers: Iterable { 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 = listOf() private var onlyWithUseSiteTarget: List = listOf() - fun canBeSubstituted(vararg targets: KotlinTarget) { + fun extraTargets(vararg targets: KotlinTarget) { canBeSubstituted = targets.toList() } diff --git a/compiler/testData/codegen/bytecodeListing/annotations/defaultTargets.kt b/compiler/testData/codegen/bytecodeListing/annotations/defaultTargets.kt index 3613f6c692d..80d4d4a14aa 100644 --- a/compiler/testData/codegen/bytecodeListing/annotations/defaultTargets.kt +++ b/compiler/testData/codegen/bytecodeListing/annotations/defaultTargets.kt @@ -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 } \ No newline at end of file diff --git a/compiler/testData/codegen/bytecodeListing/annotations/defaultTargets.txt b/compiler/testData/codegen/bytecodeListing/annotations/defaultTargets.txt index 8e348499f27..a538cc95130 100644 --- a/compiler/testData/codegen/bytecodeListing/annotations/defaultTargets.txt +++ b/compiler/testData/codegen/bytecodeListing/annotations/defaultTargets.txt @@ -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 (): 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 (@AnnParameterProperty p0: int): void + @AnnProperty @AnnFieldProperty @AnnParameterProperty method a$annotations(): void + method getA(): int + @AnnProperty @AnnFieldProperty method x$annotations(): void + method getX(): int + method (@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 \ No newline at end of file +@kotlin.annotation.Target @java.lang.annotation.Retention @java.lang.annotation.Target @kotlin.jvm.internal.KotlinClass AnnTypeField \ No newline at end of file diff --git a/compiler/testData/codegen/bytecodeListing/annotations/onProperties.txt b/compiler/testData/codegen/bytecodeListing/annotations/onProperties.txt index 98d92bb195f..e9a2d2a160f 100644 --- a/compiler/testData/codegen/bytecodeListing/annotations/onProperties.txt +++ b/compiler/testData/codegen/bytecodeListing/annotations/onProperties.txt @@ -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 (): 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 diff --git a/compiler/testData/diagnostics/tests/annotations/options/targets/accessors.kt b/compiler/testData/diagnostics/tests/annotations/options/targets/accessors.kt index befd97855d5..d54e84e8e97 100644 --- a/compiler/testData/diagnostics/tests/annotations/options/targets/accessors.kt +++ b/compiler/testData/diagnostics/tests/annotations/options/targets/accessors.kt @@ -8,9 +8,9 @@ annotation class smartset annotation class base class My(x: Int) { - @smartget var y = x + @smartget var y = x @base @smartget @smartset get @base @smartget @smartset set @base @smartget @smartset fun foo() = y -} +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/annotations/options/targets/accessors.txt b/compiler/testData/diagnostics/tests/annotations/options/targets/accessors.txt index 30ae00962da..e158f67de80 100644 --- a/compiler/testData/diagnostics/tests/annotations/options/targets/accessors.txt +++ b/compiler/testData/diagnostics/tests/annotations/options/targets/accessors.txt @@ -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 diff --git a/compiler/testData/diagnostics/tests/annotations/withUseSiteTarget/repeatable.txt b/compiler/testData/diagnostics/tests/annotations/withUseSiteTarget/repeatable.txt index 6b503ea9ca7..b2c685f9181 100644 --- a/compiler/testData/diagnostics/tests/annotations/withUseSiteTarget/repeatable.txt +++ b/compiler/testData/diagnostics/tests/annotations/withUseSiteTarget/repeatable.txt @@ -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 diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationApplicability/jvmName.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationApplicability/jvmName.kt index 444b52132d8..0b6a5473a0a 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationApplicability/jvmName.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationApplicability/jvmName.kt @@ -6,10 +6,10 @@ fun foo() {} @JvmName("b") fun Any.foo() {} -@JvmName("c") +@JvmName("c") val px = 1 -@JvmName("d") +@JvmName("d") val Any.px : Int get() = 1 @@ -39,10 +39,10 @@ class C @JvmName("primary") constructor() { @JvmName("b") fun Any.foo() {} - @JvmName("c") + @JvmName("c") val px = 1 - @JvmName("d") + @JvmName("d") val Any.px : Int get() = 1 diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationApplicability/jvmName.txt b/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationApplicability/jvmName.txt index 3d868cf37c5..df7b5e770b3 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationApplicability/jvmName.txt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationApplicability/jvmName.txt @@ -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 diff --git a/compiler/testData/serialization/local/annotationsInLocalClass.kt b/compiler/testData/serialization/local/annotationsInLocalClass.kt index 4844453be76..3830b982ad4 100644 --- a/compiler/testData/serialization/local/annotationsInLocalClass.kt +++ b/compiler/testData/serialization/local/annotationsInLocalClass.kt @@ -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 }