diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/AnnotationCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/AnnotationCodegen.java index b8a50b0e375..51e27432c74 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/AnnotationCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/AnnotationCodegen.java @@ -99,28 +99,13 @@ public abstract class AnnotationCodegen { * @param returnType can be null if not applicable (e.g. {@code annotated} is a class) */ public void genAnnotations(@Nullable Annotated annotated, @Nullable Type returnType) { - genAnnotations(annotated, returnType, null); - } - - public void genAnnotations(@Nullable Annotated annotated, @Nullable Type returnType, @Nullable AnnotationUseSiteTarget allowedTarget) { - if (annotated == null) { - return; - } + if (annotated == null) return; Set annotationDescriptorsAlreadyPresent = new HashSet<>(); Annotations annotations = annotated.getAnnotations(); - for (AnnotationWithTarget annotationWithTarget : annotations.getAllAnnotations()) { - AnnotationDescriptor annotation = annotationWithTarget.getAnnotation(); - AnnotationUseSiteTarget annotationTarget = annotationWithTarget.getTarget(); - - // Skip targeted annotations by default - if (allowedTarget == null && annotationTarget != null) continue; - - // Skip if the target is not the same - if (allowedTarget != null && annotationTarget != null && allowedTarget != annotationTarget) continue; - + for (AnnotationDescriptor annotation : annotations) { Set applicableTargets = AnnotationChecker.applicableTargetSet(annotation); if (annotated instanceof AnonymousFunctionDescriptor && !applicableTargets.contains(KotlinTarget.FUNCTION) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java index c4e535121ee..22e47799214 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java @@ -28,7 +28,6 @@ import org.jetbrains.kotlin.config.LanguageFeature; import org.jetbrains.kotlin.descriptors.*; import org.jetbrains.kotlin.descriptors.annotations.Annotated; import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor; -import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget; import org.jetbrains.kotlin.descriptors.annotations.AnnotationUtilKt; import org.jetbrains.kotlin.descriptors.impl.AnonymousFunctionDescriptor; import org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl; @@ -72,8 +71,6 @@ import static org.jetbrains.kotlin.codegen.AsmUtil.*; import static org.jetbrains.kotlin.codegen.serialization.JvmSerializationBindings.METHOD_FOR_FUNCTION; import static org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.DECLARATION; import static org.jetbrains.kotlin.descriptors.ModalityKt.isOverridable; -import static org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget.PROPERTY_GETTER; -import static org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget.PROPERTY_SETTER; import static org.jetbrains.kotlin.descriptors.annotations.AnnotationUtilKt.isEffectivelyInlineOnly; import static org.jetbrains.kotlin.resolve.DescriptorToSourceUtils.getSourceFromDescriptor; import static org.jetbrains.kotlin.resolve.DescriptorUtils.*; @@ -232,9 +229,9 @@ public class FunctionCodegen { v.getSerializationBindings().put(METHOD_FOR_FUNCTION, CodegenUtilKt.unwrapFrontendVersion(functionDescriptor), asmMethod); } - generateMethodAnnotations(functionDescriptor, asmMethod, mv, memberCodegen, typeMapper); + AnnotationCodegen.forMethod(mv, memberCodegen, typeMapper).genAnnotations(functionDescriptor, asmMethod.getReturnType()); - generateParameterAnnotations(functionDescriptor, mv, jvmSignature); + generateParameterAnnotations(functionDescriptor, mv, jvmSignature, memberCodegen, state); GenerateJava8ParameterNamesKt.generateParameterNames(functionDescriptor, mv, jvmSignature, state, (flags & ACC_SYNTHETIC) != 0); if (contextKind != OwnerKind.ERASED_INLINE_CLASS) { @@ -474,32 +471,6 @@ public class FunctionCodegen { ); } - public static void generateMethodAnnotations( - @NotNull FunctionDescriptor functionDescriptor, - Method asmMethod, - MethodVisitor mv, - @NotNull InnerClassConsumer consumer, - @NotNull KotlinTypeMapper typeMapper - ) { - AnnotationCodegen annotationCodegen = AnnotationCodegen.forMethod(mv, consumer, typeMapper); - - if (functionDescriptor instanceof PropertyAccessorDescriptor) { - AnnotationUseSiteTarget target = functionDescriptor instanceof PropertySetterDescriptor ? PROPERTY_SETTER : PROPERTY_GETTER; - annotationCodegen.genAnnotations(functionDescriptor, asmMethod.getReturnType(), target); - } - else { - annotationCodegen.genAnnotations(functionDescriptor, asmMethod.getReturnType()); - } - } - - private void generateParameterAnnotations( - @NotNull FunctionDescriptor functionDescriptor, - @NotNull MethodVisitor mv, - @NotNull JvmMethodSignature jvmSignature - ) { - generateParameterAnnotations(functionDescriptor, mv, jvmSignature, memberCodegen, state); - } - public static void generateParameterAnnotations( @NotNull FunctionDescriptor functionDescriptor, @NotNull MethodVisitor mv, diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/MemberCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/MemberCodegen.java index 7404c2811c2..9e68c622a2a 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/MemberCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/MemberCodegen.java @@ -21,7 +21,6 @@ import org.jetbrains.kotlin.codegen.state.GenerationState; import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper; import org.jetbrains.kotlin.descriptors.*; import org.jetbrains.kotlin.descriptors.annotations.AnnotatedImpl; -import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget; import org.jetbrains.kotlin.descriptors.annotations.Annotations; import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl; import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil; @@ -249,19 +248,18 @@ public abstract class MemberCodegen