From 4c490557a973047b7a3543ae4e5b950472beffb4 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 3 Nov 2014 15:50:02 +0100 Subject: [PATCH] expand one line lambda: fix value compatibility check --- .../types/ExpandOneLineLambda2CodeBlockIntention.java | 2 +- .../siyeh/ipp/types/expr2block/VoidCompatibleInExpr.java | 7 +++++++ .../ipp/types/expr2block/VoidCompatibleInExpr_after.java | 9 +++++++++ .../ExpandOneLineLambda2CodeBlockIntentionTest.java | 5 +++++ 4 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 plugins/IntentionPowerPak/test/com/siyeh/ipp/types/expr2block/VoidCompatibleInExpr.java create mode 100644 plugins/IntentionPowerPak/test/com/siyeh/ipp/types/expr2block/VoidCompatibleInExpr_after.java diff --git a/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ExpandOneLineLambda2CodeBlockIntention.java b/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ExpandOneLineLambda2CodeBlockIntention.java index 420a95ede661..72e5dfd91181 100644 --- a/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ExpandOneLineLambda2CodeBlockIntention.java +++ b/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ExpandOneLineLambda2CodeBlockIntention.java @@ -44,7 +44,7 @@ public class ExpandOneLineLambda2CodeBlockIntention extends Intention { final PsiElement body = lambdaExpression.getBody(); LOG.assertTrue(body instanceof PsiExpression); String blockText = "{"; - blockText += ((PsiExpression)body).getType() == PsiType.VOID ? "" : "return "; + blockText += PsiType.VOID.equals(LambdaUtil.getFunctionalInterfaceReturnType(lambdaExpression)) ? "" : "return "; blockText += body.getText() + ";}"; final String resultedLambdaText = lambdaExpression.getParameterList().getText() + "->" + blockText; diff --git a/plugins/IntentionPowerPak/test/com/siyeh/ipp/types/expr2block/VoidCompatibleInExpr.java b/plugins/IntentionPowerPak/test/com/siyeh/ipp/types/expr2block/VoidCompatibleInExpr.java new file mode 100644 index 000000000000..8d78fe297443 --- /dev/null +++ b/plugins/IntentionPowerPak/test/com/siyeh/ipp/types/expr2block/VoidCompatibleInExpr.java @@ -0,0 +1,7 @@ +import java.util.List; + +class X { + void foo(List list){ + Runnable c = () -> list.add(""); + } +} \ No newline at end of file diff --git a/plugins/IntentionPowerPak/test/com/siyeh/ipp/types/expr2block/VoidCompatibleInExpr_after.java b/plugins/IntentionPowerPak/test/com/siyeh/ipp/types/expr2block/VoidCompatibleInExpr_after.java new file mode 100644 index 000000000000..c910c5fcfe97 --- /dev/null +++ b/plugins/IntentionPowerPak/test/com/siyeh/ipp/types/expr2block/VoidCompatibleInExpr_after.java @@ -0,0 +1,9 @@ +import java.util.List; + +class X { + void foo(List list){ + Runnable c = () -> { + list.add(""); + }; + } +} \ No newline at end of file diff --git a/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/types/ExpandOneLineLambda2CodeBlockIntentionTest.java b/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/types/ExpandOneLineLambda2CodeBlockIntentionTest.java index 55be4fdd0fd9..b0f2cfea97e4 100644 --- a/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/types/ExpandOneLineLambda2CodeBlockIntentionTest.java +++ b/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/types/ExpandOneLineLambda2CodeBlockIntentionTest.java @@ -22,6 +22,11 @@ public class ExpandOneLineLambda2CodeBlockIntentionTest extends IPPTestCase { public void testSimple() { doTest(); } + + public void testVoidCompatibleInExpr() { + doTest(); + } + @Override protected String getIntentionName() { return "Expand lambda expression body to {...}";