src/share/classes/com/sun/tools/javac/code/Types.java
Print this page
@@ -1296,10 +1296,31 @@
}
return ts.isEmpty() && ss.isEmpty();
}
// </editor-fold>
+ /**
+ * Can t and s be compared for equality?
+ *
+ */
+ public boolean isEqualityComparable(Type t, Type s, Warner warn) {
+ if (t.tag == ERROR)
+ return true;
+ boolean tPrimitive = t.isPrimitive();
+ boolean sPrimitive = s.isPrimitive();
+ if (tPrimitive && sPrimitive) {
+ return isSubtypeUnchecked(t, s, warn);
+ } else if (!tPrimitive && !sPrimitive)
+ return isCastable(t, s, warn);
+ else if (allowBoxing) {
+ return tPrimitive
+ ? isSubtype(unboxedType(s), t)
+ : isSubtype(unboxedType(t), s);
+ } else
+ return false;
+ }
+
// <editor-fold defaultstate="collapsed" desc="isCastable">
public boolean isCastable(Type t, Type s) {
return isCastable(t, s, noWarnings);
}