UseVarForGenericMethodInvocations 'mvn rewrite:run' crash
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 38/100
Piste de recherche
Localisez la recette UseVarForGenericMethodInvocations et l’implémentation de JavaTemplate, puis reproduisez le plantage avec le cas de test Java présenté dans l’issue. Le travail est terminé lorsque l’invocation de méthode générique est convertie en var sans exception et que la sortie du code source attendue est produite.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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?
- Langage dominant
- Java
- Étoiles
- 159
- Forks
- 130
- Merge moyen
- 6 h 49 min
- PR mergées (30 j)
- 47
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de openrewrite/rewrite-migrate-java
-
bug
Difficulté 4/5 3-5 jours Accessibilité débutants 68/100
openrewrite/rewrite-migrate-java#1246 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 32/100
openrewrite/rewrite-migrate-java#1227 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
OptionalNotPresentToIsEmpty rewrites `!isPresent()` on a non-`java.util.Optional` type, producing uncompilable `isEmpty()`Peut-être à nouveau libre Une pull request pour cette issue a été fermée sans être fusionnée. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 70/100
openrewrite/rewrite-migrate-java#1146 · 3 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 4/5 3-5 jours Accessibilité débutants 50/100
openrewrite/rewrite-migrate-java#1119 · 5 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
openrewrite/rewrite-migrate-java#1069 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de openrewrite/rewrite-migrate-java
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
bug
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
PhasetransCrystal/FPSMatch#47 ·
Les mainteneurs répondent en général sous 1 jour
-
Remove unactionable info logOuvertebug
Difficulté 1/5 Moins d'une heure Accessibilité débutants 76/100
apache/maven-toolchains-plugin#205 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 90/100
Les mainteneurs répondent en général sous 1 jour
-
[Bug] Dated CSV export filenames use the UTC day rather than the operator dayPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
apache/rocketmq-dashboard#6896 ·
Les mainteneurs répondent en général sous 3 jours