From aa5999ae1e92576a1557e4b9e93c12a2f800379f Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Tue, 5 May 2009 10:23:16 -0400 Subject: Make Effectize more precise --- src/effectize.sml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src/effectize.sml') diff --git a/src/effectize.sml b/src/effectize.sml index e3d62ff8..c07f74bc 100644 --- a/src/effectize.sml +++ b/src/effectize.sml @@ -41,7 +41,7 @@ fun effectful x = Settings.isEffectful x andalso not (Settings.isClientOnly x) fun effectize file = let - fun exp evs e = + fun expOnload evs e = case e of EFfi f => effectful f | EFfiApp (m, x, _) => effectful (m, x) @@ -49,6 +49,19 @@ fun effectize file = | EServerCall (n, _, _, _) => IM.inDomain (evs, n) | _ => false + fun couldWriteOnload evs = U.Exp.exists {kind = fn _ => false, + con = fn _ => false, + exp = expOnload evs} + + fun exp evs e = + case e of + EFfi f => effectful f + | EFfiApp (m, x, _) => effectful (m, x) + | ENamed n => IM.inDomain (evs, n) + | ERecord xets => List.exists (fn ((CName "Onload", _), e, _) => couldWriteOnload evs e + | _ => false) xets + | _ => false + fun couldWrite evs = U.Exp.exists {kind = fn _ => false, con = fn _ => false, exp = exp evs} -- cgit v1.2.3