__hash__ may now return long int; the final hash
  value is obtained by invoking hash on the long int.
Fixes #1536021.
diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py
index 70480be..26bfe87 100644
--- a/Lib/test/test_builtin.py
+++ b/Lib/test/test_builtin.py
@@ -640,6 +640,15 @@
         def f(): pass
         self.assertRaises(TypeError, hash, [])
         self.assertRaises(TypeError, hash, {})
+        # Bug 1536021: Allow hash to return long objects
+        class X:
+            def __hash__(self):
+                return 2**100
+        self.assertEquals(type(hash(X())), int)
+        class Y(object):
+            def __hash__(self):
+                return 2**100
+        self.assertEquals(type(hash(Y())), int)
 
     def test_hex(self):
         self.assertEqual(hex(16), '0x10')