diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/trivialFunctionalExpressionUsage/beforeBlockLambdaWithReturnInside.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/trivialFunctionalExpressionUsage/beforeBlockLambdaWithReturnInside.java new file mode 100644 index 000000000000..1d6ff29a7d43 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/trivialFunctionalExpressionUsage/beforeBlockLambdaWithReturnInside.java @@ -0,0 +1,12 @@ +// "Replace method call on lambda with lambda body" "false" + +class Test { + void foo() { + Runnable r = () -> { + if (true) return; + System.out.println(""); + }; + r.run(); + System.out.println(""); + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/src/com/intellij/codeInspection/TrivialFunctionalExpressionUsageInspection.java b/plugins/InspectionGadgets/src/com/intellij/codeInspection/TrivialFunctionalExpressionUsageInspection.java index e1242e4c3f67..8ef75b5f3cc2 100644 --- a/plugins/InspectionGadgets/src/com/intellij/codeInspection/TrivialFunctionalExpressionUsageInspection.java +++ b/plugins/InspectionGadgets/src/com/intellij/codeInspection/TrivialFunctionalExpressionUsageInspection.java @@ -68,8 +68,17 @@ public class TrivialFunctionalExpressionUsageInspection extends BaseJavaBatchLoc return false; } - if (!returnExpressions.isEmpty() && callParent instanceof PsiLocalVariable) { - return true; + if (!returnExpressions.isEmpty()) { + if (callParent instanceof PsiLocalVariable) { + return true; + } + } + else { + PsiReturnStatement[] returnStatements = PsiUtil.findReturnStatements((PsiCodeBlock)body); + if (returnStatements.length > 0) { + //accept redundant return which would be deleted + return returnStatements.length == 1 && returnStatements[0] == statements[statements.length - 1]; + } } return (callParent instanceof PsiStatement && !(callParent instanceof PsiLoopStatement)) ||