google / google/google-java-format
Intellij Plugin breaks method inlining and variable extraction from inside if condition
- 主要言語
- Java
- スター
- 6.2k
- フォーク
- 937
- 平均マージ
- 6分
- マージ済み PR(30日)
- 3
説明
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)
コントリビューションガイド
評価
この issue はまだ評価されていません。