Enhance IfElseIfConstructToSwitch to support "return" statements
Les mainteneurs répondent en général sous 1 jour
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 45/100
Piste de recherche
Commencez au point d’entrée de la recette IfElseIfConstructToSwitch et examinez la manière dont elle gère les branches contenant des instructions return. Lisez l’issue associée 718 pour connaître la limitation existante, puis vérifiez le comportement à l’aide de l’exemple Java de cette issue. Le travail est terminé lorsque les branches éligibles dont tous les chemins contiennent return sont converties en une expression switch équivalente, tandis que les cas de return intermédiaires restent exclus.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Currently the IfElseIfConstructToSwitch recipe does not convert to a switch if any of the parts would return.
However, if all branches would return, we could convert it to and it could be a potential candidate. Only the intermediate phase of having returns in the case is not valid, hence would not be picked up by:
static String formatter(Object obj) {
if (obj instanceof String s) {
return s;
} else if (obj instanceof Long l) {
return String.valueOf(l);
} else {
throw new IllegalStateException("Unexpected value: " + obj);
}
}
could become
static String formatter(Object obj) {
return switch (obj) {
case String s -> s;
case Long l -> String.valueOf(l);
default -> throw new IllegalStateException("Unexpected value: " + obj);
};
}
- Langage dominant
- Java
- Étoiles
- 161
- Forks
- 134
- Merge moyen
- 4 h 50 min
- PR mergées (30 j)
- 107
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é 3/5 1-2 jours Accessibilité débutants 72/100
openrewrite/rewrite-migrate-java#1383 ·
Les mainteneurs répondent en général sous 1 jour
-
good first issue
Difficulté 4/5 3-5 jours Accessibilité débutants 30/100
openrewrite/rewrite-migrate-java#1330 · 5 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
UseMapOf: Skip refactoring large maps to Map.ofEntries to prevent javac compiler hangs (add maxEntries option)Peut-être pris @Yuren0312 l’a pris il y a 6 jours. Ouvertebug
Difficulté 3/5 1-2 jours Accessibilité débutants 55/100
openrewrite/rewrite-migrate-java#1310 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 4/5 3-5 jours Accessibilité débutants 55/100
openrewrite/rewrite-migrate-java#1307 ·
Les mainteneurs répondent en général sous 1 jour
-
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
Toutes les issues de openrewrite/rewrite-migrate-java
Issues similaires
-
PathnameExpander incorrectly interprets regex metacharacters in wildcard patternsPeut-être pris @jiteshkhatri11 l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
javapathfinder/jpf-core#662 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
FasterXML/jackson-databind#6366 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
ballerina-platform/ballerina-library#9437 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
ballerina-platform/ballerina-lang#44838 ·
Les mainteneurs répondent en général sous 1 jour
-
Documentation
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
OWASP/SecurityShepherd#1097 ·
Les mainteneurs répondent en général sous 1 jour