From 6e415984f02a338bca97749ec83b4988e1597edb Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Mon, 3 Aug 2015 20:08:16 +0300 Subject: [PATCH] Move AnnotatedWithAdditionalAnnotations to backend --- .../kotlin/codegen/FunctionCodegen.java | 2 +- .../AnnotatedWithAdditionalAnnotations.kt | 54 +++++++++++++++++++ .../annotations/AnnotationWithTarget.kt | 36 +------------ 3 files changed, 56 insertions(+), 36 deletions(-) create mode 100644 compiler/backend/src/org/jetbrains/kotlin/codegen/annotation/AnnotatedWithAdditionalAnnotations.kt diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java index 49a0f49c2c6..7071b957bec 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java @@ -26,6 +26,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.backend.common.bridges.Bridge; import org.jetbrains.kotlin.backend.common.bridges.BridgesPackage; +import org.jetbrains.kotlin.codegen.annotation.AnnotatedWithAdditionalAnnotations; import org.jetbrains.kotlin.codegen.context.CodegenContext; import org.jetbrains.kotlin.codegen.context.MethodContext; import org.jetbrains.kotlin.codegen.context.PackageContext; @@ -35,7 +36,6 @@ import org.jetbrains.kotlin.codegen.state.GenerationState; import org.jetbrains.kotlin.codegen.state.JetTypeMapper; import org.jetbrains.kotlin.descriptors.*; import org.jetbrains.kotlin.descriptors.annotations.Annotated; -import org.jetbrains.kotlin.descriptors.annotations.AnnotatedWithAdditionalAnnotations; import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget; import org.jetbrains.kotlin.jvm.RuntimeAssertionInfo; diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/annotation/AnnotatedWithAdditionalAnnotations.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/annotation/AnnotatedWithAdditionalAnnotations.kt new file mode 100644 index 00000000000..a10cba18710 --- /dev/null +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/annotation/AnnotatedWithAdditionalAnnotations.kt @@ -0,0 +1,54 @@ +/* + * Copyright 2010-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.codegen.annotation + +import org.jetbrains.kotlin.descriptors.annotations.Annotated +import org.jetbrains.kotlin.descriptors.annotations.AnnotationWithTarget +import org.jetbrains.kotlin.descriptors.annotations.Annotations +import org.jetbrains.kotlin.name.FqName + +public class AnnotatedWithAdditionalAnnotations( + delegate: Annotated?, + additional: Annotated +) : Annotated { + private val annotations: Annotations = UseSiteTargetedAnnotations(delegate?.annotations ?: Annotations.EMPTY, additional.annotations) + + override fun getAnnotations() = annotations + + private class UseSiteTargetedAnnotations( + private val original: Annotations, + private val additionalAnnotations: Annotations + ) : Annotations { + override fun isEmpty() = original.isEmpty() + + override fun findAnnotation(fqName: FqName) = original.findAnnotation(fqName) + + override fun findExternalAnnotation(fqName: FqName) = original.findExternalAnnotation(fqName) + + private fun getAdditionalTargetedAnnotations() = additionalAnnotations.getUseSiteTargetedAnnotations() + + override fun getUseSiteTargetedAnnotations(): List { + return original.getUseSiteTargetedAnnotations() + getAdditionalTargetedAnnotations() + } + + override fun getAllAnnotations(): List { + return original.getAllAnnotations() + getAdditionalTargetedAnnotations() + } + + override fun iterator() = original.iterator() + } +} \ No newline at end of file diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationWithTarget.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationWithTarget.kt index 112573957b5..a1c4f398003 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationWithTarget.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationWithTarget.kt @@ -16,38 +16,4 @@ package org.jetbrains.kotlin.descriptors.annotations -import org.jetbrains.kotlin.name.FqName - -public data class AnnotationWithTarget(val annotation: AnnotationDescriptor, val target: AnnotationUseSiteTarget?) - -private class UseSiteTargetedAnnotations( - private val original: Annotations, - private val additionalAnnotations: Annotations -) : Annotations { - override fun isEmpty() = original.isEmpty() - - override fun findAnnotation(fqName: FqName) = original.findAnnotation(fqName) - - override fun findExternalAnnotation(fqName: FqName) = original.findExternalAnnotation(fqName) - - private fun getAdditionalTargetedAnnotations() = additionalAnnotations.getUseSiteTargetedAnnotations() - - override fun getUseSiteTargetedAnnotations(): List { - return original.getUseSiteTargetedAnnotations() + getAdditionalTargetedAnnotations() - } - - override fun getAllAnnotations(): List { - return original.getAllAnnotations() + getAdditionalTargetedAnnotations() - } - - override fun iterator() = original.iterator() -} - -public class AnnotatedWithAdditionalAnnotations( - delegate: Annotated?, - additional: Annotated -) : Annotated { - private val annotations: Annotations = UseSiteTargetedAnnotations(delegate?.annotations ?: Annotations.EMPTY, additional.annotations) - - override fun getAnnotations() = annotations -} \ No newline at end of file +public data class AnnotationWithTarget(val annotation: AnnotationDescriptor, val target: AnnotationUseSiteTarget?) \ No newline at end of file