Skip to content

Commit 164178b

Browse files
author
mgricken
committed
Fixes bugs
2881714: Interactions panel "returns" false for 0.0 == -0.0 2885861: Comparison of NaNs git-svn-id: file:///tmp/test-svn/trunk@5138 fe72c1cf-3628-48e9-8b72-1c46755d3cff
1 parent 50b7383 commit 164178b

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

drjava/lib/dynamicjava-base.jar

-233 Bytes
Binary file not shown.

dynamicjava/src/edu/rice/cs/dynamicjava/interpreter/ExpressionEvaluator.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -686,15 +686,32 @@ else if (left instanceof Long) {
686686
};
687687

688688
public static final Lambda2<Object, Object, Object> PRIMITIVE_EQUAL = new Lambda2<Object, Object, Object>() {
689-
public Object value(Object left, Object right) { return left.equals(right); }
689+
public Object value(Object left, Object right) {
690+
// we have special cases for float and double so
691+
// that 0.0==-0.0 and Double.NaN==Double.NaN get
692+
// treated correctly
693+
if ((left instanceof Float) && (right instanceof Float)) {
694+
float l = ((Float)left).floatValue();
695+
float r = ((Float)right).floatValue();
696+
return l==r;
697+
}
698+
else if ((left instanceof Double) && (right instanceof Double)) {
699+
double l = ((Double)left).doubleValue();
700+
double r = ((Double)right).doubleValue();
701+
return l==r;
702+
}
703+
else return left.equals(right);
704+
}
690705
};
691706

692707
public static final Lambda2<Object, Object, Object> OBJECT_NOT_EQUAL = new Lambda2<Object, Object, Object>() {
693708
public Object value(Object left, Object right) { return left != right; }
694709
};
695710

696711
public static final Lambda2<Object, Object, Object> PRIMITIVE_NOT_EQUAL = new Lambda2<Object, Object, Object>() {
697-
public Object value(Object left, Object right) { return !left.equals(right); }
712+
public Object value(Object left, Object right) {
713+
return !((Boolean)PRIMITIVE_EQUAL.value(left, right));
714+
}
698715
};
699716

700717
public static final Lambda2<Object, Object, Object> CONCATENATE = new Lambda2<Object, Object, Object>() {

0 commit comments

Comments
 (0)