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 2d1a0be80f7..331a847369d 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationSplitter.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationSplitter.kt @@ -78,6 +78,7 @@ public class AnnotationSplitter( val map = hashMapOf>() val other = arrayListOf() val applicableTargets = applicableTargetsLazy() + val applicableTargetsWithoutUseSiteTarget = applicableTargets.intersect(TARGET_PRIORITIES) outer@ for (annotationWithTarget in allAnnotations.getAllAnnotations()) { val useSiteTarget = annotationWithTarget.target @@ -91,7 +92,7 @@ public class AnnotationSplitter( } for (target in TARGET_PRIORITIES) { - if (target !in applicableTargets) continue + if (target !in applicableTargetsWithoutUseSiteTarget) continue val declarationSiteTargetForCurrentTarget = KotlinTarget.USE_SITE_MAPPING[target] ?: continue val applicableTargetsForAnnotation = AnnotationChecker.applicableTargetSet(annotationWithTarget.annotation) @@ -115,7 +116,7 @@ public class AnnotationSplitter( return CompositeAnnotations(targets.map { getAnnotationsForTarget(it) }) } - private inner class LazySplitAnnotations(storageManager: StorageManager, target: AnnotationUseSiteTarget?) : Annotations { + private inner class LazySplitAnnotations(storageManager: StorageManager, val target: AnnotationUseSiteTarget?) : Annotations { private val annotations by storageManager.createLazyValue { val splitAnnotations = this@AnnotationSplitter.splitAnnotations() diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/DescriptorResolver.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/DescriptorResolver.java index 11d4e95d88c..1517ae08d6c 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/DescriptorResolver.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/DescriptorResolver.java @@ -1067,7 +1067,6 @@ public class DescriptorResolver { if (getter != null) { Annotations getterAnnotations = new CompositeAnnotations(CollectionsKt.listOf( annotationSplitter.getAnnotationsForTarget(PROPERTY_GETTER), - annotationSplitter.getOtherAnnotations(), annotationResolver.resolveAnnotationsWithoutArguments(scope, getter.getModifierList(), trace))); JetType outType = propertyDescriptor.getType(); diff --git a/compiler/testData/codegen/bytecodeListing/annotations/defaultTargets.kt b/compiler/testData/codegen/bytecodeListing/annotations/defaultTargets.kt index 80d4d4a14aa..6f464df4557 100644 --- a/compiler/testData/codegen/bytecodeListing/annotations/defaultTargets.kt +++ b/compiler/testData/codegen/bytecodeListing/annotations/defaultTargets.kt @@ -24,4 +24,15 @@ public class A( @AnnProperty @AnnField @AnnFieldProperty @AnnParameterProperty @AnnParameterField @AnnTypeField public val a: Int = 1 -} \ No newline at end of file +} + +@Target(AnnotationTarget.FIELD) +annotation class Anno + +@Anno +val p: Int + get() = 5 + +@Anno +val p2: Int = 4 + get() = field \ 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 8208f0153da..31666333918 100644 --- a/compiler/testData/codegen/bytecodeListing/annotations/defaultTargets.txt +++ b/compiler/testData/codegen/bytecodeListing/annotations/defaultTargets.txt @@ -19,3 +19,20 @@ @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 AnnTypeField + +@kotlin.annotation.Target @java.lang.annotation.Retention @java.lang.annotation.Target @kotlin.jvm.internal.KotlinClass Anno + +@kotlin.jvm.internal.KotlinFileFacade DefaultTargetsKt { + @Anno field p2: int + public method getP(): int + public method getP2(): int + method (): void +} + +@java.lang.Deprecated @kotlin.jvm.internal.KotlinPackage _DefaultPackage { + public synthetic field $kotlinPackage: kotlin.reflect.KPackage + public synthetic field $moduleName: java.lang.String + method (): void + public @kotlin.jvm.internal.KotlinDelegatedMethod method getP(): int + public @kotlin.jvm.internal.KotlinDelegatedMethod method getP2(): int +}