diff --git a/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/DeepCopyForManagedWrapper.kt b/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/DeepCopyForManagedWrapper.kt index a7d682a5828..226640ea913 100644 --- a/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/DeepCopyForManagedWrapper.kt +++ b/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/DeepCopyForManagedWrapper.kt @@ -16,7 +16,7 @@ class DeepCopyForManagedWrapper(val originalClass: ClassStub, val context: Stubs returnType = transformCPointerToManaged(element.returnType), parameters = element.parameters.map { visitFunctionParameter(it) }, origin = element.origin, - annotations = emptyList(), + annotations = mutableListOf(), external = false, receiver = element.receiver?.let { visitReceiverParameter(it) }, modality = element.modality, @@ -31,7 +31,7 @@ class DeepCopyForManagedWrapper(val originalClass: ClassStub, val context: Stubs name = element.name, type = element.type, origin = element.origin, - annotations = emptyList(), + annotations = mutableListOf(), receiverType = element.receiverType, modality = element.modality, isOverride = element.isOverride, diff --git a/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/ObjCStubs.kt b/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/ObjCStubs.kt index 06591ec37b1..c97c4b29c7f 100644 --- a/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/ObjCStubs.kt +++ b/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/ObjCStubs.kt @@ -231,7 +231,7 @@ private class ObjCMethodStubBuilder( typeParameters = listOf(typeParameter), external = true, origin = StubOrigin.ObjCCategoryInitMethod(method), - annotations = annotations, + annotations = annotations.toMutableList(), modality = MemberStubModality.FINAL ) // TODO: Should we deprecate it as well? @@ -252,7 +252,7 @@ private class ObjCMethodStubBuilder( stubReturnType, kotlinMethodParameters.toList(), origin, - annotations.toList(), + annotations.toMutableList(), external, receiver, modality, @@ -645,7 +645,15 @@ private class ObjCPropertyStubBuilder( } else { emptyList() } - return listOf(PropertyStub(mangleSimple(property.name), kotlinType.toStubIrType(), kind, modality, receiver, annotations, origin = origin)) + return listOf(PropertyStub( + mangleSimple(property.name), + kotlinType.toStubIrType(), + kind, + modality, + receiver, + annotations.toMutableList(), + origin = origin + )) } } diff --git a/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIr.kt b/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIr.kt index 309e454a8ba..d4dd82ce369 100644 --- a/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIr.kt +++ b/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIr.kt @@ -288,7 +288,7 @@ data class PropertyStub( val kind: Kind, val modality: MemberStubModality = MemberStubModality.FINAL, val receiverType: StubType? = null, - override val annotations: List = emptyList(), + override val annotations: MutableList = mutableListOf(), val origin: StubOrigin, val isOverride: Boolean = false ) : StubIrElement, AnnotationHolder { @@ -345,11 +345,12 @@ sealed class ClassStub : StubContainer(), StubElementWithOrigin, AnnotationHolde override val interfaces: List = emptyList(), override val properties: List = emptyList(), override val origin: StubOrigin, - override val annotations: List = emptyList(), + annotations: List = emptyList(), override val childrenClasses: List = emptyList(), override val companion: Companion? = null, override val simpleContainers: List = emptyList() ) : ClassStub() { + override val annotations = annotations.toMutableList() override val functions: List = constructors + methods } @@ -377,11 +378,12 @@ sealed class ClassStub : StubContainer(), StubElementWithOrigin, AnnotationHolde override val interfaces: List = emptyList(), override val properties: List = emptyList(), override val origin: StubOrigin, - override val annotations: List = emptyList(), + annotations: List = emptyList(), override val childrenClasses: List = emptyList(), override val companion: Companion?= null, override val simpleContainers: List = emptyList() ) : ClassStub() { + override val annotations = annotations.toMutableList() override val functions: List = constructors } @@ -506,7 +508,7 @@ data class FunctionStub( val returnType: StubType, override val parameters: List, override val origin: StubOrigin, - override val annotations: List, + override val annotations: MutableList, val external: Boolean = false, val receiver: ReceiverParameterStub?, val modality: MemberStubModality, @@ -543,7 +545,7 @@ class TypealiasStub( val alias: Classifier, val aliasee: StubType, val origin: StubOrigin, - override val annotations: List = emptyList(), + override val annotations: MutableList = mutableListOf(), ) : StubIrElement, AnnotationHolder { override fun accept(visitor: StubIrVisitor, data: T) = diff --git a/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrElementBuilders.kt b/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrElementBuilders.kt index 1f9d5a5db0b..b781a053f06 100644 --- a/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrElementBuilders.kt +++ b/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrElementBuilders.kt @@ -95,7 +95,7 @@ internal class StructStubBuilder( returnType = ClassifierStubType(Classifier("kotlin", "Unit")), parameters = emptyList(), origin = StubOrigin.Synthetic.ManagedTypeDetails, - annotations = emptyList(), + annotations = mutableListOf(), receiver = null, // ReceiverParameterStub() modality = MemberStubModality.FINAL ) @@ -140,7 +140,7 @@ internal class StructStubBuilder( } val kind = PropertyStub.Kind.Val(getter) // TODO: Should receiver be added? - PropertyStub(fieldName, type.toStubIrType(), kind, annotations = annotations, origin = origin) + PropertyStub(fieldName, type.toStubIrType(), kind, annotations = annotations.toMutableList(), origin = origin) } else { val pointedType = fieldRefType.pointedType.toStubIrType() val pointedTypeArgument = TypeArgumentStub(pointedType) @@ -460,7 +460,7 @@ internal class EnumStubBuilder( origin = StubOrigin.Synthetic.EnumByValue(enumDef), receiver = null, modality = MemberStubModality.FINAL, - annotations = listOf(AnnotationStub.Deprecated.deprecatedCEnumByValue) + annotations = mutableListOf(AnnotationStub.Deprecated.deprecatedCEnumByValue) ) val companion = ClassStub.Companion( @@ -494,7 +494,7 @@ internal class EnumStubBuilder( ClassifierStubType(classifier), kind = PropertyStub.Kind.Val(PropertyAccessor.Getter.GetEnumEntry(entry)), origin = StubOrigin.EnumEntry(enumConstant), - annotations = listOfNotNull(aliasAnnotation) + annotations = listOfNotNull(aliasAnnotation).toMutableList() ) } @@ -782,7 +782,7 @@ internal class FunctionStubBuilder( returnType, parameters.toList(), StubOrigin.Function(func), - annotations, + annotations.toMutableList(), mustBeExternal, null, MemberStubModality.FINAL, diff --git a/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrMetadataEmitter.kt b/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrMetadataEmitter.kt index f8bffdf9f00..668d56169ca 100644 --- a/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrMetadataEmitter.kt +++ b/kotlin-native/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrMetadataEmitter.kt @@ -155,7 +155,7 @@ internal class ModuleMetadataEmitter( } else { element.copy( external = false, - annotations = listOf(AnnotationStub.Deprecated.unableToImport) + annotations = mutableListOf(AnnotationStub.Deprecated.unableToImport) ) } KmFunction(function.name).also { km -> @@ -173,7 +173,7 @@ internal class ModuleMetadataEmitter( val property = when (val bridgeSupportedKind = element.bridgeSupportedKind) { null -> element.copy( kind = PropertyStub.Kind.Val(PropertyAccessor.Getter.SimpleGetter()), - annotations = listOf(AnnotationStub.Deprecated.unableToImport) + annotations = mutableListOf(AnnotationStub.Deprecated.unableToImport) ) element.kind -> element else -> element.copy(kind = bridgeSupportedKind) diff --git a/kotlin-native/Interop/StubGenerator/src/test/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrToMetadataTests.kt b/kotlin-native/Interop/StubGenerator/src/test/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrToMetadataTests.kt index 152e85a16aa..cc967f4a477 100644 --- a/kotlin-native/Interop/StubGenerator/src/test/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrToMetadataTests.kt +++ b/kotlin-native/Interop/StubGenerator/src/test/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrToMetadataTests.kt @@ -27,7 +27,7 @@ class StubIrToMetadataTests { returnType = intStubType, parameters = listOf(), origin = origin, - annotations = emptyList(), + annotations = mutableListOf(), external = true, receiver = null, modality = MemberStubModality.FINAL