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:
@@ -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)
|
||||
}
|
||||
+36
@@ -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")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user