Intellij Plugin breaks method inlining and variable extraction from inside if condition
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 35/100
- Type d'issue
- Bug
- Clarté
- Plutôt claire
- Activité
- À l'abandon
- Stack technique
- java
- Domaine
- developer-experience, tooling
Piste de recherche
Commencez par la reproduction Java dans l’issue et étudiez l’interaction du formatage du plugin IntelliJ avec l’inlining des méthodes et l’extraction de variables à l’intérieur d’une condition if. Reproduisez la transformation avec le plugin activé et comparez-la au résultat avec le plugin désactivé ; c’est terminé lorsque le refactoring n’insère plus de if (true) inutile, ne signale plus d’erreur et ne laisse plus le formatage incorrect.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Consider the following code and try inlining isEmpty2:
import java.util.Collection;
import java.util.List;
public class InliningWithJavaFormat {
static boolean isEmpty(Collection<?> c) {
return c == null || c.isEmpty();
}
static boolean isEmpty2(Collection<?> c) {
return isEmpty(c);
}
public static void main(String[] args){
var pojo = new MyPojo();
if (pojo != null && !isEmpty2(pojo.getCollection())) {
System.out.println("empty");
}
}
static class MyPojo {
Collection<String> getCollection() {
return List.of();
}
}
}
Not only does it fail (without reporting it), but it adds an additional if (true):
public static void main(String[] args){
var pojo = new MyPojo();
if (pojo != null && !isEmpty2(pojo.getCollection())) {
if (true) {
System.out.println("empty");
}
}
}
with the plugin disabled, it works:
public static void main(String[] args){
var pojo = new MyPojo();
if (pojo != null) {
Collection<?> c = pojo.getCollection();
if (!isEmpty(c)) {
System.out.println("empty");
}
}
}
(not the ideal result but at least it does not fail)
In addition, when I do that on my actual project I get an error notification from the plugin and the formatting gets broken:
(I did not try to reproduce this with an MRE, I guess it is a side effect of the first issue)
- Langage dominant
- Java
- Étoiles
- 6.2k
- Forks
- 936
- Merge moyen
- 6 min
- PR mergées (30 j)
- 3
Guide de contribution
Ouvrir 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 google/google-java-format
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
google/google-java-format#1094 · 1 commentaire ·
-
Complementary Teamups Ouverte
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 15/100
google/google-java-format#1450 · 1 réaction ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 55/100
google/google-java-format#1439 · 1 commentaire ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 62/100
google/google-java-format#1436 · 2 commentaires ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 48/100
google/google-java-format#1428 · 4 commentaires ·
Toutes les issues de google/google-java-format
Issues similaires
-
documentation
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
inu-appcenter/memorIN-backend#288 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
-
frontend maui-pilot pilot-ask question
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
executions.Query — startDate and timeRange filters are sent with inverted comparison operators Ouvertearea/plugin
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
kestra-io/plugin-kestra#190 ·