From 35a96b65539c1f5ccb36d39fc0fc417f6a44ede9 Mon Sep 17 00:00:00 2001 From: pstreef Date: Thu, 24 Aug 2023 19:52:34 +0200 Subject: [PATCH 1/2] Simplify lambda blocks to expressions replaces return that is used to infer which overloaded method to pick --- .../LambdaBlockToExpressionTest.java | 49 +++++++++++++++++-- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/src/test/java/org/openrewrite/staticanalysis/LambdaBlockToExpressionTest.java b/src/test/java/org/openrewrite/staticanalysis/LambdaBlockToExpressionTest.java index 2e7a6c2829..04f5a52fc6 100644 --- a/src/test/java/org/openrewrite/staticanalysis/LambdaBlockToExpressionTest.java +++ b/src/test/java/org/openrewrite/staticanalysis/LambdaBlockToExpressionTest.java @@ -15,22 +15,26 @@ */ package org.openrewrite.staticanalysis; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.openrewrite.DocumentExample; import org.openrewrite.Issue; +import org.openrewrite.test.RecipeSpec; import org.openrewrite.test.RewriteTest; import static org.openrewrite.java.Assertions.java; class LambdaBlockToExpressionTest implements RewriteTest { + @Override + public void defaults(RecipeSpec spec) { + spec.recipe(new LambdaBlockToExpression()); + } + @DocumentExample @SuppressWarnings("CodeBlock2Expr") @Test void simplifyLambdaBlockToExpression() { rewriteRun( - spec -> spec.recipe(new LambdaBlockToExpression()), //language=java java( """ @@ -55,7 +59,6 @@ class Test { @Issue("https://github.com/openrewrite/rewrite-static-analysis/issues/1") void simplifyLambdaBlockToExpressionWithComments() { rewriteRun( - spec -> spec.recipe(new LambdaBlockToExpression()), //language=java java( """ @@ -78,4 +81,44 @@ class Test { ) ); } + + @Test + @Issue("https://github.com/openrewrite/rewrite-static-analysis/issues/162") + void simplifyLambdaBlockWithAmbiguousMethod() { + //language=java + rewriteRun( + java(""" + import java.util.function.Function; + import java.util.function.Consumer; + class A { + void aMethod(Consumer consumer){ + } + + void aMethod(Function function){ + } + } + """), + java( + """ + class Test { + void doTest() { + A a = new A(); + a.aMethod(value -> { + return value.toString(); + }); + } + } + """, + """ + class Test { + void doTest() { + A a = new A(); + a.aMethod(value -> value.toString()); + } + } + """ + ) + ); + } + } From 5c8d58efd6fa3087f906331f1269db2ade25bfd6 Mon Sep 17 00:00:00 2001 From: pstreef Date: Thu, 24 Aug 2023 19:57:12 +0200 Subject: [PATCH 2/2] add logCompilationWarningsAndErrors --- .../staticanalysis/LambdaBlockToExpressionTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/openrewrite/staticanalysis/LambdaBlockToExpressionTest.java b/src/test/java/org/openrewrite/staticanalysis/LambdaBlockToExpressionTest.java index 04f5a52fc6..06de1aef51 100644 --- a/src/test/java/org/openrewrite/staticanalysis/LambdaBlockToExpressionTest.java +++ b/src/test/java/org/openrewrite/staticanalysis/LambdaBlockToExpressionTest.java @@ -18,6 +18,7 @@ import org.junit.jupiter.api.Test; import org.openrewrite.DocumentExample; import org.openrewrite.Issue; +import org.openrewrite.java.JavaParser; import org.openrewrite.test.RecipeSpec; import org.openrewrite.test.RewriteTest; @@ -27,7 +28,8 @@ class LambdaBlockToExpressionTest implements RewriteTest { @Override public void defaults(RecipeSpec spec) { - spec.recipe(new LambdaBlockToExpression()); + spec.recipe(new LambdaBlockToExpression()) + .parser(JavaParser.fromJavaVersion().logCompilationWarningsAndErrors(true)); } @DocumentExample