diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/BoolUtils.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/BoolUtils.java index f3a04a43b8a9..da66f34fb6fd 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/BoolUtils.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/BoolUtils.java @@ -72,9 +72,10 @@ public class BoolUtils { } if (expression instanceof PsiConditionalExpression) { final PsiConditionalExpression conditionalExpression = (PsiConditionalExpression)expression; - return conditionalExpression.getCondition().getText() + - '?' + getNegatedExpressionText(conditionalExpression.getThenExpression()) + - ':' + getNegatedExpressionText(conditionalExpression.getElseExpression()); + final boolean needParenthesis = ParenthesesUtils.getPrecedence(conditionalExpression) >= precedence; + final String text = conditionalExpression.getCondition().getText() + '?' + getNegatedExpressionText(conditionalExpression.getThenExpression()) + + ':' + getNegatedExpressionText(conditionalExpression.getElseExpression()); + return needParenthesis ? "(" + text + ")" : text; } else if (isNegation(expression)) { final PsiExpression negated = getNegated(expression); diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/j2me/simplifiable_if_statement/ParenthesesForConditional.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/j2me/simplifiable_if_statement/ParenthesesForConditional.after.java new file mode 100644 index 000000000000..eb2b28a21419 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/j2me/simplifiable_if_statement/ParenthesesForConditional.after.java @@ -0,0 +1,7 @@ +class IssueDemo { + private String str1; + private String str2; + public boolean foo(IssueDemo c) { + return (str2 != null ? str2.equals(c.str2) : c.str2 == null) && (str1 != null ? str1.equals(c.str1) : c.str1 == null); + } +} diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/j2me/simplifiable_if_statement/ParenthesesForConditional.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/j2me/simplifiable_if_statement/ParenthesesForConditional.java new file mode 100644 index 000000000000..726ff18bbb45 --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/j2me/simplifiable_if_statement/ParenthesesForConditional.java @@ -0,0 +1,8 @@ +class IssueDemo { + private String str1; + private String str2; + public boolean foo(IssueDemo c) { + if (str2 != null ? !str2.equals(c.str2) : c.str2 != null) return false; + return str1 != null ? str1.equals(c.str1) : c.str1 == null; + } +} diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/j2me/SimplifiableIfStatementFixTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/j2me/SimplifiableIfStatementFixTest.java index 517f12a338f8..9842821eea16 100644 --- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/j2me/SimplifiableIfStatementFixTest.java +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/j2me/SimplifiableIfStatementFixTest.java @@ -27,6 +27,7 @@ public class SimplifiableIfStatementFixTest extends IGQuickFixesTestCase { public void testComments() { doTest(); } public void testParentheses() { doTest(); } public void testMoreParentheses() { doTest(); } + public void testParenthesesForConditional() { doTest(); } public void testPrecedence() { doTest(); } @Override