jextract/jni: Expose Swift protocol requirement defaults to Java callbacks
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Área
- backend-api-design
Línea de trabajo
Start by reading #562 and #891, which describe related extension-member and compilation behavior, then inspect the JNI callback generation entry points in the repository. Determine how an unconditional Swift protocol extension implementation can remain the implementation while calls to other requirements dispatch to Java overrides; done means Java callbacks can inherit that default and the example works.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
JNI callback interfaces currently leave protocol requirements abstract even when Swift supplies an unconditional implementation in an extension. Java implementors must repeat that implementation instead of inheriting the Swift behavior.
Example
public protocol Greeter {
func name() -> String
func greeting() -> String
}
extension Greeter {
public func greeting() -> String { "Hello, \(name())" }
}
With Java callbacks enabled, it would be useful for a Java implementation to provide only name() and inherit the Swift implementation of greeting():
Greeter greeter = () -> "World";
String message = greeter.greeting(); // "Hello, World"
The Swift body should remain the implementation, and its calls to other requirements should dispatch to the Java receiver, including any Java overrides.
This is related to #562, which discusses exposing extension members as Java default methods, and #891, which reports a compilation error when a protocol requirement has a default implementation.
Reference workaround implementation: https://github.com/qoncept/swift-java/pull/11
- Lenguaje dominante
- Swift
- Estrellas
- 1.3k
- Forks
- 127
- Merge medio
- 2 d 14 h
- PR fusionados (30 d)
- 5
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de swiftlang/swift-java
-
wrap-java: Optional convenience methods can fail to compile when a parameter shadows the method nameAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
swiftlang/swift-java#945 ·
Los mantenedores suelen responder en 1 día
-
android
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
swiftlang/swift-java#663 · 4 comentarios · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 56/100
swiftlang/swift-java#949 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 54/100
swiftlang/swift-java#947 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 53/100
swiftlang/swift-java#946 ·
Los mantenedores suelen responder en 1 día
Todos los issues de swiftlang/swift-java
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
VictorKildahl/cra#192 ·
Los mantenedores suelen responder en 1 día
-
area:docs phase:release priority:p0 type:test
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
-
[Type] Bug Accessibility Notifications
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
wordpress-mobile/WordPress-iOS#26340 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día