summaryrefslogtreecommitdiff
path: root/src/monoize.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adam@chlipala.net>2010-09-05 14:00:57 -0400
committerGravatar Adam Chlipala <adam@chlipala.net>2010-09-05 14:00:57 -0400
commit9b122d78f58a8c22d0f4c4bde2d935c4508e00b8 (patch)
treeb1f65d2c756f6867bc59eb1a0bb424deefacfabe /src/monoize.sml
parentce596432147d4d538c545fc75d0770db2f707a3d (diff)
tryDml
Diffstat (limited to 'src/monoize.sml')
-rw-r--r--src/monoize.sml48
1 files changed, 28 insertions, 20 deletions
diff --git a/src/monoize.sml b/src/monoize.sml
index cde1af70..07e69834 100644
--- a/src/monoize.sml
+++ b/src/monoize.sml
@@ -1748,7 +1748,15 @@ fun monoExp (env, st, fm) (all as (e, loc)) =
let
val (e, fm) = monoExp (env, st, fm) e
in
- ((L'.EDml e, loc),
+ ((L'.EDml (e, L'.Error), loc),
+ fm)
+ end
+
+ | L.EFfiApp ("Basis", "tryDml", [e]) =>
+ let
+ val (e, fm) = monoExp (env, st, fm) e
+ in
+ ((L'.EDml (e, L'.None), loc),
fm)
end
@@ -4014,13 +4022,13 @@ fun monoize env file =
val e =
foldl (fn ((x, v), e) =>
(L'.ESeq (
- (L'.EDml (L'.EStrcat (
- (L'.EPrim (Prim.String ("UPDATE uw_"
- ^ tab
- ^ " SET uw_"
- ^ x
- ^ " = NULL WHERE ")), loc),
- cond (x, v)), loc), loc),
+ (L'.EDml ((L'.EStrcat (
+ (L'.EPrim (Prim.String ("UPDATE uw_"
+ ^ tab
+ ^ " SET uw_"
+ ^ x
+ ^ " = NULL WHERE ")), loc),
+ cond (x, v)), loc), L'.Error), loc),
e), loc))
e nullable
@@ -4039,7 +4047,7 @@ fun monoize env file =
^ tab
^ " WHERE ")), loc),
cond eb), loc)
- ebs), loc),
+ ebs, L'.Error), loc),
e), loc)
in
e
@@ -4067,15 +4075,15 @@ fun monoize env file =
[] => e
| (x, _) :: ebs =>
(L'.ESeq (
- (L'.EDml (L'.EPrim (Prim.String
- (foldl (fn ((x, _), s) =>
- s ^ ", uw_" ^ x ^ " = NULL")
- ("UPDATE uw_"
- ^ tab
- ^ " SET uw_"
- ^ x
- ^ " = NULL")
- ebs)), loc), loc),
+ (L'.EDml ((L'.EPrim (Prim.String
+ (foldl (fn ((x, _), s) =>
+ s ^ ", uw_" ^ x ^ " = NULL")
+ ("UPDATE uw_"
+ ^ tab
+ ^ " SET uw_"
+ ^ x
+ ^ " = NULL")
+ ebs)), loc), L'.Error), loc),
e), loc)
val e =
@@ -4083,8 +4091,8 @@ fun monoize env file =
[] => e
| eb :: ebs =>
(L'.ESeq (
- (L'.EDml (L'.EPrim (Prim.String ("DELETE FROM uw_"
- ^ tab)), loc), loc),
+ (L'.EDml ((L'.EPrim (Prim.String ("DELETE FROM uw_"
+ ^ tab)), loc), L'.Error), loc),
e), loc)
in
e