From 036f556c557e3770de1505c50b86732875b0ac8e Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Fri, 21 Apr 2017 17:36:11 +0700 Subject: [PATCH] ControlFlowUtils#statementBreaksLoop: fix void return case --- .../streamApiMigration/afterFindFirstReturn.java | 10 ++++++++++ .../streamApiMigration/beforeFindFirstReturn.java | 14 ++++++++++++++ .../com/siyeh/ig/psiutils/ControlFlowUtils.java | 5 ++++- 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFindFirstReturn.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeFindFirstReturn.java diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFindFirstReturn.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFindFirstReturn.java new file mode 100644 index 000000000000..5ac836c0a13b --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/afterFindFirstReturn.java @@ -0,0 +1,10 @@ +// "Replace with findFirst()" "true" + +import java.util.Arrays; +import java.util.stream.Stream; + +public class TestFile { + public void test() { + Stream.of("a", "b").filter(s -> !s.isEmpty()).findFirst().ifPresent(System.out::println); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeFindFirstReturn.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeFindFirstReturn.java new file mode 100644 index 000000000000..e6a07635359a --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/streamApiMigration/beforeFindFirstReturn.java @@ -0,0 +1,14 @@ +// "Replace with findFirst()" "true" + +import java.util.Arrays; + +public class TestFile { + public void test() { + for(String s : Arrays.asList("a", "b")) { + if(!s.isEmpty()) { + System.out.println(s); + return; + } + } + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ControlFlowUtils.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ControlFlowUtils.java index 2e21fb5d52a3..7d56593ffc01 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ControlFlowUtils.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ControlFlowUtils.java @@ -605,7 +605,10 @@ public class ControlFlowUtils { return EquivalenceChecker.getCanonicalPsiEquivalence() .expressionsAreEquivalent(returnValue, ((PsiReturnStatement)nextElement).getReturnValue()); } - if(nextElement == null && returnValue == null && cur.getParent() instanceof PsiMethod) { + if(returnValue == null && + cur.getParent() instanceof PsiCodeBlock && + cur.getParent().getParent() instanceof PsiMethod && + nextElement instanceof PsiJavaToken && ((PsiJavaToken)nextElement).getTokenType().equals(JavaTokenType.RBRACE)) { return true; } }