Enhance IfElseIfConstructToSwitch to support "return" statements

Ouverte
#776 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@arnabnandy7 y travaille déjà.

Depuis le 3/7/2026.

  • #1162 par @arnabnandy7 — ouverte

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
45/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
java
Domaine
tooling

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

enhancement java 21+ recipe

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

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de openrewrite/rewrite-migrate-java

Toutes les issues de openrewrite/rewrite-migrate-java

Issues similaires

Plus d'issues Java

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.