diff options
author | Adam Chlipala <adam@chlipala.net> | 2013-12-11 18:22:10 -0500 |
---|---|---|
committer | Adam Chlipala <adam@chlipala.net> | 2013-12-11 18:22:10 -0500 |
commit | d7c4817af0c7f4ea2ed30b4a34408f2f92e9e979 (patch) | |
tree | 3e8a07b87b557e42d86d6dd5f3052a3fd1dd84ec /src/iflow.sml | |
parent | a8459c0104ca36fd058ea527890116c7a1bca8fd (diff) |
Change handling of returned text blobs, to activate the normal EWrite optimizations
Diffstat (limited to 'src/iflow.sml')
-rw-r--r-- | src/iflow.sml | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/iflow.sml b/src/iflow.sml index 0c94cd47..461dc956 100644 --- a/src/iflow.sml +++ b/src/iflow.sml @@ -1587,7 +1587,8 @@ fun evalExp env (e as (_, loc)) k = evalExp env e2 (fn e2 => k (Func (Other "cat", [e1, e2])))) | EError (e, _) => evalExp env e (fn e => St.send (e, loc)) - | EReturnBlob {blob = b, mimeType = m, ...} => + | EReturnBlob {blob = NONE, ...} => raise Fail "Iflow doesn't support blob optimization" + | EReturnBlob {blob = SOME b, mimeType = m, ...} => evalExp env b (fn b => (St.send (b, loc); evalExp env m @@ -2060,8 +2061,10 @@ fun check (file : file) = end | EStrcat (e1, e2) => (EStrcat (doExp env e1, doExp env e2), loc) | EError (e1, t) => (EError (doExp env e1, t), loc) - | EReturnBlob {blob = b, mimeType = m, t} => - (EReturnBlob {blob = doExp env b, mimeType = doExp env m, t = t}, loc) + | EReturnBlob {blob = NONE, mimeType = m, t} => + (EReturnBlob {blob = NONE, mimeType = doExp env m, t = t}, loc) + | EReturnBlob {blob = SOME b, mimeType = m, t} => + (EReturnBlob {blob = SOME (doExp env b), mimeType = doExp env m, t = t}, loc) | ERedirect (e1, t) => (ERedirect (doExp env e1, t), loc) | EWrite e1 => (EWrite (doExp env e1), loc) | ESeq (e1, e2) => (ESeq (doExp env e1, doExp env e2), loc) |