[K2/N] KT-55464, KT-56091 Fix various klib annotations, including critical ones

Merge-request: KT-MR-8457
Merged-by: Vladimir Sukharev <Vladimir.Sukharev@jetbrains.com>
This commit is contained in:
Vladimir Sukharev
2023-01-26 11:15:15 +00:00
committed by Space Team
parent 53967a1822
commit 1990883bdc
19 changed files with 394 additions and 19 deletions
@@ -744,7 +744,7 @@ class FirElementSerializer private constructor(
for (attribute in type.attributes) {
when {
attribute is CustomAnnotationTypeAttribute ->
for (annotation in attribute.annotations) {
for (annotation in attribute.annotations.nonSourceAnnotations(session)) {
extension.serializeTypeAnnotation(annotation, builder)
}
attribute.key in CompilerConeAttributes.classIdByCompilerAttributeKey ->
@@ -55,8 +55,8 @@ private val FirExpression.callableNameOfMetaAnnotationArgument: Name?
private val sourceName = Name.identifier("SOURCE")
fun FirAnnotationContainer.nonSourceAnnotations(session: FirSession): List<FirAnnotation> =
annotations.filter { annotation ->
fun List<FirAnnotation>.nonSourceAnnotations(session: FirSession): List<FirAnnotation> =
this.filter { annotation ->
val firAnnotationClass = annotation.toAnnotationClass(session)
firAnnotationClass != null && firAnnotationClass.annotations.none { meta ->
meta.toAnnotationClassId(session) == StandardClassIds.Annotations.Retention &&
@@ -64,6 +64,8 @@ fun FirAnnotationContainer.nonSourceAnnotations(session: FirSession): List<FirAn
?.callableNameOfMetaAnnotationArgument == sourceName
}
}
fun FirAnnotationContainer.nonSourceAnnotations(session: FirSession): List<FirAnnotation> =
annotations.nonSourceAnnotations(session)
@Suppress("NOTHING_TO_INLINE")
inline fun FirProperty.hasJvmFieldAnnotation(session: FirSession): Boolean = annotations.any { it.isJvmFieldAnnotation(session) }
@@ -1,5 +1,3 @@
// KT-55464
// IGNORE_BACKEND_K2: NATIVE
// MODULE: lib
// WITH_STDLIB
// WITH_COROUTINES
@@ -1,6 +1,4 @@
// IGNORE_BACKEND: JS_IR, JS_IR_ES6
// KT-55464
// IGNORE_BACKEND_K2: NATIVE
// WITH_COROUTINES
// WITH_STDLIB
// MODULE: lib(support)