changeset 1660:b46c93ce7be2

Revert last unification tweak
author Adam Chlipala <adam@chlipala.net>
date Fri, 06 Jan 2012 09:40:20 -0500
parents 8de2ea0a0701
children 28b9b3d9414f
files src/elaborate.sml
diffstat 1 files changed, 4 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/elaborate.sml	Thu Jan 05 19:23:34 2012 -0500
+++ b/src/elaborate.sml	Fri Jan 06 09:40:20 2012 -0500
@@ -865,15 +865,12 @@
 
          val (unifs1, unifs2) = eatMatching (fn ((_, r1), (_, r2)) => r1 = r2) (#unifs s1, #unifs s2)
 
-         fun isMappy (c, _) =
-             case c of
-                 L'.CApp ((L'.CMap _, _), c) => isMappy c
-               | L'.CUnif _ => true
-               | _ => false
+         val hasUnifs = U.Con.exists {kind = fn _ => false,
+                                      con = fn L'.CUnif _ => true
+                                             | _ => false}
 
          val (others1, others2) = eatMatching (fn (c1, c2) =>
-                                                  not (isMappy c1 andalso isMappy c2)
-                                                  (* I guess this is a pretty bad hack, based on one pattern of bad unification I've seen! *)
+                                                  not (hasUnifs c1 andalso hasUnifs c2)
                                                   andalso consEq env loc (c1, c2)) (#others s1, #others s2)
          (*val () = eprefaces "Summaries3" [("#1", p_summary env {fields = fs1, unifs = unifs1, others = others1}),
                                           ("#2", p_summary env {fields = fs2, unifs = unifs2, others = others2})]*)