aboutsummaryrefslogtreecommitdiff
path: root/src/tac2interp.ml
diff options
context:
space:
mode:
authorPierre-Marie Pédrot2017-09-01 00:57:33 +0200
committerPierre-Marie Pédrot2017-09-04 15:16:19 +0200
commitcd3819db675bd42510eac1bd616ca20e33e7d997 (patch)
tree47a17c77b523d6dec70f93f60e18523c3e6351e6 /src/tac2interp.ml
parent818c49240f2ee6fccd38a556c7e90126606e1837 (diff)
Closures now wear the constant they originated from.
Diffstat (limited to 'src/tac2interp.ml')
-rw-r--r--src/tac2interp.ml8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/tac2interp.ml b/src/tac2interp.ml
index c15331571b..7bcfad1be1 100644
--- a/src/tac2interp.ml
+++ b/src/tac2interp.ml
@@ -47,7 +47,7 @@ let rec interp ist = function
| GTacVar id -> return (get_var ist id)
| GTacRef qid -> return (get_ref ist qid)
| GTacFun (ids, e) ->
- let cls = { clos_env = ist; clos_var = ids; clos_exp = e } in
+ let cls = { clos_ref = None; clos_env = ist; clos_var = ids; clos_exp = e } in
return (ValCls cls)
| GTacApp (f, args) ->
interp ist f >>= fun f ->
@@ -63,7 +63,7 @@ let rec interp ist = function
| GTacLet (true, el, e) ->
let map (na, e) = match e with
| GTacFun (ids, e) ->
- let cls = { clos_env = ist; clos_var = ids; clos_exp = e } in
+ let cls = { clos_ref = None; clos_env = ist; clos_var = ids; clos_exp = e } in
na, cls
| _ -> anomaly (str "Ill-formed recursive function")
in
@@ -102,12 +102,12 @@ let rec interp ist = function
tpe.Tac2env.ml_interp ist e
and interp_app f args = match f with
-| ValCls { clos_env = ist; clos_var = ids; clos_exp = e } ->
+| ValCls { clos_env = ist; clos_var = ids; clos_exp = e; clos_ref = kn } ->
let rec push ist ids args = match ids, args with
| [], [] -> interp ist e
| [], _ :: _ -> interp ist e >>= fun f -> interp_app f args
| _ :: _, [] ->
- let cls = { clos_env = ist; clos_var = ids; clos_exp = e } in
+ let cls = { clos_ref = kn; clos_env = ist; clos_var = ids; clos_exp = e } in
return (ValCls cls)
| id :: ids, arg :: args -> push (push_name ist id arg) ids args
in