[Analysis API FE1.0] do not expose ExtensionFunctionType from functional types
it's a frontend implementation detail
This commit is contained in:
+13
-4
@@ -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<ClassId>,
|
||||
override val token: KtLifetimeToken,
|
||||
) : KtAnnotationsList() {
|
||||
override val annotations: List<KtAnnotationApplication>
|
||||
get() = withValidityAssertion {
|
||||
fe10Annotations.map { it.toKtAnnotationApplication() }
|
||||
fe10Annotations.mapNotNull { annotation ->
|
||||
if (annotation.annotationClass.classId in annotationsToIgnore) null
|
||||
else annotation.toKtAnnotationApplication()
|
||||
}
|
||||
}
|
||||
|
||||
override val annotationClassIds: Collection<ClassId>
|
||||
@@ -31,7 +36,9 @@ internal class KtFe10AnnotationsList private constructor(
|
||||
val result = mutableListOf<ClassId>()
|
||||
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<KtAnnotationApplication> = 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<ClassId> = emptySet(),
|
||||
): KtAnnotationsList {
|
||||
return if (!fe10Annotations.isEmpty()) {
|
||||
KtFe10AnnotationsList(fe10Annotations, token)
|
||||
KtFe10AnnotationsList(fe10Annotations, ignoreAnnotations, token)
|
||||
} else {
|
||||
KtEmptyAnnotationsList(token)
|
||||
}
|
||||
|
||||
+6
-1
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user