Skip to content

Commit 830d17c

Browse files
DidierBessetbenzonico
authored andcommitted
SONARJAVA-1488 Fix bugs and simplify tests
1 parent 07eb081 commit 830d17c

6 files changed

Lines changed: 347 additions & 408 deletions

File tree

java-squid/src/main/java/org/sonar/java/se/symbolicvalues/BinaryRelation.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
*/
2020
package org.sonar.java.se.symbolicvalues;
2121

22+
import com.google.common.annotations.VisibleForTesting;
2223
import com.google.common.base.Preconditions;
2324
import org.sonar.java.se.symbolicvalues.RelationalSymbolicValue.Kind;
2425

@@ -73,10 +74,6 @@ private boolean equalsRelation(BinaryRelation rel) {
7374
return false;
7475
}
7576

76-
public boolean isKind(Kind kind) {
77-
return this.kind.equals(kind);
78-
}
79-
8077
@Override
8178
public String toString() {
8279
StringBuilder buffer = new StringBuilder();
@@ -158,8 +155,9 @@ private Collection<BinaryRelation> combinedRelations(Collection<BinaryRelation>
158155
* @param relation another SymbolicValueRelation
159156
* @return a SymbolicValueRelation or null if the receiver and the supplied relation cannot be combined
160157
*/
158+
@VisibleForTesting
161159
@CheckForNull
162-
private BinaryRelation combineUnordered(BinaryRelation relation) {
160+
BinaryRelation combineUnordered(BinaryRelation relation) {
163161
BinaryRelation combined = null;
164162
if (rightOp.equals(relation.leftOp)) {
165163
combined = relation.combineOrdered(this);

java-squid/src/main/java/org/sonar/java/se/symbolicvalues/GreaterThanOrEqualRelation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ protected BinaryRelation combinedWithNotEqual(NotEqualRelation relation) {
103103
@Override
104104
@CheckForNull
105105
protected BinaryRelation combinedWithMethodEquals(MethodEqualsRelation relation) {
106-
return null;
106+
return new GreaterThanOrEqualRelation(leftOp, relation.rightOp);
107107
}
108108

109109
@Override

java-squid/src/main/java/org/sonar/java/se/symbolicvalues/GreaterThanRelation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ protected BinaryRelation combinedWithNotEqual(NotEqualRelation relation) {
101101
@Override
102102
@CheckForNull
103103
protected BinaryRelation combinedWithMethodEquals(MethodEqualsRelation relation) {
104-
return null;
104+
return new GreaterThanRelation(leftOp, relation.rightOp);
105105
}
106106

107107
@Override

java-squid/src/main/java/org/sonar/java/se/symbolicvalues/MethodEqualsRelation.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ protected BinaryRelation combinedWithGreaterThan(GreaterThanRelation relation) {
128128
@Override
129129
@CheckForNull
130130
protected BinaryRelation combinedWithGreaterThanOrEqual(GreaterThanOrEqualRelation relation) {
131-
return null;
131+
return new GreaterThanOrEqualRelation(leftOp, relation.rightOp);
132132
}
133133

134134
@Override
@@ -140,6 +140,6 @@ protected BinaryRelation combinedWithLessThan(LessThanRelation relation) {
140140
@Override
141141
@CheckForNull
142142
protected BinaryRelation combinedWithLessThanOrEqual(LessThanOrEqualRelation relation) {
143-
return null;
143+
return new LessThanOrEqualRelation(leftOp, relation.rightOp);
144144
}
145145
}

java-squid/src/main/java/org/sonar/java/se/symbolicvalues/RelationalSymbolicValue.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,15 @@
3131
public class RelationalSymbolicValue extends BinarySymbolicValue {
3232

3333
public enum Kind {
34-
EQUAL("=="), NOT_EQUAL("!="), GREATER_THAN(">="), GREATER_THAN_OR_EQUAL(">="), LESS_THAN("<"), LESS_THAN_OR_EQUAL("<="), METHOD_EQUALS(".EQ."), NOT_METHOD_EQUALS(".NE.");
34+
EQUAL("=="),
35+
NOT_EQUAL("!="),
36+
GREATER_THAN(">="),
37+
GREATER_THAN_OR_EQUAL(">="),
38+
LESS_THAN("<"),
39+
LESS_THAN_OR_EQUAL("<="),
40+
METHOD_EQUALS(".EQ."),
41+
NOT_METHOD_EQUALS(".NE.");
42+
3543
final String operand;
3644

3745
Kind(String operand) {

0 commit comments

Comments
 (0)