aboutsummaryrefslogtreecommitdiffhomepage
path: root/toplevel/himsg.ml
diff options
context:
space:
mode:
authorGravatar msozeau <msozeau@85f007b7-540e-0410-9357-904b9bb8a0f7>2012-01-23 20:51:38 +0000
committerGravatar msozeau <msozeau@85f007b7-540e-0410-9357-904b9bb8a0f7>2012-01-23 20:51:38 +0000
commit5b37885260bc0c4e9d9ac45ce3ab861b5ed252a4 (patch)
tree8540a92dab13b56441a4731c2aa0bc51008a393e /toplevel/himsg.ml
parent0a2d03537beaf5ba2ca07176cccba6ce6c6532b2 (diff)
Fix typeclass resolution error message which included goal evars (bug #2620).
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@14941 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'toplevel/himsg.ml')
-rw-r--r--toplevel/himsg.ml6
1 files changed, 6 insertions, 0 deletions
diff --git a/toplevel/himsg.ml b/toplevel/himsg.ml
index 1bd680144..22568ee88 100644
--- a/toplevel/himsg.ml
+++ b/toplevel/himsg.ml
@@ -696,8 +696,14 @@ let explain_no_instance env (_,id) l =
str "applied to arguments" ++ spc () ++
prlist_with_sep pr_spc (pr_lconstr_env env) l
+let is_goal_evar evi = match evi.evar_source with (_, GoalEvar) -> true | _ -> false
+
let pr_constraints printenv env evm =
let evm = Evd.undefined_evars (Evarutil.nf_evar_map_undefined evm) in
+ let evm = fold_undefined
+ (fun ev evi evm' ->
+ if is_goal_evar evi then Evd.remove evm' ev else evm') evm evm
+ in
let l = Evd.to_list evm in
let (ev, evi) = List.hd l in
if List.for_all (fun (ev', evi') ->