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);
     }