Improve Long.hashCode to follow correct semantics.

PiperOrigin-RevId: 318960075
Change-Id: I11b65f96a10b1ddb6617d9b2ff3b1ed5bed506cc
diff --git a/user/super/com/google/gwt/emul/java/lang/Long.java b/user/super/com/google/gwt/emul/java/lang/Long.java
index 0654fa4..b4e8c9b 100644
--- a/user/super/com/google/gwt/emul/java/lang/Long.java
+++ b/user/super/com/google/gwt/emul/java/lang/Long.java
@@ -15,14 +15,10 @@
  */
 package java.lang;
 
-/**
- * Wraps a primitive <code>long</code> as an object.
- */
+/** Wraps a primitive <code>long</code> as an object. */
 public final class Long extends Number implements Comparable<Long> {
 
-  /**
-   * Use nested class to avoid clinit on outer.
-   */
+  /** Use nested class to avoid clinit on outer. */
   static class BoxedValues {
     // Box values according to JLS - between -128 and 127
     static Long[] boxedValues = new Long[256];
@@ -56,7 +52,9 @@
   }
 
   public static int hashCode(long l) {
-    return (int) l;
+    int high = (int) (l >>> 32);
+    int low = (int) l;
+    return high ^ low;
   }
 
   public static long highestOneBit(long i) {
@@ -109,15 +107,13 @@
   public static long reverse(long i) {
     int high = (int) (i >>> 32);
     int low = (int) i;
-    return ((long) Integer.reverse(low) << 32)
-        | (Integer.reverse(high) & 0xffffffffL);
+    return ((long) Integer.reverse(low) << 32) | (Integer.reverse(high) & 0xffffffffL);
   }
 
   public static long reverseBytes(long i) {
     int high = (int) (i >>> 32);
     int low = (int) i;
-    return ((long) Integer.reverseBytes(low) << 32)
-        | (Integer.reverseBytes(high) & 0xffffffffL);
+    return ((long) Integer.reverseBytes(low) << 32) | (Integer.reverseBytes(high) & 0xffffffffL);
   }
 
   public static long rotateLeft(long i, int distance) {
diff --git a/user/test/com/google/gwt/emultest/java/sql/SqlDateTest.java b/user/test/com/google/gwt/emultest/java/sql/SqlDateTest.java
index aa1be65..f6a344b 100644
--- a/user/test/com/google/gwt/emultest/java/sql/SqlDateTest.java
+++ b/user/test/com/google/gwt/emultest/java/sql/SqlDateTest.java
@@ -16,15 +16,13 @@
 package com.google.gwt.emultest.java.sql;
 
 import com.google.gwt.junit.client.GWTTestCase;
-
 import java.sql.Date;
 
 /**
- * Tests {@link java.sql.Date}. We assume that the underlying
- * {@link java.util.Date} implementation is correct and concentrate only on the
- * differences between the two.
+ * Tests {@link java.sql.Date}. We assume that the underlying {@link java.util.Date} implementation
+ * is correct and concentrate only on the differences between the two.
  */
-@SuppressWarnings("deprecation")
+@SuppressWarnings({"deprecation", "DoNotCall"})
 public class SqlDateTest extends GWTTestCase {
 
   /**