From 5cffcfaf9fa5511c5c6ffcdac1a1fe189b1b1726 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Tue, 30 Nov 2021 13:03:35 +0100 Subject: [PATCH] Analysis API FE1.0: consider rendering parameters when rendering annotations --- .../analysis/api/descriptors/utils/KtFe10TypeRenderer.kt | 8 +++++--- .../analysis/api/descriptors/utils/renderAnnotations.kt | 5 +++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/utils/KtFe10TypeRenderer.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/utils/KtFe10TypeRenderer.kt index f2abe946fa8..45df5269e09 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/utils/KtFe10TypeRenderer.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/utils/KtFe10TypeRenderer.kt @@ -10,7 +10,6 @@ import org.jetbrains.kotlin.analysis.api.components.KtTypeRendererOptions import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.classId import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.getKtNamedAnnotationArguments import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.maybeLocalClassId -import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtConstantValue import org.jetbrains.kotlin.analysis.utils.printer.PrettyPrinter import org.jetbrains.kotlin.builtins.functions.FunctionClassDescriptor import org.jetbrains.kotlin.builtins.getReceiverTypeFromFunctionType @@ -32,7 +31,6 @@ import org.jetbrains.kotlin.types.* import org.jetbrains.kotlin.types.checker.NewCapturedType import org.jetbrains.kotlin.types.checker.NewTypeVariableConstructor import org.jetbrains.kotlin.types.typeUtil.builtIns -import kotlin.reflect.KClass internal class KtFe10TypeRenderer(private val options: KtTypeRendererOptions, private val isDebugText: Boolean = false) { private companion object { @@ -47,7 +45,11 @@ internal class KtFe10TypeRenderer(private val options: KtTypeRendererOptions, pr if (isDebugText) { renderTypeAnnotationsDebug(type) } else { - renderFe10Annotations(type.annotations, isSingleLineAnnotations = true) { classId -> + renderFe10Annotations( + type.annotations, + isSingleLineAnnotations = true, + renderAnnotationWithShortNames = options.shortQualifiedNames + ) { classId -> classId != StandardClassIds.Annotations.ExtensionFunctionType } } diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/utils/renderAnnotations.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/utils/renderAnnotations.kt index a192da8ed11..1dc41593a0d 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/utils/renderAnnotations.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/utils/renderAnnotations.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.analysis.api.descriptors.utils import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.classId -import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtConstantValue import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationValueRenderer import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtAnnotationValue import org.jetbrains.kotlin.analysis.utils.printer.PrettyPrinter @@ -20,6 +19,7 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe internal fun PrettyPrinter.renderFe10Annotations( annotations: Annotations, isSingleLineAnnotations: Boolean, + renderAnnotationWithShortNames: Boolean, predicate: (ClassId) -> Boolean = { true } ) { val separator = if (isSingleLineAnnotations) " " else "\n" @@ -32,7 +32,8 @@ internal fun PrettyPrinter.renderFe10Annotations( if (annotationClass.fqNameSafe != StandardNames.FqNames.parameterName) { append('@') - append(annotation.fqName?.shortName()?.asString() ?: "ERROR") + val rendered = if (renderAnnotationWithShortNames) annotation.fqName?.shortName()?.render() else annotation.fqName?.render() + append(rendered ?: "ERROR") val valueArguments = annotation.allValueArguments.entries.sortedBy { it.key.asString() } printCollectionIfNotEmpty(valueArguments, separator = ", ", prefix = "(", postfix = ")") { (name, value) ->