UseVarForGenericMethodInvocations 'mvn rewrite:run' crash
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 38/100
Direção de pesquisa
Localize a recipe UseVarForGenericMethodInvocations e a implementação de JavaTemplate, então reproduza o crash com o caso de teste Java mostrado na issue. O trabalho estará concluído quando a invocação de método genérico for convertida para var sem uma exceção e a saída de código-fonte esperada for produzida.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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?
- Linguagem predominante
- Java
- Estrelas
- 161
- Forks
- 134
- Merge médio
- 4h 45min
- PRs com merge (30d)
- 108
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de openrewrite/rewrite-migrate-java
-
good first issue
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 30/100
openrewrite/rewrite-migrate-java#1330 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
UseMapOf: Skip refactoring large maps to Map.ofEntries to prevent javac compiler hangs (add maxEntries option)Talvez já em andamento @Yuren0312 assumiu há 3 dias. Abertabug
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 55/100
openrewrite/rewrite-migrate-java#1310 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 55/100
openrewrite/rewrite-migrate-java#1307 ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 68/100
openrewrite/rewrite-migrate-java#1246 ·
Mantenedores costumam responder em até 1 dia
-
Feedback from a 152k-line Java 8 to 25 migration: the silent behavioural changes that cost the most, and which have no recipeTalvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Aberta
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 32/100
openrewrite/rewrite-migrate-java#1227 · 4 comentários · 1 reação ·
Mantenedores costumam responder em até 1 dia
Todas as issues de openrewrite/rewrite-migrate-java
Issues semelhantes
-
Component: Frontend Component: Web Component Type: Maintenance
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
it-at-m/refarch-templates#1944 ·
Mantenedores costumam responder em até 2 dias
-
priority: p2 type: bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
googleapis/java-genai#1372 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 60/100
-
GeoSeries scale and skew tests fail with pytest 9.2.0Talvez já em andamento @jiayuasu assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
Mantenedores costumam responder em até 1 dia
-
priority: medium Review effort [1-5]: 3 status: needs-triage type: bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
carlos-emr/carlos#5431 ·
Mantenedores costumam responder em até 1 dia