[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.KtAnnotationApplication
|
||||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
|
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.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.impl.base.annotations.KtEmptyAnnotationsList
|
||||||
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
|
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
|
||||||
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass
|
import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass
|
||||||
|
import org.jetbrains.kotlin.resolve.descriptorUtil.classId
|
||||||
|
|
||||||
internal class KtFe10AnnotationsList private constructor(
|
internal class KtFe10AnnotationsList private constructor(
|
||||||
private val fe10Annotations: Annotations,
|
private val fe10Annotations: Annotations,
|
||||||
|
private val annotationsToIgnore: Set<ClassId>,
|
||||||
override val token: KtLifetimeToken,
|
override val token: KtLifetimeToken,
|
||||||
) : KtAnnotationsList() {
|
) : KtAnnotationsList() {
|
||||||
override val annotations: List<KtAnnotationApplication>
|
override val annotations: List<KtAnnotationApplication>
|
||||||
get() = withValidityAssertion {
|
get() = withValidityAssertion {
|
||||||
fe10Annotations.map { it.toKtAnnotationApplication() }
|
fe10Annotations.mapNotNull { annotation ->
|
||||||
|
if (annotation.annotationClass.classId in annotationsToIgnore) null
|
||||||
|
else annotation.toKtAnnotationApplication()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override val annotationClassIds: Collection<ClassId>
|
override val annotationClassIds: Collection<ClassId>
|
||||||
@@ -31,7 +36,9 @@ internal class KtFe10AnnotationsList private constructor(
|
|||||||
val result = mutableListOf<ClassId>()
|
val result = mutableListOf<ClassId>()
|
||||||
for (annotation in fe10Annotations) {
|
for (annotation in fe10Annotations) {
|
||||||
val annotationClass = annotation.annotationClass ?: continue
|
val annotationClass = annotation.annotationClass ?: continue
|
||||||
result += annotationClass.maybeLocalClassId
|
val classId = annotationClass.maybeLocalClassId
|
||||||
|
if (classId in annotationsToIgnore) continue
|
||||||
|
result += classId
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
@@ -42,6 +49,7 @@ internal class KtFe10AnnotationsList private constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun annotationsByClassId(classId: ClassId): List<KtAnnotationApplication> = withValidityAssertion {
|
override fun annotationsByClassId(classId: ClassId): List<KtAnnotationApplication> = withValidityAssertion {
|
||||||
|
if (classId in annotationsToIgnore) return@withValidityAssertion emptyList()
|
||||||
fe10Annotations.mapNotNull { annotation ->
|
fe10Annotations.mapNotNull { annotation ->
|
||||||
if (annotation.annotationClass?.maybeLocalClassId != classId) return@mapNotNull null
|
if (annotation.annotationClass?.maybeLocalClassId != classId) return@mapNotNull null
|
||||||
annotation.toKtAnnotationApplication()
|
annotation.toKtAnnotationApplication()
|
||||||
@@ -52,9 +60,10 @@ internal class KtFe10AnnotationsList private constructor(
|
|||||||
fun create(
|
fun create(
|
||||||
fe10Annotations: Annotations,
|
fe10Annotations: Annotations,
|
||||||
token: KtLifetimeToken,
|
token: KtLifetimeToken,
|
||||||
|
ignoreAnnotations: Set<ClassId> = emptySet(),
|
||||||
): KtAnnotationsList {
|
): KtAnnotationsList {
|
||||||
return if (!fe10Annotations.isEmpty()) {
|
return if (!fe10Annotations.isEmpty()) {
|
||||||
KtFe10AnnotationsList(fe10Annotations, token)
|
KtFe10AnnotationsList(fe10Annotations, ignoreAnnotations, token)
|
||||||
} else {
|
} else {
|
||||||
KtEmptyAnnotationsList(token)
|
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.KtLifetimeToken
|
||||||
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
||||||
import org.jetbrains.kotlin.analysis.utils.printer.prettyPrint
|
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.KotlinType
|
||||||
import org.jetbrains.kotlin.types.UnwrappedType
|
import org.jetbrains.kotlin.types.UnwrappedType
|
||||||
|
|
||||||
@@ -24,7 +25,11 @@ interface KtFe10Type : KtLifetimeOwner, KtAnnotated {
|
|||||||
|
|
||||||
override val annotationsList: KtAnnotationsList
|
override val annotationsList: KtAnnotationsList
|
||||||
get() = withValidityAssertion {
|
get() = withValidityAssertion {
|
||||||
KtFe10AnnotationsList.create(type.annotations, token)
|
KtFe10AnnotationsList.create(
|
||||||
|
type.annotations,
|
||||||
|
token,
|
||||||
|
ignoreAnnotations = setOf(StandardClassIds.Annotations.ExtensionFunctionType)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
override val token: KtLifetimeToken
|
override val token: KtLifetimeToken
|
||||||
|
|||||||
Reference in New Issue
Block a user