diff --git a/native/swift/sir-printer/src/org/jetbrains/sir/printer/SirAsSwiftSourcesPrinter.kt b/native/swift/sir-printer/src/org/jetbrains/sir/printer/SirAsSwiftSourcesPrinter.kt index a481b59b2db..0bd7e648be8 100644 --- a/native/swift/sir-printer/src/org/jetbrains/sir/printer/SirAsSwiftSourcesPrinter.kt +++ b/native/swift/sir-printer/src/org/jetbrains/sir/printer/SirAsSwiftSourcesPrinter.kt @@ -10,8 +10,6 @@ import org.jetbrains.kotlin.sir.visitors.SirVisitorVoid import org.jetbrains.kotlin.utils.SmartPrinter import org.jetbrains.kotlin.utils.withIndent -private const val DEFAULT_INDENT: String = " " - public class SirAsSwiftSourcesPrinter(private val printer: SmartPrinter) : SirVisitorVoid() { public constructor() : this(SmartPrinter(StringBuilder())) @@ -31,26 +29,43 @@ public class SirAsSwiftSourcesPrinter(private val printer: SmartPrinter) : SirVi } override fun visitFunction(function: SirFunction): Unit = with(printer) { - println( - listOfNotNull( - function.visibility.takeIf { it != SirVisibility.INTERNAL }?.let { "${it.swift} " }, - "func ", - function.name.swiftIdentifier, - function.parameters.takeIf { it.isNotEmpty() } - ?.joinToString(prefix = "(\n", postfix = "\n)", separator = ",\n") { - it.swift.prependIndent(DEFAULT_INDENT) - } ?: "()", - " -> ", - function.returnType.swift, - " { fatalError() }", - ).joinToString(separator = ""), + print( + function.visibility.takeIf { it != SirVisibility.INTERNAL }?.let { "${it.swift} " } ?: "", + "func ", + function.name.swiftIdentifier, + "(" ) + if (function.parameters.isNotEmpty()) { + println() + withIndent { + function.parameters.forEachIndexed { index, sirParameter -> + print(sirParameter.swift) + if (index != function.parameters.lastIndex) { + println(",") + } else { + println() + } + } + } + } + print( + ")", + " -> ", + function.returnType.swift, + ) + println(" {") + withIndent { + printFunctionBody(function).forEach { + println(it) + } + } + println("}") } override fun visitEnum(enum: SirEnum): Unit = with(printer) { println("enum ${enum.name.swiftIdentifier} {") withIndent { - enum.acceptChildren(SirAsSwiftSourcesPrinter(printer)) + enum.acceptChildren(this@SirAsSwiftSourcesPrinter) } println("}") } @@ -62,6 +77,10 @@ public class SirAsSwiftSourcesPrinter(private val printer: SmartPrinter) : SirVi } } +private fun printFunctionBody(function: SirFunction): List { + return listOf("fatalError()") +} + private val SirVisibility.swift get(): String = when (this) { SirVisibility.PRIVATE -> "private" diff --git a/native/swift/sir-printer/testData/all_types_argument.golden.swift b/native/swift/sir-printer/testData/all_types_argument.golden.swift index 8ebd76d9fbf..0c176356306 100644 --- a/native/swift/sir-printer/testData/all_types_argument.golden.swift +++ b/native/swift/sir-printer/testData/all_types_argument.golden.swift @@ -6,4 +6,6 @@ public func foo( arg5: Swift.Int64, arg6: Swift.Double, arg7: Swift.Float -) -> Swift.Bool { fatalError() } \ No newline at end of file +) -> Swift.Bool { + fatalError() +} \ No newline at end of file diff --git a/native/swift/sir-printer/testData/simple_function.golden.swift b/native/swift/sir-printer/testData/simple_function.golden.swift index 07b1be23fb8..7f2b23530a4 100644 --- a/native/swift/sir-printer/testData/simple_function.golden.swift +++ b/native/swift/sir-printer/testData/simple_function.golden.swift @@ -1 +1,3 @@ -public func foo() -> Swift.Bool { fatalError() } \ No newline at end of file +public func foo() -> Swift.Bool { + fatalError() +} \ No newline at end of file diff --git a/native/swift/sir-printer/testData/simple_multiple_function.golden.swift b/native/swift/sir-printer/testData/simple_multiple_function.golden.swift index a73cafd7ec3..a7383471321 100644 --- a/native/swift/sir-printer/testData/simple_multiple_function.golden.swift +++ b/native/swift/sir-printer/testData/simple_multiple_function.golden.swift @@ -1,3 +1,7 @@ -public func foo1() -> Swift.Bool { fatalError() } +public func foo1() -> Swift.Bool { + fatalError() +} -public func foo2() -> Swift.Bool { fatalError() } +public func foo2() -> Swift.Bool { + fatalError() +} \ No newline at end of file diff --git a/native/swift/sir-printer/testData/single_argument.golden.swift b/native/swift/sir-printer/testData/single_argument.golden.swift index 2d6569674a5..24173e7fc24 100644 --- a/native/swift/sir-printer/testData/single_argument.golden.swift +++ b/native/swift/sir-printer/testData/single_argument.golden.swift @@ -1,3 +1,5 @@ public func foo( arg1: Swift.Int32 -) -> Swift.Bool { fatalError() } \ No newline at end of file +) -> Swift.Bool { + fatalError() +} \ No newline at end of file diff --git a/native/swift/sir-printer/testData/two_arguments.golden.swift b/native/swift/sir-printer/testData/two_arguments.golden.swift index 3639cb89135..aa27b2f9cb3 100644 --- a/native/swift/sir-printer/testData/two_arguments.golden.swift +++ b/native/swift/sir-printer/testData/two_arguments.golden.swift @@ -1,4 +1,6 @@ public func foo( arg1: Swift.Int32, arg2: Swift.Double -) -> Swift.Bool { fatalError() } \ No newline at end of file +) -> Swift.Bool { + fatalError() +} \ No newline at end of file diff --git a/plugins/swift-export/testData/simple.golden.swift b/plugins/swift-export/testData/simple.golden.swift index 79c0207109e..4f9a4209871 100644 --- a/plugins/swift-export/testData/simple.golden.swift +++ b/plugins/swift-export/testData/simple.golden.swift @@ -1,10 +1,16 @@ enum namespace1 { enum main { - public func foobar() -> Swift.Int32 { fatalError() } + public func foobar() -> Swift.Int32 { + fatalError() + } + } + public func foo() -> Swift.Int32 { + fatalError() } - public func foo() -> Swift.Int32 { fatalError() } } enum namespace2 { - public func bar() -> Swift.Int32 { fatalError() } + public func bar() -> Swift.Int32 { + fatalError() + } }