aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core_util.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2009-04-07 14:11:32 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2009-04-07 14:11:32 -0400
commitfd1a963a81327f7b6a20a0f2ac131d2525649400 (patch)
tree053aee5bbd985b79f0d1901bc4fb72a44d48c4aa /src/core_util.sml
parente52d6c0bc6e2e911515d21c6acc1e311a8e30db9 (diff)
Track uniqueness sets in table types
Diffstat (limited to 'src/core_util.sml')
-rw-r--r--src/core_util.sml19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/core_util.sml b/src/core_util.sml
index b342f2f7..df8bb271 100644
--- a/src/core_util.sml
+++ b/src/core_util.sml
@@ -933,12 +933,14 @@ fun mapfoldB {kind = fk, con = fc, exp = fe, decl = fd, bind} =
(DValRec vis', loc))
end
| DExport _ => S.return2 dAll
- | DTable (x, n, c, s, e) =>
+ | DTable (x, n, c, s, e, cc) =>
S.bind2 (mfc ctx c,
fn c' =>
- S.map2 (mfe ctx e,
+ S.bind2 (mfe ctx e,
fn e' =>
- (DTable (x, n, c', s, e'), loc)))
+ S.map2 (mfc ctx cc,
+ fn cc' =>
+ (DTable (x, n, c', s, e', cc'), loc))))
| DSequence _ => S.return2 dAll
| DDatabase _ => S.return2 dAll
| DCookie (x, n, c, s) =>
@@ -1060,11 +1062,14 @@ fun mapfoldB (all as {bind, ...}) =
foldl (fn ((x, n, t, e, s), ctx) => bind (ctx, NamedE (x, n, t, NONE, s)))
ctx vis
| DExport _ => ctx
- | DTable (x, n, c, s, _) =>
+ | DTable (x, n, c, s, _, cc) =>
let
- val t = (CApp ((CFfi ("Basis", "sql_table"), #2 d'), c), #2 d')
+ val loc = #2 d'
+ val ct = (CFfi ("Basis", "sql_table"), loc)
+ val ct = (CApp (ct, c), loc)
+ val ct = (CApp (ct, cc), loc)
in
- bind (ctx, NamedE (x, n, t, NONE, s))
+ bind (ctx, NamedE (x, n, ct, NONE, s))
end
| DSequence (x, n, s) =>
let
@@ -1136,7 +1141,7 @@ val maxName = foldl (fn ((d, _) : decl, count) =>
| DVal (_, n, _, _, _) => Int.max (n, count)
| DValRec vis => foldl (fn ((_, n, _, _, _), count) => Int.max (n, count)) count vis
| DExport _ => count
- | DTable (_, n, _, _, _) => Int.max (n, count)
+ | DTable (_, n, _, _, _, _) => Int.max (n, count)
| DSequence (_, n, _) => Int.max (n, count)
| DDatabase _ => count
| DCookie (_, n, _, _) => Int.max (n, count)) 0