Description
What version of OpenRewrite are you using?
I am using
- Maven plugin v5.18.0
- rewrite-static-analysis v1.2.0
How are you running OpenRewrite?
I am using the Maven plugin, and my project is a single module project.
<plugin>
<groupId>org.openrewrite.maven</groupId>
<artifactId>rewrite-maven-plugin</artifactId>
<version>5.18.0</version>
<configuration>
<activeRecipes>
<recipe>org.openrewrite.staticanalysis.LambdaBlockToExpression</recipe>
</activeRecipes>
</configuration>
<dependencies>
<dependency>
<groupId>org.openrewrite.recipe</groupId>
<artifactId>rewrite-static-analysis</artifactId>
<version>1.2.0</version>
</dependency>
</dependencies>
</plugin>
What is the smallest, simplest way to reproduce the problem?
import static org.junit.jupiter.api.Assertions.assertThrows;
import java.math.BigDecimal;
import org.junit.jupiter.api.Test;
public class SimpleTest {
@Test
void shouldFailOnDivisionByZero() {
assertThrows(ArithmeticException.class, () -> {
BigDecimal.ONE.divide(BigDecimal.ZERO);
});
}
}
What did you expect to see?
import static org.junit.jupiter.api.Assertions.assertThrows;
import java.math.BigDecimal;
import org.junit.jupiter.api.Test;
public class SimpleTest {
@Test
void shouldFailOnDivisionByZero() {
assertThrows(ArithmeticException.class, () -> BigDecimal.ONE.divide(BigDecimal.ZERO));
}
}
What did you see instead?
no change whatsoever.
Notes
The example above is how I encountered this bug. The examplee below are a bit more minimal but less common in my opinion.
package org.example;
import javax.swing.JButton;
public class Main {
public static void main(String[] args) {
Runnable runHelloWorld = () -> {
System.out.println("Hello world!");
};
runHelloWorld.run();
JButton jb = new JButton();
jb.addActionListener(event -> {
System.out.println(7);
});
}
}
All three examples have in common that they don't return a value, so the description in the docs:
Single-line statement lambdas returning a value can be replaced with expression lambdas.
would render this issue a feature request. However, if I were to write a separate recipe I wouldn't know what else to call it but "LambdaBlockToExpression", so I declare the description part of the bug 😃.
In addition, IntelliJ suggests for all three examples to "Replace with expression lambda", just like for lambdas that return a value.
What is the full stack trace of any errors you encountered?
No errors, works as (IMO incompletely) designed
Are you interested in contributing a fix to OpenRewrite?
I'm somewhat interested in contributing, but not sure if I have the time. It would help me to know if the the functionality described does indeed belong in this recipe, or what to call such a separate recipe.
Metadata
Metadata
Assignees
Type
Projects
Status