[Native] Don't produce broken @Deprecated annotations in c-interop
#KT-58651
This commit is contained in:
committed by
Space Team
parent
706a4e9919
commit
2b913d7c47
+17
-15
@@ -370,14 +370,16 @@ private class MappingExtensions(
|
||||
}
|
||||
|
||||
fun AnnotationStub.map(): KmAnnotation {
|
||||
fun Pair<String, String>.asAnnotationArgument() =
|
||||
(first to KmAnnotationArgument.StringValue(second)).takeIf { second.isNotEmpty() }
|
||||
fun Pair<String, String>.asOptionalAnnotationArgument(): Pair<String, KmAnnotationArgument.StringValue>? {
|
||||
val (argumentName, argumentValue) = this
|
||||
return if (argumentValue.isEmpty()) null else argumentName to KmAnnotationArgument.StringValue(argumentValue)
|
||||
}
|
||||
|
||||
fun replaceWith(replaceWith: String) = KmAnnotationArgument.AnnotationValue(KmAnnotation(
|
||||
Classifier.topLevel("kotlin", "ReplaceWith").fqNameSerialized,
|
||||
mapOfNotNull(
|
||||
"imports" to KmAnnotationArgument.ArrayValue(emptyList()),
|
||||
("expression" to replaceWith).asAnnotationArgument()
|
||||
"expression" to KmAnnotationArgument.StringValue(replaceWith)
|
||||
)
|
||||
))
|
||||
|
||||
@@ -390,35 +392,35 @@ private class MappingExtensions(
|
||||
AnnotationStub.ObjC.ConsumesReceiver -> emptyMap()
|
||||
AnnotationStub.ObjC.ReturnsRetained -> emptyMap()
|
||||
is AnnotationStub.ObjC.Method -> mapOfNotNull(
|
||||
("selector" to selector).asAnnotationArgument(),
|
||||
("encoding" to encoding).asAnnotationArgument(),
|
||||
("selector" to selector).asOptionalAnnotationArgument(),
|
||||
("encoding" to encoding).asOptionalAnnotationArgument(),
|
||||
("isStret" to KmAnnotationArgument.BooleanValue(isStret))
|
||||
)
|
||||
is AnnotationStub.ObjC.Direct -> mapOfNotNull(
|
||||
("symbol" to symbol).asAnnotationArgument(),
|
||||
("symbol" to symbol).asOptionalAnnotationArgument(),
|
||||
)
|
||||
is AnnotationStub.ObjC.Factory -> mapOfNotNull(
|
||||
("selector" to selector).asAnnotationArgument(),
|
||||
("encoding" to encoding).asAnnotationArgument(),
|
||||
("selector" to selector).asOptionalAnnotationArgument(),
|
||||
("encoding" to encoding).asOptionalAnnotationArgument(),
|
||||
("isStret" to KmAnnotationArgument.BooleanValue(isStret))
|
||||
)
|
||||
AnnotationStub.ObjC.Consumed -> emptyMap()
|
||||
is AnnotationStub.ObjC.Constructor -> mapOfNotNull(
|
||||
("designated" to KmAnnotationArgument.BooleanValue(designated)),
|
||||
("initSelector" to selector).asAnnotationArgument()
|
||||
("initSelector" to selector).asOptionalAnnotationArgument()
|
||||
)
|
||||
is AnnotationStub.ObjC.ExternalClass -> mapOfNotNull(
|
||||
("protocolGetter" to protocolGetter).asAnnotationArgument(),
|
||||
("binaryName" to binaryName).asAnnotationArgument()
|
||||
("protocolGetter" to protocolGetter).asOptionalAnnotationArgument(),
|
||||
("binaryName" to binaryName).asOptionalAnnotationArgument()
|
||||
)
|
||||
AnnotationStub.CCall.CString -> emptyMap()
|
||||
AnnotationStub.CCall.WCString -> emptyMap()
|
||||
is AnnotationStub.CCall.Symbol -> mapOfNotNull(
|
||||
("id" to symbolName).asAnnotationArgument()
|
||||
("id" to symbolName).asOptionalAnnotationArgument()
|
||||
)
|
||||
is AnnotationStub.CCall.CppClassConstructor -> emptyMap()
|
||||
is AnnotationStub.CStruct -> mapOfNotNull(
|
||||
("spelling" to struct).asAnnotationArgument()
|
||||
("spelling" to struct).asOptionalAnnotationArgument()
|
||||
)
|
||||
is AnnotationStub.CNaturalStruct ->
|
||||
error("@CNaturalStruct should not be used for Kotlin/Native interop")
|
||||
@@ -426,12 +428,12 @@ private class MappingExtensions(
|
||||
"value" to KmAnnotationArgument.LongValue(length)
|
||||
)
|
||||
is AnnotationStub.Deprecated -> mapOfNotNull(
|
||||
("message" to message).asAnnotationArgument(),
|
||||
("message" to message).asOptionalAnnotationArgument(),
|
||||
("replaceWith" to replaceWith(replaceWith)),
|
||||
("level" to deprecationLevel(level))
|
||||
)
|
||||
is AnnotationStub.CEnumEntryAlias -> mapOfNotNull(
|
||||
("entryName" to entryName).asAnnotationArgument()
|
||||
("entryName" to entryName).asOptionalAnnotationArgument()
|
||||
)
|
||||
is AnnotationStub.CEnumVarTypeSize -> mapOfNotNull(
|
||||
("size" to KmAnnotationArgument.IntValue(size))
|
||||
|
||||
Reference in New Issue
Block a user