diff options
author | Maxime Dénès <mail@maximedenes.fr> | 2014-08-04 16:31:29 -0400 |
---|---|---|
committer | Maxime Dénès <mail@maximedenes.fr> | 2014-08-04 18:10:12 -0400 |
commit | 7d3c337a3b9f0906de22ccfde02203b8fafd330d (patch) | |
tree | 20b21e634c8e375519ba272da2402ad6a3a24ca7 /kernel | |
parent | f9b33f4bc396eaf60abaaee270b4701fe05d82f4 (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.ml | 7 |
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) |