--- old/src/share/classes/com/sun/tools/javac/code/Types.java 2013-06-01 08:16:46.084672556 -0400 +++ new/src/share/classes/com/sun/tools/javac/code/Types.java 2013-06-01 08:16:45.752669353 -0400 @@ -1317,6 +1317,25 @@ } // + /** + * Can t and s be compared for equality? + * + */ + public boolean isEqualityComparable(Type s, Type t, Warner warn) { + boolean tPrimitive = t.isPrimitive(); + boolean sPrimitive = s.isPrimitive(); + if (tPrimitive && sPrimitive) { + if (allowBoxing) { + s = unboxedTypeOrType(s); + t = unboxedTypeOrType(t); + } + return isSubtype(s, t) || isSubtype(t, s); + } else if (!tPrimitive && !sPrimitive) { + return isCastable(s, t, warn) || isCastable(t, s, warn); + } else + return false; + } + // public boolean isCastable(Type t, Type s) { return isCastable(t, s, noWarnings);