diff src/mono_reduce.sml @ 1445:6e6f1643c4e9

To generate server-side source JavaScript, try both the old and new strategies; remove an unsound optimization from MonoOpt and make MonoReduce work harder to compensate
author Adam Chlipala <adam@chlipala.net>
date Mon, 28 Mar 2011 10:37:49 -0400
parents bd6c90f5a428
children 4437b008e0ab
line wrap: on
line diff
--- a/src/mono_reduce.sml	Sun Mar 27 15:51:37 2011 -0400
+++ b/src/mono_reduce.sml	Mon Mar 28 10:37:49 2011 -0400
@@ -635,6 +635,7 @@
                                         fun safe (e, _) =
                                             case e of
                                                 EAbs _ => true
+                                              | EError _ => true
                                               | _ => false
                                     in
                                         if List.all (safe o #2) pes then
@@ -642,6 +643,8 @@
                                                   (ECase (liftExpInExp 0 e',
                                                           map (fn (p, (EAbs (_, _, _, e), _)) =>
                                                                   (p, swapExpVarsPat (0, patBinds p) e)
+                                                                | (p, (EError (e, (TFun (_, t), _)), loc)) =>
+                                                                  (p, (EError (e, t), loc))
                                                                 | _ => raise Fail "MonoReduce ECase") pes,
                                                           {disc = disc, result = result}), loc))
                                         else