From 7545ccad8166275a75dd6dff15035d71be6c0fb0 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Sun, 30 Oct 2022 16:38:22 +0100 Subject: [PATCH] [Analysis API FE1.0] do not expose ExtensionFunctionType from functional types it's a frontend implementation detail --- .../annotations/KtFe10AnnotationsList.kt | 17 +++++++++++++---- .../api/descriptors/types/base/KtFe10Type.kt | 7 ++++++- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/annotations/KtFe10AnnotationsList.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/annotations/KtFe10AnnotationsList.kt index 7379f7eee6d..63bc90a7abe 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/annotations/KtFe10AnnotationsList.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/annotations/KtFe10AnnotationsList.kt @@ -7,22 +7,27 @@ package org.jetbrains.kotlin.analysis.api.descriptors.annotations import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationApplication import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList -import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtAnnotationApplication import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.maybeLocalClassId +import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtAnnotationApplication import org.jetbrains.kotlin.analysis.api.impl.base.annotations.KtEmptyAnnotationsList import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass +import org.jetbrains.kotlin.resolve.descriptorUtil.classId internal class KtFe10AnnotationsList private constructor( private val fe10Annotations: Annotations, + private val annotationsToIgnore: Set, override val token: KtLifetimeToken, ) : KtAnnotationsList() { override val annotations: List get() = withValidityAssertion { - fe10Annotations.map { it.toKtAnnotationApplication() } + fe10Annotations.mapNotNull { annotation -> + if (annotation.annotationClass.classId in annotationsToIgnore) null + else annotation.toKtAnnotationApplication() + } } override val annotationClassIds: Collection @@ -31,7 +36,9 @@ internal class KtFe10AnnotationsList private constructor( val result = mutableListOf() for (annotation in fe10Annotations) { val annotationClass = annotation.annotationClass ?: continue - result += annotationClass.maybeLocalClassId + val classId = annotationClass.maybeLocalClassId + if (classId in annotationsToIgnore) continue + result += classId } return result } @@ -42,6 +49,7 @@ internal class KtFe10AnnotationsList private constructor( } override fun annotationsByClassId(classId: ClassId): List = withValidityAssertion { + if (classId in annotationsToIgnore) return@withValidityAssertion emptyList() fe10Annotations.mapNotNull { annotation -> if (annotation.annotationClass?.maybeLocalClassId != classId) return@mapNotNull null annotation.toKtAnnotationApplication() @@ -52,9 +60,10 @@ internal class KtFe10AnnotationsList private constructor( fun create( fe10Annotations: Annotations, token: KtLifetimeToken, + ignoreAnnotations: Set = emptySet(), ): KtAnnotationsList { return if (!fe10Annotations.isEmpty()) { - KtFe10AnnotationsList(fe10Annotations, token) + KtFe10AnnotationsList(fe10Annotations, ignoreAnnotations, token) } else { KtEmptyAnnotationsList(token) } diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/types/base/KtFe10Type.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/types/base/KtFe10Type.kt index f37ad095813..3a9e7d85cc3 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/types/base/KtFe10Type.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/types/base/KtFe10Type.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeOwner import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion import org.jetbrains.kotlin.analysis.utils.printer.prettyPrint +import org.jetbrains.kotlin.name.StandardClassIds import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.UnwrappedType @@ -24,7 +25,11 @@ interface KtFe10Type : KtLifetimeOwner, KtAnnotated { override val annotationsList: KtAnnotationsList get() = withValidityAssertion { - KtFe10AnnotationsList.create(type.annotations, token) + KtFe10AnnotationsList.create( + type.annotations, + token, + ignoreAnnotations = setOf(StandardClassIds.Annotations.ExtensionFunctionType) + ) } override val token: KtLifetimeToken