Commit hash: a736a64
Context:
While testing swiftly's support of existing Swift code, noticed that a code using a function that is overloaded with both sync and async variants is not compiling, failing with "method is already defined" error.
import Foundation
public class Test {
public func remove(key: String) { /* sync */ }
public func remove(key: String) async { }
}
Results in the following compilation error:
.../.build/plugins/outputs/lib/SwiftTestLib/destination/JExtractSwiftPlugin/src/generated/java/com/example/swiftexamplelib/Test.java:93: error: method removeKey(String) is already defined in class Test
public java.util.concurrent.CompletableFuture<java.lang.Void> removeKey(java.lang.String key) {
Portion of the generated Java file:
// ==== --------------------------------------------------
// Test.remove
/**
* Downcall to Swift:
* {@snippet lang=swift :
* public func remove(key: String)
* }
*/
public void removeKey(java.lang.String key) {
Test.$removeKey(key, this.$memoryAddress());
} // printJavaBindingWrapperMethod(_:_:importedFunc:skipMethodBody:) @ JExtractSwiftLib/JNISwift2JavaGenerator+JavaBindingsPrinting.swift:950
private static native void $removeKey(java.lang.String key, long selfPointer);
// ==== --------------------------------------------------
// Test.remove
/**
* Downcall to Swift:
* {@snippet lang=swift :
* public func remove(key: String) async
* }
*/
public java.util.concurrent.CompletableFuture<java.lang.Void> removeKey(java.lang.String key) {
java.util.concurrent.CompletableFuture<java.lang.Void> future$ = new java.util.concurrent.CompletableFuture<java.lang.Void>();
Test.$removeKey(key, this.$memoryAddress(), future$);
return future$.thenApply((futureResult$) -> {
return futureResult$;
} // render(_:_:) @ JExtractSwiftLib/JNISwift2JavaGenerator+JavaTranslation.swift:2072
);
} // printJavaBindingWrapperMethod(_:_:importedFunc:skipMethodBody:) @ JExtractSwiftLib/JNISwift2JavaGenerator+JavaBindingsPrinting.swift:950
private static native void $removeKey(java.lang.String key, long selfPointer, java.util.concurrent.CompletableFuture<java.lang.Void> result_future);
Environment: Swift 6.3.3 on macOS.
$ swiftly run swift --version
Apple Swift version 6.3.3 (swift-6.3.3-RELEASE)
Target: arm64-apple-macosx26.0
$ uname -a
Darwin it-C01241 25.6.0 Darwin Kernel Version 25.6.0: Fri Jul 31 19:18:49 PDT 2026; root:xnu-12377.161.14~5/RELEASE_ARM64_T6000 arm64
Commit hash: a736a64
Context:
While testing swiftly's support of existing Swift code, noticed that a code using a function that is overloaded with both sync and async variants is not compiling, failing with "method is already defined" error.
Results in the following compilation error:
Portion of the generated Java file:
Environment: Swift 6.3.3 on macOS.