diff src/elaborate.sml @ 176:33d4a8eea484

Case through explify
author Adam Chlipala <adamc@hcoop.net>
date Thu, 31 Jul 2008 16:28:55 -0400
parents b2d752455182
children d11754ffe252
line wrap: on
line diff
--- a/src/elaborate.sml	Thu Jul 31 13:08:57 2008 -0400
+++ b/src/elaborate.sml	Thu Jul 31 16:28:55 2008 -0400
@@ -1045,17 +1045,13 @@
 
                 val k = (L'.KType, loc)
                 val c = (L'.CRecord (k, map (fn (x, _, t) => ((L'.CName x, loc), t)) xpts), loc)
-                val (flex, c) =
+                val c =
                     if flex then
-                        let
-                            val flex = cunif (loc, (L'.KRecord k, loc))
-                        in
-                            (SOME flex, (L'.CConcat (c, flex), loc))
-                        end
+                        (L'.CConcat (c, cunif (loc, (L'.KRecord k, loc))), loc)
                     else
-                        (NONE, c)
+                        c
             in
-                (((L'.PRecord (map (fn (x, p', _) => (x, p')) xpts, flex), loc),
+                (((L'.PRecord (map (fn (x, p', _) => (x, p')) xpts), loc),
                   (L'.TRecord c, loc)),
                  (env, bound))
             end
@@ -1089,8 +1085,9 @@
               | L'.PPrim _ => None
               | L'.PCon (pc, NONE) => Datatype (IM.insert (IM.empty, pcCoverage pc, Wild))
               | L'.PCon (pc, SOME p) => Datatype (IM.insert (IM.empty, pcCoverage pc, coverage p))
-              | L'.PRecord (xps, _) => Record [foldl (fn ((x, p), fmap) =>
+              | L'.PRecord xps => Record [foldl (fn ((x, p), fmap) =>
                                                          SM.insert (fmap, x, coverage p)) SM.empty xps]
+
         fun merge (c1, c2) =
             case (c1, c2) of
                 (None, _) => c2