diff --git a/Samples/SwiftJavaExtractJNISampleApp/Sources/MySwiftLibrary/MySwiftLibrary.swift b/Samples/SwiftJavaExtractJNISampleApp/Sources/MySwiftLibrary/MySwiftLibrary.swift index 260c2649..fc294b5a 100644 --- a/Samples/SwiftJavaExtractJNISampleApp/Sources/MySwiftLibrary/MySwiftLibrary.swift +++ b/Samples/SwiftJavaExtractJNISampleApp/Sources/MySwiftLibrary/MySwiftLibrary.swift @@ -64,6 +64,18 @@ public func returnLargestUnsignedByte() -> UInt8 { UInt8.max } +public func globalOverloaded(a: Int) -> Int { + a + 1 +} + +public func globalOverloaded(b: Int) -> Int { + b + 2 +} + +public func globalOverloaded(_ c: Int) -> Int { + c + 3 +} + // ==== Internal helpers func p(_ msg: String, file: String = #fileID, line: UInt = #line, function: String = #function) { diff --git a/Samples/SwiftJavaExtractJNISampleApp/src/test/java/com/example/swift/MySwiftLibraryTest.java b/Samples/SwiftJavaExtractJNISampleApp/src/test/java/com/example/swift/MySwiftLibraryTest.java index 27e1aa95..22232b62 100644 --- a/Samples/SwiftJavaExtractJNISampleApp/src/test/java/com/example/swift/MySwiftLibraryTest.java +++ b/Samples/SwiftJavaExtractJNISampleApp/src/test/java/com/example/swift/MySwiftLibraryTest.java @@ -78,4 +78,11 @@ void returnUnsignedByte_negative() { void returnLargestUnsignedByte() { assertEquals(-1, MySwiftLibrary.returnLargestUnsignedByte()); } -} \ No newline at end of file + + @Test + void labeledOverloads() { + assertEquals(101, MySwiftLibrary.globalOverloadedA(100)); + assertEquals(202, MySwiftLibrary.globalOverloadedB(200)); + assertEquals(303, MySwiftLibrary.globalOverloaded(300)); + } +} diff --git a/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+SwiftThunkPrinting.swift b/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+SwiftThunkPrinting.swift index 23269bc7..9cae321d 100644 --- a/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+SwiftThunkPrinting.swift +++ b/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+SwiftThunkPrinting.swift @@ -277,6 +277,10 @@ extension JNISwift2JavaGenerator { private func printGlobalSwiftThunkSources(_ printer: inout CodePrinter) throws { printHeader(&printer) + self.currentJavaIdentifiers = JavaIdentifierFactory( + self.analysis.importedGlobalFuncs + self.analysis.importedGlobalVariables + ) + for decl in analysis.importedGlobalFuncs { printSwiftFunctionThunk(&printer, decl) printer.println() @@ -290,9 +294,12 @@ extension JNISwift2JavaGenerator { private func printNominalTypeThunks(_ printer: inout CodePrinter, _ type: ImportedNominalType) throws { printHeader(&printer) - printer.println() + self.currentJavaIdentifiers = JavaIdentifierFactory( + type.initializers + type.variables + type.methods + ) + switch type.swiftNominal.kind { case .actor, .class, .enum, .struct: printConcreteTypeThunks(&printer, type)