aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/monoize.sml
diff options
context:
space:
mode:
authorGravatar Ziv Scully <ziv@mit.edu>2014-11-29 03:37:59 -0500
committerGravatar Ziv Scully <ziv@mit.edu>2014-11-29 03:37:59 -0500
commit476f12674420391e24afd1846e176eabe550d36c (patch)
tree005dcd53b84f29711c04508a9202f6c8e03c87c8 /src/monoize.sml
parentb59e6e96601c09bd97a4cce881c9b9f8bf8816a3 (diff)
Basic field-resolution invalidation.
Diffstat (limited to 'src/monoize.sml')
-rw-r--r--src/monoize.sml38
1 files changed, 23 insertions, 15 deletions
diff --git a/src/monoize.sml b/src/monoize.sml
index 2d225813..5c314c54 100644
--- a/src/monoize.sml
+++ b/src/monoize.sml
@@ -681,6 +681,16 @@ fun fooifyExp fk env =
val attrifyExp = fooifyExp Attr
val urlifyExp = fooifyExp Url
+val urlifiedUnit =
+ let
+ val loc = ErrorMsg.dummySpan
+ (* Urlifies [ERel 0] to match the [sqlcacheInfo] field of [EQuery]s. *)
+ val (urlified, _) = urlifyExp CoreEnv.empty (Fm.empty 0)
+ ((L'.ERel 0, loc), (L'.TRecord [], loc))
+ in
+ urlified
+ end
+
datatype 'a failable_search =
Found of 'a
| NotFound
@@ -1957,26 +1967,24 @@ fun monoExp (env, st, fm) (all as (e, loc)) =
(L'.TFun (un, state), loc)),
loc)), loc)
- val body'' = (L'.EApp (
+ val body' = (L'.EApp (
(L'.EApp (
(L'.EApp ((L'.ERel 4, loc),
(L'.ERel 1, loc)), loc),
(L'.ERel 0, loc)), loc),
(L'.ERecord [], loc)), loc)
- val body' = (L'.EQuery {exps = exps,
- tables = tables,
- state = state,
- query = (L'.ERel 3, loc),
- body = body'',
- initial = (L'.ERel 1, loc)},
- loc)
- val (body, fm) = if Settings.getSqlcache () then
- let
- val (urlifiedRel0, fm) = urlifyExp env fm ((L'.ERel 0, loc), state)
- in
- (Sqlcache.instrumentQuery (body', urlifiedRel0), fm)
- end
- else (body', fm)
+ val (urlifiedRel0, fm) = urlifyExp env fm ((L'.ERel 0, loc), state)
+ val body = (L'.EQuery {exps = exps,
+ tables = tables,
+ state = state,
+ query = (L'.ERel 3, loc),
+ body = body',
+ initial = (L'.ERel 1, loc),
+ sqlcacheInfo = urlifiedRel0},
+ loc)
+ val body = if Settings.getSqlcache ()
+ then Sqlcache.instrumentQuery (body, urlifiedRel0)
+ else body
in
((L'.EAbs ("q", s, (L'.TFun (ft, (L'.TFun (state, (L'.TFun (un, state), loc)), loc)), loc),
(L'.EAbs ("f", ft, (L'.TFun (state, (L'.TFun (un, state), loc)), loc),