diff src/cjrize.sml @ 707:d8217b4cb617

PRIMARY KEY
author Adam Chlipala <adamc@hcoop.net>
date Tue, 07 Apr 2009 16:14:31 -0400
parents 70cbdcf5989b
children f152f215a02c
line wrap: on
line diff
--- a/src/cjrize.sml	Tue Apr 07 15:04:07 2009 -0400
+++ b/src/cjrize.sml	Tue Apr 07 16:14:31 2009 -0400
@@ -524,7 +524,7 @@
             (NONE, SOME (ek, "/" ^ s, n, ts, t, L'.ServerAndPullAndPush), sm)
         end
 
-      | L.DTable (s, xts, e) =>
+      | L.DTable (s, xts, pe, ce) =>
         let
             val (xts, sm) = ListUtil.foldlMap (fn ((x, t), sm) =>
                                                   let
@@ -540,10 +540,17 @@
                   | L.EStrcat (e1, e2) => flatten e1 @ flatten e2
                   | _ => (ErrorMsg.errorAt loc "Constraint has not been fully determined";
                           Print.prefaces "Undetermined constraint"
-                          [("e", MonoPrint.p_exp MonoEnv.empty e)];
+                                         [("e", MonoPrint.p_exp MonoEnv.empty e)];
                           [])
+
+            val pe = case #1 pe of
+                         L.EPrim (Prim.String s) => s
+                       | _ => (ErrorMsg.errorAt loc "Primary key has not been fully determined";
+                               Print.prefaces "Undetermined constraint"
+                                              [("e", MonoPrint.p_exp MonoEnv.empty pe)];
+                               "")
         in
-            (SOME (L'.DTable (s, xts, flatten e), loc), NONE, sm)
+            (SOME (L'.DTable (s, xts, pe, flatten ce), loc), NONE, sm)
         end
       | L.DSequence s =>
         (SOME (L'.DSequence s, loc), NONE, sm)