jextract/jni: Protocol property setters reference an incorrectly named adapter
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 56/100
Direzione di ricerca
Start by tracing the generated JNI binding for a public protocol-typed property with Java callbacks enabled, comparing the wrapper declaration name with the setter argument conversion reference. Check the related protocol-parameter adapter issue #946 for nearby context. Done when property setters, label-disambiguated overloads, and Java keyword names generate matching adapter references and the resulting Swift compiles.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
With Java callbacks enabled, JNI bindings for a public protocol-typed property can generate a Swift setter that references a wrapper class under a different name from its declaration. The generated Swift code then fails to compile.
Example
public protocol Callback {
func value() -> Int64
}
public final class Service {
public var callback: any Callback
public init(callback: some Callback) {
self.callback = callback
}
public func read() -> Int64 {
callback.value()
}
}
The generated wrapper declaration uses the Swift property name, while the setter's argument conversion uses the Java setter name:
// Generated wrapper declaration
final class _Service_callback_newValue_Wrapper: SwiftJavaCallbackWrapper {
// ...
}
// Generated setter argument conversion references
// _Service_setCallback_newValue_Wrapper instead.
The same kind of mismatch can occur when Java method names differ from Swift names for label-disambiguated overloads or Java keywords.
Related: #946 also concerns protocol-parameter adapters, but reports duplicate declarations for overloads.
Reference workaround implementation: https://github.com/qoncept/swift-java/pull/16
- Lingua principale
- Swift
- Stelle
- 1.3k
- Fork
- 127
- Merge medio
- 2g 14h
- PR unite (30g)
- 5
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di swiftlang/swift-java
-
wrap-java: Optional convenience methods can fail to compile when a parameter shadows the method nameAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
swiftlang/swift-java#945 ·
I maintainer di solito rispondono entro 1 giorno
-
android
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
swiftlang/swift-java#663 · 4 commenti · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
swiftlang/swift-java#948 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 54/100
swiftlang/swift-java#947 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 53/100
swiftlang/swift-java#946 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di swiftlang/swift-java
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
VictorKildahl/cra#192 ·
I maintainer di solito rispondono entro 1 giorno
-
area:docs phase:release priority:p0 type:test
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
-
[Type] Bug Accessibility Notifications
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
wordpress-mobile/WordPress-iOS#26340 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno