KT-64931: add convertion of kotlin top-lvl functions into swift static functions

Merge-request: KT-MR-13878
Merged-by: Artem Olkov <artem.olkov@jetbrains.com>
This commit is contained in:
Artem Olkov
2024-01-17 20:30:04 +00:00
committed by Space Team
parent 01824a336c
commit 37a8723a79
24 changed files with 133 additions and 25 deletions
@@ -31,6 +31,7 @@ public class SirAsSwiftSourcesPrinter(private val printer: SmartPrinter) : SirVi
override fun visitFunction(function: SirFunction): Unit = with(printer) {
print(
function.visibility.takeIf { it != SirVisibility.INTERNAL }?.let { "${it.swift} " } ?: "",
if (function.isStatic) { "static " } else { "" },
"func ",
function.name.swiftIdentifier,
"("
@@ -0,0 +1,5 @@
public static func foo(
arg1: Swift.Int32
) -> Swift.Bool {
return foo_wrapped(arg1)
}
@@ -37,6 +37,7 @@ class SirAsSwiftSourcesPrinterTests {
declarations.add(
buildFunction {
origin = SirOrigin.Unknown
isStatic = false
visibility = SirVisibility.PUBLIC
name = "foo"
returnType = SirNominalType(SirSwiftModule.bool)
@@ -57,6 +58,7 @@ class SirAsSwiftSourcesPrinterTests {
declarations.add(
buildFunction {
origin = SirOrigin.Unknown
isStatic = false
visibility = SirVisibility.PUBLIC
name = "foo1"
returnType = SirNominalType(SirSwiftModule.bool)
@@ -65,6 +67,7 @@ class SirAsSwiftSourcesPrinterTests {
declarations.add(
buildFunction {
origin = SirOrigin.Unknown
isStatic = false
visibility = SirVisibility.PUBLIC
name = "foo2"
returnType = SirNominalType(SirSwiftModule.bool)
@@ -85,6 +88,7 @@ class SirAsSwiftSourcesPrinterTests {
declarations.add(
buildFunction {
origin = SirOrigin.Unknown
isStatic = false
visibility = SirVisibility.PUBLIC
name = "foo"
parameters.add(
@@ -112,6 +116,7 @@ class SirAsSwiftSourcesPrinterTests {
declarations.add(
buildFunction {
origin = SirOrigin.Unknown
isStatic = false
visibility = SirVisibility.PUBLIC
name = "foo"
parameters.add(
@@ -146,6 +151,7 @@ class SirAsSwiftSourcesPrinterTests {
declarations.add(
buildFunction {
origin = SirOrigin.Unknown
isStatic = false
visibility = SirVisibility.PUBLIC
name = "foo"
parameters.addAll(
@@ -199,6 +205,7 @@ class SirAsSwiftSourcesPrinterTests {
declarations.add(
buildFunction {
origin = SirOrigin.Unknown
isStatic = false
visibility = SirVisibility.PUBLIC
name = "foo"
parameters.add(
@@ -219,6 +226,35 @@ class SirAsSwiftSourcesPrinterTests {
)
}
@Test
fun `should print static`() {
val module = buildModule {
name = "Test"
declarations.add(
buildFunction {
origin = SirOrigin.Unknown
isStatic = true
visibility = SirVisibility.PUBLIC
name = "foo"
parameters.add(
SirParameter(
argumentName = "arg1",
type = SirNominalType(SirSwiftModule.int32)
)
)
returnType = SirNominalType(SirSwiftModule.bool)
body = SirFunctionBody(listOf("return foo_wrapped(arg1)"))
}
)
}
runTest(
module,
"testData/static_function"
)
}
private fun runTest(module: SirModule, goldenDataFile: String) {
val expectedSwiftSrc = File(KtTestUtil.getHomeDirectory()).resolve("$goldenDataFile.golden.swift")