diff options
| author | msozeau | 2012-06-04 14:45:54 +0000 |
|---|---|---|
| committer | msozeau | 2012-06-04 14:45:54 +0000 |
| commit | bb7e5aa54afa577da7661fb43cefc9711ccfe4af (patch) | |
| tree | 3cda768748016bf44a47f79c1e35db1a4193c20d /pretyping/pretyping.ml | |
| parent | eb52433fbf064ae7c6f76178fb142a5e7b9e2dd1 (diff) | |
Forward-port fixes from 8.4 (15358, 15353, 15333).
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@15418 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'pretyping/pretyping.ml')
| -rw-r--r-- | pretyping/pretyping.ml | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/pretyping/pretyping.ml b/pretyping/pretyping.ml index 4eeb50cd0b..bcd2a1ad15 100644 --- a/pretyping/pretyping.ml +++ b/pretyping/pretyping.ml @@ -109,8 +109,14 @@ let interp_elimination_sort = function let resolve_evars env evdref fail_evar resolve_classes = if resolve_classes then - (evdref := Typeclasses.resolve_typeclasses ~with_goals:false - ~split:true ~fail:fail_evar env !evdref); + (evdref := Typeclasses.resolve_typeclasses + ~filter:(if Flags.is_program_mode () + then Typeclasses.no_goals_or_obligations else Typeclasses.no_goals) + ~split:true ~fail:fail_evar env !evdref; + if Flags.is_program_mode () then (* Try optionally solving the obligations *) + evdref := Typeclasses.resolve_typeclasses + ~filter:Typeclasses.all_evars ~split:true ~fail:false env !evdref; + ); (* Resolve eagerly, potentially making wrong choices *) evdref := (try consider_remaining_unif_problems ~ts:(Typeclasses.classes_transparent_state ()) env !evdref |
