# HG changeset patch # User Adam Chlipala # Date 1217796793 14400 # Node ID 98c29e3986d3bf1b326ab217d7c5f210192e43f6 # Parent c0ea24dcb86fb043f84e0f11f3d9ac836eecad81 Push write inside case diff -r c0ea24dcb86f -r 98c29e3986d3 src/mono_opt.sml --- a/src/mono_opt.sml Sun Aug 03 13:30:27 2008 -0400 +++ b/src/mono_opt.sml Sun Aug 03 16:53:13 2008 -0400 @@ -185,6 +185,13 @@ | EWrite (EFfiApp ("Basis", "urlifyString", [e]), _) => EFfiApp ("Basis", "urlifyString_w", [e]) + + | EWrite (ECase (discE, pes, {disc, ...}), loc) => + optExp (ECase (discE, + map (fn (p, e) => (p, (EWrite e, loc))) pes, + {disc = disc, + result = (TRecord [], loc)}), loc) + | _ => e and optExp e = #1 (U.Exp.map {typ = typ, exp = exp} e) diff -r c0ea24dcb86f -r 98c29e3986d3 src/mono_reduce.sml --- a/src/mono_reduce.sml Sun Aug 03 13:30:27 2008 -0400 +++ b/src/mono_reduce.sml Sun Aug 03 16:53:13 2008 -0400 @@ -123,7 +123,7 @@ | EApp ((EAbs (_, _, _, e1), loc), e2) => #1 (reduceExp env (subExpInExp (0, e2) e1)) - | ECase (disc, pes, t) => + | ECase (disc, pes, _) => (case ListUtil.search (fn (p, body) => case match (env, p, disc) of NONE => NONE