google / google/google-java-format
Intellij Plugin breaks method inlining and variable extraction from inside if condition
- Vorherrschende Sprache
- Java
- Sterne
- 6.2k
- Forks
- 937
- Ø Merge
- 6 Min.
- Gemergte PRs (30 T.)
- 3
Beschreibung
Consider the following code and try inlining `isEmpty2`:
```java
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 getCollection() {
return List.of();
}
}
}
```
Not only does it fail (without reporting it), but it adds an additional `if (true)`:
```java
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:
```java
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)
Beitragsleitfaden
Bewertung
Dieses Issue wurde noch nicht bewertet.