UseVarForGenericMethodInvocations 'mvn rewrite:run' crash
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 38/100
Rechercherichtung
Suchen Sie das Rezept UseVarForGenericMethodInvocations und die Implementierung von JavaTemplate, und reproduzieren Sie dann den Absturz mit dem im Issue gezeigten Java-Testfall. Die Arbeit ist abgeschlossen, wenn der generische Methodenaufruf ohne Ausnahme in var umgewandelt wird und die erwartete Quelltextausgabe erzeugt wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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?
- Vorherrschende Sprache
- Java
- Sterne
- 160
- Forks
- 133
- Ø Merge
- 5 Std. 51 Min.
- Gemergte PRs (30 T.)
- 86
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus openrewrite/rewrite-migrate-java
-
good first issue
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 30/100
openrewrite/rewrite-migrate-java#1330 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 72/100
openrewrite/rewrite-migrate-java#1319 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 55/100
openrewrite/rewrite-migrate-java#1314 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 55/100
openrewrite/rewrite-migrate-java#1310 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 55/100
openrewrite/rewrite-migrate-java#1307 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in openrewrite/rewrite-migrate-java
Ähnliche Issues
-
agent:working follow-up
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
Sanne/incus-spawn#1683 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
checkstyle/checkstyle#22210 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 75/100
521xueweihan/HelloGitHub#4105 ·
-
devops good first issue security
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
asciidoctor/asciidoctorj#1339 ·