Fix regeneration of multi-file dependencies
[hcoop/domtool2.git] / src / eval.sml
index 8789eac..08fd7f5 100644 (file)
@@ -60,7 +60,12 @@ fun exec' evs (eAll as (e, _)) =
     case e of
        ESkip => SM.empty
       | ESet (ev, e) => SM.insert (SM.empty, ev, e)
-      | EGet (x, _, ev, e) => exec' evs (Reduce.subst x (lookup (evs, ev)) e)
+      | EGet (x, _, ev, e) =>
+       let
+           val e' = Reduce.subst x (lookup (evs, ev)) e
+       in
+           exec' evs (Reduce.reduceExp Env.empty e')
+       end
       | ESeq es =>
        let
            val (new, _) =
@@ -102,7 +107,7 @@ fun exec' evs (eAll as (e, _)) =
        in
            case Env.action prim of
                NONE => raise Fail "Unbound primitive action"
-             | SOME action => action (evs, args)
+             | SOME action => action (evs, List.map (Reduce.reduceExp Env.empty) args)
        end
 
 fun exec evs e =
@@ -113,4 +118,6 @@ fun exec evs e =
        Env.post ()
     end
 
+val exec' = fn evs => fn e => conjoin (evs, exec' evs e)
+
 end