aboutsummaryrefslogtreecommitdiffhomepage
path: root/kernel
diff options
context:
space:
mode:
authorGravatar Maxime Dénès <mail@maximedenes.fr>2014-08-04 16:31:29 -0400
committerGravatar Maxime Dénès <mail@maximedenes.fr>2014-08-04 18:10:12 -0400
commit7d3c337a3b9f0906de22ccfde02203b8fafd330d (patch)
tree20b21e634c8e375519ba272da2402ad6a3a24ca7 /kernel
parentf9b33f4bc396eaf60abaaee270b4701fe05d82f4 (diff)
Fix an exponential behavior in guard checker for cofixpoints.
I had introduced it by mistake due to my OCaml dyslexia :) Thanks to Enrico and Arnaud for saving my day!
Diffstat (limited to 'kernel')
-rw-r--r--kernel/inductive.ml7
1 files changed, 4 insertions, 3 deletions
diff --git a/kernel/inductive.ml b/kernel/inductive.ml
index dfed98071..f3466c920 100644
--- a/kernel/inductive.ml
+++ b/kernel/inductive.ml
@@ -1107,9 +1107,10 @@ let check_one_cofix env nbfix def deftype =
then process_args_of_constr (lr, lrar)
else raise (CoFixGuardError
(env,RecCallInNonRecArgOfConstructor t))
- else
- check_rec_call env true n rar t;
- process_args_of_constr (lr, lrar)
+ else begin
+ check_rec_call env true n rar t;
+ process_args_of_constr (lr, lrar)
+ end
| [],_ -> ()
| _ -> anomaly_ill_typed ()
in process_args_of_constr (realargs, lra)