--- old/src/share/classes/com/sun/tools/javac/code/Types.java 2013-05-29 15:45:31.364245100 -0400 +++ new/src/share/classes/com/sun/tools/javac/code/Types.java 2013-05-29 15:45:31.235244026 -0400 @@ -1317,6 +1317,36 @@ } // + + private boolean checkUnbox(Type t, Type s) { + if (t == syms.numberType) + return s.isNumeric(); + else + return isSubtype(unboxedType(t), s); + } + /** + * 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) { + if (tPrimitive) { + return checkUnbox(s, t); + } else { + return checkUnbox(t, s); + } + } else + return false; + } + // public boolean isCastable(Type t, Type s) { return isCastable(t, s, noWarnings);