From baa07483753edb99ddfe981fdf2e178a5836cf0f Mon Sep 17 00:00:00 2001 From: Artem Olkov Date: Tue, 16 Jan 2024 10:58:51 +0000 Subject: [PATCH] KT-64932: add support for no-package top level functions Merge-request: KT-MR-13879 Merged-by: Artem Olkov --- .../jetbrains/kotlin/swiftexport/SwiftExportExtension.kt | 7 ++++++- plugins/swift-export/testData/no_package.golden.h | 3 +++ plugins/swift-export/testData/no_package.golden.kt | 7 +++++++ plugins/swift-export/testData/no_package.golden.swift | 3 +++ plugins/swift-export/testData/no_package.kt | 1 + .../kotlin/swiftexport/SwiftExportCompilerPluginTest.java | 6 ++++++ 6 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 plugins/swift-export/testData/no_package.golden.h create mode 100644 plugins/swift-export/testData/no_package.golden.kt create mode 100644 plugins/swift-export/testData/no_package.golden.swift create mode 100644 plugins/swift-export/testData/no_package.kt diff --git a/plugins/swift-export/swift-export.backend/src/org/jetbrains/kotlin/swiftexport/SwiftExportExtension.kt b/plugins/swift-export/swift-export.backend/src/org/jetbrains/kotlin/swiftexport/SwiftExportExtension.kt index 453e180410e..63e682e0123 100644 --- a/plugins/swift-export/swift-export.backend/src/org/jetbrains/kotlin/swiftexport/SwiftExportExtension.kt +++ b/plugins/swift-export/swift-export.backend/src/org/jetbrains/kotlin/swiftexport/SwiftExportExtension.kt @@ -166,9 +166,14 @@ class SwiftExportExtension( override fun visitFunction(function: SirFunction) { val fqName = (function.origin as? SirKotlinOrigin.Function)?.fqName ?: return + val fqNameForBridge = if (fqName.count() == 1) { + listOf("__root__", fqName.first()) // todo: should be changed with correct mangling KT-64970 + } else { + fqName + } val bridgeRequest = BridgeRequest( function, - fqName.joinToString("_"), + fqNameForBridge.joinToString("_"), fqName ) requests += bridgeRequest diff --git a/plugins/swift-export/testData/no_package.golden.h b/plugins/swift-export/testData/no_package.golden.h new file mode 100644 index 00000000000..f52519dd563 --- /dev/null +++ b/plugins/swift-export/testData/no_package.golden.h @@ -0,0 +1,3 @@ +#include + +int32_t __root___meaningOfLife(); diff --git a/plugins/swift-export/testData/no_package.golden.kt b/plugins/swift-export/testData/no_package.golden.kt new file mode 100644 index 00000000000..992e8e7dcb6 --- /dev/null +++ b/plugins/swift-export/testData/no_package.golden.kt @@ -0,0 +1,7 @@ +import kotlin.native.internal.ExportedBridge + +@ExportedBridge("__root___meaningOfLife") +public fun __root___meaningOfLife(): Int { + val result = meaningOfLife() + return result +} diff --git a/plugins/swift-export/testData/no_package.golden.swift b/plugins/swift-export/testData/no_package.golden.swift new file mode 100644 index 00000000000..c90377cc4d3 --- /dev/null +++ b/plugins/swift-export/testData/no_package.golden.swift @@ -0,0 +1,3 @@ +public func meaningOfLife() -> Swift.Int32 { + return __root___meaningOfLife() +} diff --git a/plugins/swift-export/testData/no_package.kt b/plugins/swift-export/testData/no_package.kt new file mode 100644 index 00000000000..eb2e0d13947 --- /dev/null +++ b/plugins/swift-export/testData/no_package.kt @@ -0,0 +1 @@ +fun meaningOfLife(): Int = 420 \ No newline at end of file diff --git a/plugins/swift-export/tests-gen/org/jetbrains/kotlin/swiftexport/SwiftExportCompilerPluginTest.java b/plugins/swift-export/tests-gen/org/jetbrains/kotlin/swiftexport/SwiftExportCompilerPluginTest.java index e9987149807..998c5f76057 100644 --- a/plugins/swift-export/tests-gen/org/jetbrains/kotlin/swiftexport/SwiftExportCompilerPluginTest.java +++ b/plugins/swift-export/tests-gen/org/jetbrains/kotlin/swiftexport/SwiftExportCompilerPluginTest.java @@ -25,6 +25,12 @@ public class SwiftExportCompilerPluginTest extends AbstractSwiftExportContextTes KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/swift-export/testData"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile(".*\\.golden\\.kt$"), TargetBackend.JVM, false); } + @Test + @TestMetadata("no_package.kt") + public void testNo_package() throws Exception { + runTest("plugins/swift-export/testData/no_package.kt"); + } + @Test @TestMetadata("simple.kt") public void testSimple() throws Exception {