aboutsummaryrefslogtreecommitdiffhomepage
path: root/pretyping/typeclasses.ml
diff options
context:
space:
mode:
authorGravatar msozeau <msozeau@85f007b7-540e-0410-9357-904b9bb8a0f7>2013-04-03 14:39:10 +0000
committerGravatar msozeau <msozeau@85f007b7-540e-0410-9357-904b9bb8a0f7>2013-04-03 14:39:10 +0000
commitd5b13126177a7f30069d0512f1d08b34e00e3fee (patch)
tree571cabe867487e6b3b9464fca498e49589d4bdf6 /pretyping/typeclasses.ml
parentf5ab2e37b0609d8edb8d65dfae49741442a90657 (diff)
Fix for bug #3017: wrong handling of the unresolvability status
in clenvtac and error-printing code. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@16383 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'pretyping/typeclasses.ml')
-rw-r--r--pretyping/typeclasses.ml16
1 files changed, 8 insertions, 8 deletions
diff --git a/pretyping/typeclasses.ml b/pretyping/typeclasses.ml
index 34f8f07f9..d2cd0957e 100644
--- a/pretyping/typeclasses.ml
+++ b/pretyping/typeclasses.ml
@@ -513,13 +513,6 @@ let mark_resolvability b sigma =
let mark_unresolvables sigma = mark_resolvability false sigma
let mark_resolvables sigma = mark_resolvability true sigma
-let has_typeclasses evd =
- Evd.fold_undefined (fun ev evi has -> has ||
- (is_class_evar evd evi && is_resolvable evi))
- evd false
-
-let solve_instanciations_problem = ref (fun _ _ _ _ _ -> assert false)
-
open Evar_kinds
type evar_filter = Evar_kinds.t -> bool
@@ -529,6 +522,13 @@ let no_goals_or_obligations = function
| GoalEvar | QuestionMark _ -> false
| _ -> true
+let has_typeclasses filter evd =
+ Evd.fold_undefined (fun ev evi has -> has ||
+ (filter (snd evi.evar_source) && is_class_evar evd evi && is_resolvable evi))
+ evd false
+
+let solve_instanciations_problem = ref (fun _ _ _ _ _ -> assert false)
+
let resolve_typeclasses ?(filter=no_goals) ?(split=true) ?(fail=true) env evd =
- if not (has_typeclasses evd) then evd
+ if not (has_typeclasses filter evd) then evd
else !solve_instanciations_problem env evd filter split fail