diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties
index f765cb5ed21b..2fabb110a705 100644
--- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties
+++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/InspectionGadgetsBundle.properties
@@ -877,7 +877,8 @@ fallthru.in.switch.statement.problem.descriptor=#ref fall-through i
switch.statements.without.default.problem.descriptor=#ref statement without 'default' branch #loc
default.not.last.case.in.switch.problem.descriptor=#ref branch not last case in 'switch' statement #loc
loop.statements.that.dont.loop.problem.descriptor=#ref statement does not loop #loc
-conditional.expression.with.identical.branches.problem.descriptor=Conditional expression #ref with identical or similar branches #loc
+conditional.expression.with.identical.branches.problem.descriptor=Conditional expression #ref with identical branches #loc
+conditional.expression.with.similar.branches.problem.descriptor=Conditional expression #ref with similar branches #loc
if.statement.with.identical.branches.problem.descriptor=#ref statement with identical branches #loc
duplicate.condition.problem.descriptor=Duplicate condition #ref #loc
duplicate.condition.ignore.method.calls.option=Ignore method calls in condition
@@ -1148,6 +1149,7 @@ standard.variable.names.ignore.override.option=Ignore for parameter names identi
static.variable.naming.convention.mutable.option=Check 'static final' fields with a mutable type
boolean.method.name.must.start.with.question.table.column.name=Boolean method name prefix
conditional.expression.with.identical.branches.collapse.quickfix=Collapse conditional expression
+conditional.expression.with.identical.branches.push.inside.quickfix=Push conditional inside expression
conditional.expression.with.identical.branches.collapse.quickfix.family=Conditional expression can be simplified
confusing.else.unwrap.quickfix=Remove redundant 'else'
constant.conditional.expression.problem.descriptor=#ref can be simplified to ''{0}'' #loc
diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/ConditionalExpressionWithIdenticalBranchesInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/ConditionalExpressionWithIdenticalBranchesInspection.java
index 4de300fd65d3..68a7151ce76a 100644
--- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/ConditionalExpressionWithIdenticalBranchesInspection.java
+++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/controlflow/ConditionalExpressionWithIdenticalBranchesInspection.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2003-2015 Dave Griffith, Bas Leijdekkers
+ * Copyright 2003-2016 Dave Griffith, Bas Leijdekkers
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -50,7 +50,10 @@ public class ConditionalExpressionWithIdenticalBranchesInspection extends BaseIn
@Override
@NotNull
protected String buildErrorString(Object... infos) {
- return InspectionGadgetsBundle.message("conditional.expression.with.identical.branches.problem.descriptor");
+ final EquivalenceChecker.Decision decision = (EquivalenceChecker.Decision)infos[1];
+ return InspectionGadgetsBundle.message(decision.isExact()
+ ? "conditional.expression.with.identical.branches.problem.descriptor"
+ : "conditional.expression.with.similar.branches.problem.descriptor");
}
@Override
@@ -68,9 +71,9 @@ public class ConditionalExpressionWithIdenticalBranchesInspection extends BaseIn
@Override
@NotNull
public String getName() {
- return InspectionGadgetsBundle.message(getEquivalenceDecision().getExactlyMatches() ?
- "conditional.expression.with.identical.branches.collapse.quickfix" :
- "conditional.expression.with.identical.branches.collapse.quickfix.family") ;
+ return InspectionGadgetsBundle.message(getEquivalenceDecision().getExactlyMatches()
+ ? "conditional.expression.with.identical.branches.collapse.quickfix"
+ : "conditional.expression.with.identical.branches.push.inside.quickfix");
}
@Override
@@ -126,7 +129,7 @@ public class ConditionalExpressionWithIdenticalBranchesInspection extends BaseIn
final PsiExpression elseExpression = expression.getElseExpression();
final EquivalenceChecker.Decision decision = EquivalenceChecker.expressionsAreEquivalentDecision(thenExpression, elseExpression);
if (thenExpression != null && (myReportOnlyExactlyIdentical ? decision.getExactlyMatches() : !decision.isExactUnMatches())) {
- registerError(expression, expression);
+ registerError(expression, expression, decision);
}
}
}
diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/conditional_expression_with_identical_branches/ConditionalExpressionWithIdenticalBranches.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/conditional_expression_with_identical_branches/ConditionalExpressionWithIdenticalBranches.java
index 2b13f8d5ca13..ae47557b2100 100644
--- a/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/conditional_expression_with_identical_branches/ConditionalExpressionWithIdenticalBranches.java
+++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/conditional_expression_with_identical_branches/ConditionalExpressionWithIdenticalBranches.java
@@ -5,7 +5,7 @@ import java.util.Random;
class ConditionalExpressionWithIdenticalBranches {
int one(boolean b) {
- return b ? 1 + 2 + 3 : 1 + 2 + 3;
+ return b ? 1 + 2 + 3 : 1 + 2 + 3;
}
int two(boolean b) {
@@ -13,7 +13,7 @@ class ConditionalExpressionWithIdenticalBranches {
}
Class three(boolean b) {
- return b ? java.lang.String.class : String.class;
+ return b ? java.lang.String.class : String.class;
}
int incomplete(boolean b) {
@@ -21,27 +21,27 @@ class ConditionalExpressionWithIdenticalBranches {
}
void fuzzy() {
- String someString = new Random().nextBoolean() ? "2" + "q" + "1" : "2" + "qwe" + "1";
+ String someString = new Random().nextBoolean() ? "2" + "q" + "1" : "2" + "qwe" + "1";
}
void fuzzy2() {
- Object someString = new Random().nextBoolean() ? (Object) "1" : (Object) "2";
+ Object someString = new Random().nextBoolean() ? (Object) "1" : (Object) "2";
}
void fuzzy3() {
- Object someString = new Random().nextBoolean() ? "21" + (Object) "1" : "21" + (Object) "2";
+ Object someString = new Random().nextBoolean() ? "21" + (Object) "1" : "21" + (Object) "2";
}
void fuzzy4(int[] ints) {
- int i = new Random().nextBoolean() ? ints[3] : ints[4];
+ int i = new Random().nextBoolean() ? ints[3] : ints[4];
}
void fuzzy5(String[] strings) {
- String s = new Random().nextBoolean()? "asd" + strings[2] : "qwe" + strings[2];
+ String s = new Random().nextBoolean()? "asd" + strings[2] : "qwe" + strings[2];
}
void fuzzy6() {
- int j = new Random().nextBoolean() ? 6 + someMethod("123", "") : 6 + someMethod("321", "");
+ int j = new Random().nextBoolean() ? 6 + someMethod("123", "") : 6 + someMethod("321", "");
}
int someMethod(String s, String s2) {
@@ -59,7 +59,7 @@ class ConditionalExpressionWithIdenticalBranches {
int i = 1;
Item item = (i == 1 ? new Item("1") : new Item(i)); // warning here
- Item item1 = (i == 1 ? new Item("1") : new Item("2")); // warning here
+ Item item1 = (i == 1 ? new Item("1") : new Item("2")); // warning here
}
}