diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/trivialFunctionalExpressionUsage/beforeBlockLambdaWithReturnInside.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/trivialFunctionalExpressionUsage/beforeBlockLambdaWithReturnInside.java index 1d6ff29a7d43..ebe9d727bdc4 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/trivialFunctionalExpressionUsage/beforeBlockLambdaWithReturnInside.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/trivialFunctionalExpressionUsage/beforeBlockLambdaWithReturnInside.java @@ -2,11 +2,10 @@ class Test { void foo() { - Runnable r = () -> { + ((Runnable) () -> { if (true) return; System.out.println(""); - }; - r.run(); + }).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 8ef75b5f3cc2..42b7919d4fe2 100644 --- a/plugins/InspectionGadgets/src/com/intellij/codeInspection/TrivialFunctionalExpressionUsageInspection.java +++ b/plugins/InspectionGadgets/src/com/intellij/codeInspection/TrivialFunctionalExpressionUsageInspection.java @@ -32,7 +32,6 @@ import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; import java.util.Collections; -import java.util.List; public class TrivialFunctionalExpressionUsageInspection extends BaseJavaBatchLocalInspectionTool { @NotNull @@ -62,22 +61,22 @@ public class TrivialFunctionalExpressionUsageInspection extends BaseJavaBatchLoc || statements[0] instanceof PsiReturnStatement && expression.isValueCompatible(); } - final List returnExpressions = LambdaUtil.getReturnExpressions(expression); - if (returnExpressions.size() > 1 || - (returnExpressions.size() == 1 && !(ArrayUtil.getLastElement(statements) instanceof PsiReturnStatement))) { + final PsiReturnStatement[] returnStatements = PsiUtil.findReturnStatements((PsiCodeBlock)body); + if (returnStatements.length > 1) { return false; } - if (!returnExpressions.isEmpty()) { - if (callParent instanceof PsiLocalVariable) { - return true; + if (returnStatements.length == 1) { + if (!(ArrayUtil.getLastElement(statements) instanceof PsiReturnStatement)) { + return false; } - } - 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]; + if (returnStatements[0].getReturnValue() != null) { + if (callParent instanceof PsiLocalVariable) { + return true; + } + } + else { + return true; } }