From cd3819db675bd42510eac1bd616ca20e33e7d997 Mon Sep 17 00:00:00 2001 From: Pierre-Marie Pédrot Date: Fri, 1 Sep 2017 00:57:33 +0200 Subject: Closures now wear the constant they originated from. --- src/tac2interp.ml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/tac2interp.ml') 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 -- cgit v1.2.3