# HG changeset patch # User Adam Chlipala # Date 1284050545 14400 # Node ID e665527fce1ccea5c00b12107aae1df84e20ac31 # Parent 41484478a32d8af44fd5741c7883b5857fd0e0d3 Support empty datatypes, which can now be generated via 'variant []' diff -r 41484478a32d -r e665527fce1c src/cjr_print.sml --- a/src/cjr_print.sml Tue Sep 07 09:47:06 2010 -0400 +++ b/src/cjr_print.sml Thu Sep 09 12:42:25 2010 -0400 @@ -2011,8 +2011,11 @@ space, string "{", space, - p_list_sep (box [string ",", space]) (fn (x, n, _) => - string ("__uwc_" ^ ident x ^ "_" ^ Int.toString n)) xncs, + case xncs of + [] => string ("__uwec_" ^ ident x ^ "_" ^ Int.toString n) + | _ => + p_list_sep (box [string ",", space]) (fn (x, n, _) => + string ("__uwc_" ^ ident x ^ "_" ^ Int.toString n)) xncs, space, string "};"] | p_one (Option, _, _, _) = box [] diff -r 41484478a32d -r e665527fce1c src/mono_reduce.sml --- a/src/mono_reduce.sml Tue Sep 07 09:47:06 2010 -0400 +++ b/src/mono_reduce.sml Thu Sep 09 12:42:25 2010 -0400 @@ -436,7 +436,7 @@ val lss = map (fn (p, e) => summarize (d + patBinds p) e) pes in case lss of - [] => raise Fail "Empty pattern match" + [] => summarize d e | ls :: lss => summarize d e @ (if List.all (fn ls' => ls' = ls) lss then