LspError.data missing #[serde(default)] swallows the real jdtls error
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 1/5
- Tiempo estimado
- Menos de una hora
- Aptitud para principiantes
- 88/100
Línea de trabajo
La struct LspError está definida en src/lsp.rs, y el enum untagged LspResponse que la envuelve es donde falla el parseo. Empieza leyendo estas dos definiciones y luego añade #[serde(default)] al campo data. Para verificarlo, envía una respuesta del proxy con un objeto de error que no tenga la clave data y confirma que el campo message llega al usuario sin cambios.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
src/lsp.rs defines
pub struct LspError {
code: i64,
message: String,
data: Value, // no #[serde(default)]
}
LSP allows error.data to be omitted. When jdtls returns an error without data, the Error variant fails to deserialize, and since LspResponse is an untagged enum, the whole parse fails with:
Failed to parse response from LSP proxy: data did not match any variant of untagged enum LspResponse
Impact
The actual error message is swallowed. In our case the real response was:
{"error":{"code":-32601,"message":"No delegateCommandHandler for vscode.java.resolveMainClass"},"id":"...","jsonrpc":"2.0"}
but Zed surfaced the misleading serde error, which pointed everyone (including maintainers reading our report) at "protocol/proxy problems" instead of the broken debug plugin (see #324). This cost a long debugging session.
Repro
- Start a debug session while the java-debug bundle is broken/unloaded (e.g. #324)
- Or directly:
curl -X POST http://127.0.0.1:<proxy-port>/ -d '{"method":"workspace/executeCommand","params":{"command":"vscode.java.resolveMainClass","arguments":[]}}'— the response error has nodatafield
Fix
Add #[serde(default)] to data (one-liner) so the real message (No delegateCommandHandler ...) reaches the user.
- Lenguaje dominante
- Rust
- Estrellas
- 225
- Forks
- 47
- Merge medio
- 3 h 51 min
- PR fusionados (30 d)
- 7
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
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 zed-extensions/java
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
zed-extensions/java#133 · 1 comentario ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
zed-extensions/java#324 ·
-
Dificultad 3/5 Medio día Aptitud para principiantes 45/100
zed-extensions/java#323 · 2 comentarios ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
zed-extensions/java#272 · 6 comentarios ·
-
language-server
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
zed-extensions/java#246 · 4 comentarios ·
Todos los issues de zed-extensions/java
Issues similares
-
Perl - Readme DriftPosiblemente ocupada @Omnideth la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
CommunityToolkit/Aspire#2375 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 86/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día