aboutsummaryrefslogtreecommitdiff
path: root/kernel/inductive.ml
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/inductive.ml')
-rw-r--r--kernel/inductive.ml5
1 files changed, 5 insertions, 0 deletions
diff --git a/kernel/inductive.ml b/kernel/inductive.ml
index 9cfa5c632e..eae4c098d8 100644
--- a/kernel/inductive.ml
+++ b/kernel/inductive.ml
@@ -1171,6 +1171,8 @@ let check_one_cofix env nbfix def deftype =
raise (CoFixGuardError (env,UnguardedRecursiveCall c))
| Case (_,p,tm,vrest) ->
+ begin
+ try let _ = codomain_is_coind env p in
if (noccur_with_meta n nbfix p) then
if (noccur_with_meta n nbfix tm) then
if (List.for_all (noccur_with_meta n nbfix) args) then
@@ -1181,6 +1183,9 @@ let check_one_cofix env nbfix def deftype =
raise (CoFixGuardError (env,RecCallInCaseArg c))
else
raise (CoFixGuardError (env,RecCallInCasePred c))
+ with CoFixGuardError _ ->
+ raise (CoFixGuardError (env, ReturnPredicateNotCoInductive c))
+ end
| Meta _ -> ()
| Evar _ ->