From 414a3e5aabf1f3a104f681596d3c7b9a000896ac Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Tue, 9 Jan 2018 11:13:54 +0700 Subject: [PATCH] BoolUtils: fixed for erroneous but parseable expression !() --- .../src/com/siyeh/ig/psiutils/BoolUtils.java | 8 ++++---- .../conditional/FlipConditionalIntentionTest.java | 13 +++++++++++++ 2 files changed, 17 insertions(+), 4 deletions(-) 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 1521a3b29f2b..d885b1abc5a7 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/BoolUtils.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/BoolUtils.java @@ -58,7 +58,8 @@ public class BoolUtils { return null; } final PsiExpression operand = prefixExpression.getOperand(); - return ParenthesesUtils.stripParentheses(operand); + PsiExpression stripped = ParenthesesUtils.stripParentheses(operand); + return stripped == null ? operand : stripped; } @NotNull @@ -95,10 +96,9 @@ public class BoolUtils { } if (isNegation(expression)) { final PsiExpression negated = getNegated(expression); - if (negated == null) { - return ""; + if (negated != null) { + return ParenthesesUtils.getText(tracker.markUnchanged(negated), precedence); } - return ParenthesesUtils.getText(tracker.markUnchanged(negated), precedence); } if (expression instanceof PsiPolyadicExpression) { final PsiPolyadicExpression polyadicExpression = (PsiPolyadicExpression)expression; diff --git a/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/conditional/FlipConditionalIntentionTest.java b/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/conditional/FlipConditionalIntentionTest.java index ad09e59fcbfd..a389e67f1365 100644 --- a/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/conditional/FlipConditionalIntentionTest.java +++ b/plugins/IntentionPowerPak/testSrc/com/siyeh/ipp/conditional/FlipConditionalIntentionTest.java @@ -15,4 +15,17 @@ public class FlipConditionalIntentionTest extends IPPTestCase { "class X { void test(boolean foo, boolean bar) { boolean c = false; boolean b = !foo ? c || bar : true;//comment at the end\n" + " }}"); } + + public void testIncomplete() { + doTest("class X {\n" + + " void test() {\n" + + " System.out.println(/*_Flip '?:'*/!()?\"foo\":\"bar\");\n" + + " }\n" + + "}", + "class X {\n" + + " void test() {\n" + + " System.out.println(() ? \"bar\" : \"foo\");\n" + + " }\n" + + "}"); + } }