Native: add support for annotations on typealiases in cinterop

^KT-58362
This commit is contained in:
Svyatoslav Scherbina
2023-07-05 15:32:54 +02:00
committed by Space Team
parent 67f4343137
commit 1053d18871
3 changed files with 7 additions and 2 deletions
@@ -540,8 +540,9 @@ class EnumEntryStub(
class TypealiasStub(
val alias: Classifier,
val aliasee: StubType,
val origin: StubOrigin
) : StubIrElement {
val origin: StubOrigin,
override val annotations: List<AnnotationStub> = emptyList(),
) : StubIrElement, AnnotationHolder {
override fun <T, R> accept(visitor: StubIrVisitor<T, R>, data: T) =
visitor.visitTypealias(this, data)
@@ -141,6 +141,7 @@ internal class ModuleMetadataEmitter(
override fun visitTypealias(element: TypealiasStub, data: VisitingContext): KmTypeAlias =
data.withMappingExtensions {
KmTypeAlias(element.alias.topLevelName).also { km ->
element.annotations.mapTo(km.annotations) { it.map() }
km.visibility = Visibility.PUBLIC
km.underlyingType = element.aliasee.map(shouldExpandTypeAliases = false)
km.expandedType = element.aliasee.map()
@@ -179,6 +179,9 @@ class StubIrTextEmitter(
override fun visitTypealias(element: TypealiasStub, data: StubContainer?) {
val alias = renderClassifierDeclaration(element.alias)
val aliasee = renderStubType(element.aliasee)
element.annotations.forEach {
out(renderAnnotation(it))
}
out("typealias $alias = $aliasee")
}