diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/controlflow/IfMayBeConditionalInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/controlflow/IfMayBeConditionalInspection.java
index d6cbe937e438..003d693e51dd 100644
--- a/plugins/InspectionGadgets/src/com/siyeh/ig/controlflow/IfMayBeConditionalInspection.java
+++ b/plugins/InspectionGadgets/src/com/siyeh/ig/controlflow/IfMayBeConditionalInspection.java
@@ -196,6 +196,16 @@ public class IfMayBeConditionalInspection extends BaseInspection {
if (!(elseStatement instanceof PsiReturnStatement)) {
return;
}
+ final PsiReturnStatement thenReturnStatement = (PsiReturnStatement)thenStatement;
+ final PsiExpression thenReturnValue = ParenthesesUtils.stripParentheses(thenReturnStatement.getReturnValue());
+ if (thenReturnValue instanceof PsiConditionalExpression) {
+ return;
+ }
+ final PsiReturnStatement elseReturnStatement = (PsiReturnStatement)elseStatement;
+ final PsiExpression elseReturnValue = ParenthesesUtils.stripParentheses(elseReturnStatement.getReturnValue());
+ if (elseReturnValue instanceof PsiConditionalExpression) {
+ return;
+ }
registerStatementError(statement);
}
else if (thenStatement instanceof PsiExpressionStatement) {
@@ -220,6 +230,14 @@ public class IfMayBeConditionalInspection extends BaseInspection {
if (!EquivalenceChecker.expressionsAreEquivalent(thenLhs, elseLhs)) {
return;
}
+ final PsiExpression thenRhs = ParenthesesUtils.stripParentheses(thenAssignmentExpression.getRExpression());
+ if (thenRhs instanceof PsiConditionalExpression) {
+ return;
+ }
+ final PsiExpression elseRhs = ParenthesesUtils.stripParentheses(elseAssignmentExpression.getRExpression());
+ if (elseRhs instanceof PsiConditionalExpression) {
+ return;
+ }
registerStatementError(statement);
}
else if (reportMethodCalls && thenExpression instanceof PsiMethodCallExpression) {
diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/if_may_be_conditional/IfMayBeConditional.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/if_may_be_conditional/IfMayBeConditional.java
index 7eaad4416b06..1109243d24a2 100644
--- a/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/if_may_be_conditional/IfMayBeConditional.java
+++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/if_may_be_conditional/IfMayBeConditional.java
@@ -20,4 +20,26 @@ public class IfMayBeConditional {
sb.append("DescriptorUtils.getFQName(cd)",0, 1);
}
}
+
+ int foo4(int a, int b) {
+ if (a < b) return a;
+ else return b;
+ }
+
+ int foo5(int a, int b, int c) {
+ if (a < b) {
+ return a;
+ } else {
+ return b < c ? b : c;
+ }
+ }
+
+ void foo6(int a, int b, int c) {
+ int i;
+ if (a < b) {
+ i = a;
+ } else {
+ i = b < c ? b : c;
+ }
+ }
}
diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/if_may_be_conditional/expected.xml b/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/if_may_be_conditional/expected.xml
index 6d0c371f2349..3ecb05a6e414 100644
--- a/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/if_may_be_conditional/expected.xml
+++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/if_may_be_conditional/expected.xml
@@ -14,4 +14,11 @@
'if' statement could be replaced with simple conditional expression
<code>if</code> could be replaced with simple conditional expression #loc
+
+
+ IfMayBeConditional.java
+ 25
+ 'if' statement could be replaced with conditional expression
+ <code>if</code> could be replaced with conditional expression #loc
+
\ No newline at end of file