aboutsummaryrefslogtreecommitdiffhomepage
path: root/kernel/clambda.ml
diff options
context:
space:
mode:
authorGravatar Maxime Dénès <mail@maximedenes.fr>2018-05-16 00:36:08 +0200
committerGravatar Maxime Dénès <mail@maximedenes.fr>2018-05-28 16:08:53 +0200
commit442bd1fe4007d2f3b46cb565abbcd64011db1af4 (patch)
tree083f5890a7a5763e884e24b1de45431573e87cae /kernel/clambda.ml
parent4552729b88058946055dddde1533057e25bfc5a9 (diff)
Fix #7333: vm_compute segfaults / Anomaly with cofix
We eta-expand cofixpoints when needed, so that their call-by-need evaluation is correctly implemented by VM and native_compute.
Diffstat (limited to 'kernel/clambda.ml')
-rw-r--r--kernel/clambda.ml1
1 files changed, 1 insertions, 0 deletions
diff --git a/kernel/clambda.ml b/kernel/clambda.ml
index 619dd608f..8389dd326 100644
--- a/kernel/clambda.ml
+++ b/kernel/clambda.ml
@@ -700,6 +700,7 @@ let rec lambda_of_constr env c =
Lfix(rec_init, (names, ltypes, lbodies))
| CoFix(init,(names,type_bodies,rec_bodies)) ->
+ let rec_bodies = Array.map2 (Reduction.eta_expand env.global_env) rec_bodies type_bodies in
let ltypes = lambda_of_args env 0 type_bodies in
Renv.push_rels env names;
let lbodies = lambda_of_args env 0 rec_bodies in