From abf4030ef987a0458a385c41f35f6f45e0697822 Mon Sep 17 00:00:00 2001 From: Svetlana Isakova Date: Mon, 19 Oct 2015 22:55:31 +0300 Subject: [PATCH] Don't exclude internal type annotations from decompiler renderers --- .../jetbrains/kotlin/renderer/DescriptorRenderer.kt | 12 ++++++++++++ .../kotlin/renderer/DescriptorRendererOptionsImpl.kt | 11 +++-------- .../decompiler/textBuilder/DecompiledTextFactory.kt | 5 +++-- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRenderer.kt b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRenderer.kt index 2b84bfbd96b..1be5fcead6a 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRenderer.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRenderer.kt @@ -192,6 +192,18 @@ public interface DescriptorRendererOptions { public var renderDefaultAnnotationArguments: Boolean } +object ExcludedTypeAnnotations { + val annotationsForNullabilityAndMutability = setOf( + FqName("org.jetbrains.annotations.ReadOnly"), + FqName("org.jetbrains.annotations.Mutable"), + FqName("org.jetbrains.annotations.NotNull"), + FqName("org.jetbrains.annotations.Nullable")) + + val internalAnnotationsForResolve = setOf( + FqName("kotlin.internal.NoInfer"), + FqName("kotlin.internal.Exact")) +} + public enum class RenderingFormat { PLAIN, HTML diff --git a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererOptionsImpl.kt b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererOptionsImpl.kt index 332f47c2830..a5370f57d25 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererOptionsImpl.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererOptionsImpl.kt @@ -107,12 +107,7 @@ internal class DescriptorRendererOptionsImpl : DescriptorRendererOptions { override var excludedAnnotationClasses by property(emptySet()) - override var excludedTypeAnnotationClasses by property(setOf( - FqName("org.jetbrains.annotations.ReadOnly"), - FqName("org.jetbrains.annotations.Mutable"), - FqName("org.jetbrains.annotations.NotNull"), - FqName("org.jetbrains.annotations.Nullable"), - FqName("kotlin.internal.NoInfer"), - FqName("kotlin.internal.Exact") - )) + override var excludedTypeAnnotationClasses by property( + ExcludedTypeAnnotations.annotationsForNullabilityAndMutability + + ExcludedTypeAnnotations.internalAnnotationsForResolve) } \ No newline at end of file diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/DecompiledTextFactory.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/DecompiledTextFactory.kt index f26df58541c..9b0fac5606c 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/DecompiledTextFactory.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/DecompiledTextFactory.kt @@ -29,8 +29,7 @@ import org.jetbrains.kotlin.load.kotlin.header.isCompatibleFileFacadeKind import org.jetbrains.kotlin.load.kotlin.header.isCompatibleMultifileClassKind import org.jetbrains.kotlin.load.kotlin.header.isCompatiblePackageFacadeKind import org.jetbrains.kotlin.name.FqName -import org.jetbrains.kotlin.renderer.DescriptorRenderer -import org.jetbrains.kotlin.renderer.DescriptorRendererModifier +import org.jetbrains.kotlin.renderer.* import org.jetbrains.kotlin.resolve.DescriptorUtils.isEnumEntry import org.jetbrains.kotlin.resolve.dataClassUtils.isComponentLike import org.jetbrains.kotlin.resolve.descriptorUtil.secondaryConstructors @@ -113,6 +112,7 @@ private val descriptorRendererForDecompiler = DescriptorRenderer.withOptions { typeNormalizer = { type -> if (type.isFlexible()) type.flexibility().lowerBound else type } secondaryConstructorsAsPrimary = false modifiers = DescriptorRendererModifier.ALL + excludedTypeAnnotationClasses = ExcludedTypeAnnotations.annotationsForNullabilityAndMutability } private val descriptorRendererForKotlinJavascriptDecompiler = DescriptorRenderer.withOptions { @@ -120,6 +120,7 @@ private val descriptorRendererForKotlinJavascriptDecompiler = DescriptorRenderer classWithPrimaryConstructor = true secondaryConstructorsAsPrimary = false modifiers = DescriptorRendererModifier.ALL + excludedTypeAnnotationClasses = ExcludedTypeAnnotations.annotationsForNullabilityAndMutability } private val descriptorRendererForKeys = DescriptorRenderer.COMPACT_WITH_MODIFIERS.withOptions {