Compilation error for class with sync/async function overloads: method is already defined
Les mainteneurs répondent en général sous 1 jour
@Hokila y travaille déjà.
Depuis le 3/9/2026.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 68/100
Piste de recherche
Commencez par JNISwift2JavaGenerator+JavaBindingsPrinting.swift au niveau de printJavaBindingWrapperMethod et par JavaTranslation.swift au niveau de render, puis reproduisez l’exemple signalé de surcharge remove sync/async. Suivez la transformation des deux méthodes Swift en méthodes Java et assurez-vous que la classe générée se compile sans l’erreur de méthode dupliquée, tout en conservant les deux bindings.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Commit hash: a736a64e18a85f55f267427a3c9de60ae8377b7a
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
- Langage dominant
- Swift
- Étoiles
- 1.3k
- Forks
- 127
- Merge moyen
- 1 h 6 min
- PR mergées (30 j)
- 3
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de swiftlang/swift-java
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
swiftlang/swift-java#955 ·
Les mainteneurs répondent en général sous 1 jour
-
wrap-java: Optional convenience methods can fail to compile when a parameter shadows the method nameOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
swiftlang/swift-java#945 ·
Les mainteneurs répondent en général sous 1 jour
-
android
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
swiftlang/swift-java#663 · 4 commentaires · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 3/5 1-2 jours Accessibilité débutants 56/100
swiftlang/swift-java#949 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
swiftlang/swift-java#948 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de swiftlang/swift-java
Issues similaires
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 61/100
JWhite212/SignalLadder#215 ·
Les mainteneurs répondent en général sous 1 jour
-
Notch: show the playing trackOuverteenhancement mac
Difficulté 2/5 1-3 heures Accessibilité débutants 73/100
-
feat: 앱 정보에 개인정보처리방침과 고객지원 연결Peut-être pris @xrpjwk8 l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
DeveloperAcademy-POSTECH/2026-C6-A13-Hear-I-am#120 ·
Les mainteneurs répondent en général sous 1 jour
-
Add a Light view to SurfUIOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
michaelnisi/hanstholm#246 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
area:shell order:4 status:ready type:chore
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
krystianslowik/arkt#739 ·
Les mainteneurs répondent en général sous 1 jour