diff options
author | Adam Chlipala <adamc@hcoop.net> | 2009-05-05 10:23:16 -0400 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2009-05-05 10:23:16 -0400 |
commit | 5aff88e5b1dba05e222c601ed628b325ad6fd7f8 (patch) | |
tree | bede52199ad6681e3598dd198333b0c9dfef60ff /src | |
parent | c53eeb25b20757091dfb8f9a085207e867c31baf (diff) |
Make Effectize more precise
Diffstat (limited to 'src')
-rw-r--r-- | src/effectize.sml | 15 |
1 files changed, 14 insertions, 1 deletions
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} |