Override/Implement Members: Copy @Experimental-annotated annotations

#KT-22922 Fixed
This commit is contained in:
Alexey Sedunov
2018-04-06 16:56:30 +03:00
parent c1d8ba9c2b
commit c7e72af170
11 changed files with 123 additions and 48 deletions
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.descriptors.annotations.AnnotationWithTarget
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.FqNameUnsafe
import org.jetbrains.kotlin.name.Name
@@ -190,6 +191,7 @@ interface DescriptorRendererOptions {
var textFormat: RenderingFormat
var excludedAnnotationClasses: Set<FqName>
var excludedTypeAnnotationClasses: Set<FqName>
var annotationFilter: ((AnnotationDescriptor) -> Boolean)?
var annotationArgumentsRenderingPolicy: AnnotationArgumentsRenderingPolicy
val includeAnnotationArguments: Boolean get() = annotationArgumentsRenderingPolicy.includeAnnotationArguments
@@ -396,8 +396,9 @@ internal class DescriptorRendererImpl(
val excluded = if (annotated is KotlinType) excludedTypeAnnotationClasses else excludedAnnotationClasses
val annotationFilter = annotationFilter
for ((annotation, target) in annotated.annotations.getAllAnnotations()) {
if (annotation.fqName !in excluded) {
if (annotation.fqName !in excluded && (annotationFilter == null || annotationFilter(annotation))) {
append(renderAnnotation(annotation, target)).append(" ")
}
}
@@ -17,6 +17,8 @@
package org.jetbrains.kotlin.renderer
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
import org.jetbrains.kotlin.descriptors.annotations.AnnotationWithTarget
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.types.KotlinType
import java.lang.IllegalStateException
@@ -98,6 +100,8 @@ internal class DescriptorRendererOptionsImpl : DescriptorRendererOptions {
override var excludedTypeAnnotationClasses by property(ExcludedTypeAnnotations.internalAnnotationsForResolve)
override var annotationFilter: ((AnnotationDescriptor) -> Boolean)? by property(null)
override var annotationArgumentsRenderingPolicy by property(AnnotationArgumentsRenderingPolicy.NO_ARGUMENTS)
override var alwaysRenderModifiers by property(false)