Implement Eq TyCon directly
authorBartosz Nitka <niteria@gmail.com>
Thu, 9 Jun 2016 10:49:00 +0000 (03:49 -0700)
committerBartosz Nitka <niteria@gmail.com>
Thu, 9 Jun 2016 10:51:06 +0000 (03:51 -0700)
Eq TyCon is defined in terms of Ord TyCon, but we want to
remove Ord TyCon, because it's implemented in terms of unique
comparison, which is nondeterministic.

GHC Trac: #4012

compiler/types/TyCon.hs

index c60e410..bafcb2c 100644 (file)
@@ -2072,8 +2072,8 @@ tyConRuntimeRepInfo _                                         = NoRRI
 -}
 
 instance Eq TyCon where
-    a == b = case (a `compare` b) of { EQ -> True;   _ -> False }
-    a /= b = case (a `compare` b) of { EQ -> False;  _ -> True  }
+    a == b = getUnique a == getUnique b
+    a /= b = getUnique a /= getUnique b
 
 instance Ord TyCon where
     a <= b = case (a `compare` b) of { LT -> True;  EQ -> True;  GT -> False }