Mercurial > urweb
comparison src/effectize.sml @ 765:a28982de5645
Successfully influenced effectful-ness status of FFI func
author | Adam Chlipala <adamc@hcoop.net> |
---|---|
date | Sat, 02 May 2009 11:27:26 -0400 |
parents | 5ccb67665d05 |
children | a44daa674810 |
comparison
equal
deleted
inserted
replaced
764:7f653298dd66 | 765:a28982de5645 |
---|---|
35 structure SS = BinarySetFn(struct | 35 structure SS = BinarySetFn(struct |
36 type ord_key = string | 36 type ord_key = string |
37 val compare = String.compare | 37 val compare = String.compare |
38 end) | 38 end) |
39 | 39 |
40 val effectful = ["dml", "nextval", "send", "setCookie"] | 40 fun effectful x = Settings.isEffectful x andalso not (Settings.isClientOnly x) |
41 val effectful = SS.addList (SS.empty, effectful) | |
42 | 41 |
43 fun effectize file = | 42 fun effectize file = |
44 let | 43 let |
45 fun exp evs e = | 44 fun exp evs e = |
46 case e of | 45 case e of |
47 EFfi ("Basis", s) => SS.member (effectful, s) | 46 EFfi f => effectful f |
48 | EFfiApp ("Basis", s, _) => SS.member (effectful, s) | 47 | EFfiApp (m, x, _) => effectful (m, x) |
49 | ENamed n => IM.inDomain (evs, n) | 48 | ENamed n => IM.inDomain (evs, n) |
50 | EServerCall (n, _, _, _) => IM.inDomain (evs, n) | 49 | EServerCall (n, _, _, _) => IM.inDomain (evs, n) |
51 | _ => false | 50 | _ => false |
52 | 51 |
53 fun couldWrite evs = U.Exp.exists {kind = fn _ => false, | 52 fun couldWrite evs = U.Exp.exists {kind = fn _ => false, |