UseVarForGenericMethodInvocations 'mvn rewrite:run' crash
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 38/100
Línea de trabajo
Localiza la receta UseVarForGenericMethodInvocations y la implementación de JavaTemplate, y reproduce después el fallo con el caso de prueba de Java mostrado en el issue. El trabajo estará terminado cuando la invocación de método genérico se convierta a var sin lanzar una excepción y se produzca la salida de código fuente esperada.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
What version of OpenRewrite are you using?
Latest 3.4.0
What is the smallest, simplest way to reproduce the problem?
@Test
public void useVarBug() {
rewriteRun(
spec -> spec.recipe(new UseVarForGenericMethodInvocations()),
version(
//language=java
java(
"""
import java.util.Optional;
class A {
<T extends Number> void test(T element) {
Optional<T> o = Optional.of(element);
}
}
""",
"""
import java.util.Optional;
class A {
<T extends Number> void test(T element) {
var o = Optional.of(element);
}
}
"""), 17));
}
What did you expect to see?
Replace variable with var
What did you see instead?
It crashes.
What is the full stack trace of any errors you encountered?
org.openrewrite.internal.RecipeRunException: java.lang.IllegalArgumentException: Expected a template that would generate exactly one statement to replace one statement, but generated 2. Template:
var o = __P__.<java.util.Optional<T extends java.lang.Number>>/*__p1__*/p()
Substitutions:
Substitutions(code=var #{} = #{any()}, parameters=[o, Optional.of(element)], propertyPlaceholderHelper=org.openrewrite.internal.PropertyPlaceholderHelper@3ee0b4f7)
Statement:
Optional<T> o = Optional.of(element)
Are you interested in contributing a fix to OpenRewrite
I think there are 2 issues here.
In the JavaTemplate implementation:
var o = __P__.<java.util.Optional<T extends java.lang.Number>>/*__p1__*/p()
should be
var o = __P__.<java.util.Optional<T>>/*__p1__*/p()
and this would work by making the template in UseVarForGenericMethodInvocations context sensitive.
But maybe, for this recipe, it would be best to do the "transformation" by hand, instead of using JavaTemplate?
- Lenguaje dominante
- Java
- Estrellas
- 156
- Forks
- 129
- Merge medio
- 7 h 21 min
- PR fusionados (30 d)
- 42
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 openrewrite/rewrite-migrate-java
-
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
openrewrite/rewrite-migrate-java#1289 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 4/5 3-5 días Aptitud para principiantes 68/100
openrewrite/rewrite-migrate-java#1246 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 32/100
openrewrite/rewrite-migrate-java#1227 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
OptionalNotPresentToIsEmpty rewrites `!isPresent()` on a non-`java.util.Optional` type, producing uncompilable `isEmpty()`Quizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 70/100
openrewrite/rewrite-migrate-java#1146 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 4/5 3-5 días Aptitud para principiantes 50/100
openrewrite/rewrite-migrate-java#1119 · 5 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de openrewrite/rewrite-migrate-java
Issues similares
-
:ml/Transform >bug Team:ML
Dificultad 2/5 Medio día Aptitud para principiantes 64/100
elastic/elasticsearch#161960 · 2 comentarios · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
chore: update release scheduleAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 4 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Tiviacz1337/Travelers-Backpack#1629 ·
-
bug: Authentication and App Check listeners leak the Activity and WebView on AndroidPosiblemente ocupada @harbinzhang la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
capawesome-team/capacitor-firebase#1050 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
capawesome-team/capacitor-plugins#1134 ·
Los mantenedores suelen responder en 1 día