diff src/elaborate.sml @ 1075:0657e5adc938

Convert to task syntax
author Adam Chlipala <adamc@hcoop.net>
date Tue, 15 Dec 2009 10:19:05 -0500
parents d89f98f0b4bb
children 8d3aa6c7cee0
line wrap: on
line diff
--- a/src/elaborate.sml	Sun Dec 13 14:34:18 2009 -0500
+++ b/src/elaborate.sml	Tue Dec 15 10:19:05 2009 -0500
@@ -2548,7 +2548,7 @@
       | L'.DDatabase _ => []
       | L'.DCookie (tn, x, n, c) => [(L'.SgiVal (x, n, (L'.CApp (cookieOf (), c), loc)), loc)]
       | L'.DStyle (tn, x, n) => [(L'.SgiVal (x, n, styleOf ()), loc)]
-      | L'.DInitializer _ => []
+      | L'.DTask _ => []
 
 and subSgn' counterparts env strLoc sgn1 (sgn2 as (_, loc2)) =
     ((*prefaces "subSgn" [("sgn1", p_sgn env sgn1),
@@ -3669,14 +3669,18 @@
                 in
                     ([(L'.DStyle (!basis_r, x, n), loc)], (env, denv, gs))
                 end
-              | L.DInitializer e =>
+              | L.DTask (e1, e2) =>
                 let
-                    val (e', t, gs') = elabExp (env, denv) e
-                    val t' = (L'.CApp ((L'.CModProj (!basis_r, [], "transaction"), loc),
-                                       (L'.TRecord (L'.CRecord ((L'.KType, loc), []), loc), loc)), loc)
+                    val (e1', t1, gs1) = elabExp (env, denv) e1
+                    val (e2', t2, gs2) = elabExp (env, denv) e2
+
+                    val t1' = (L'.CModProj (!basis_r, [], "task_kind"), loc)
+                    val t2' = (L'.CApp ((L'.CModProj (!basis_r, [], "transaction"), loc),
+                                        (L'.TRecord (L'.CRecord ((L'.KType, loc), []), loc), loc)), loc)
                 in
-                    checkCon env e' t t';
-                    ([(L'.DInitializer e', loc)], (env, denv, gs' @ gs))
+                    checkCon env e1' t1 t1';
+                    checkCon env e2' t2 t2';
+                    ([(L'.DTask (e1', e2'), loc)], (env, denv, gs2 @ gs1 @ gs))
                 end
 
         (*val tcs = List.filter (fn TypeClass _ => true | _ => false) (#3 (#2 r))*)