diff options
author | 2012-06-04 14:45:54 +0000 | |
---|---|---|
committer | 2012-06-04 14:45:54 +0000 | |
commit | bb7e5aa54afa577da7661fb43cefc9711ccfe4af (patch) | |
tree | 3cda768748016bf44a47f79c1e35db1a4193c20d /toplevel | |
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 'toplevel')
-rw-r--r-- | toplevel/classes.ml | 6 | ||||
-rw-r--r-- | toplevel/command.ml | 7 |
2 files changed, 7 insertions, 6 deletions
diff --git a/toplevel/classes.ml b/toplevel/classes.ml index b4e44e7d3..dfbc95356 100644 --- a/toplevel/classes.ml +++ b/toplevel/classes.ml @@ -172,7 +172,7 @@ let new_instance ?(abstract=false) ?(global=false) ctx (instid, bk, cl) props in let env' = push_rel_context ctx env in evars := Evarutil.nf_evar_map !evars; - evars := resolve_typeclasses ~with_goals:false ~fail:true env !evars; + evars := resolve_typeclasses ~filter:Typeclasses.no_goals ~fail:true env !evars; let sigma = !evars in let subst = List.map (Evarutil.nf_evar sigma) subst in if abstract then @@ -262,10 +262,10 @@ let new_instance ?(abstract=false) ?(global=false) ctx (instid, bk, cl) props in let _ = evars := Evarutil.nf_evar_map !evars; - evars := Typeclasses.resolve_typeclasses ~with_goals:false ~fail:true + evars := Typeclasses.resolve_typeclasses ~filter:Typeclasses.no_goals_or_obligations ~fail:true env !evars; (* Try resolving fields that are typeclasses automatically. *) - evars := Typeclasses.resolve_typeclasses ~with_goals:true ~fail:false + evars := Typeclasses.resolve_typeclasses ~filter:Typeclasses.all_evars ~fail:false env !evars in let termtype = Evarutil.nf_evar !evars termtype in diff --git a/toplevel/command.ml b/toplevel/command.ml index 2f5ed1181..3191279ce 100644 --- a/toplevel/command.ml +++ b/toplevel/command.ml @@ -290,7 +290,7 @@ let interp_mutual_inductive (paramsl,indl) notations finite = (* Instantiate evars and check all are resolved *) let evd = consider_remaining_unif_problems env_params !evdref in - let evd = Typeclasses.resolve_typeclasses ~with_goals:false ~fail:true env_params evd in + let evd = Typeclasses.resolve_typeclasses ~filter:Typeclasses.no_goals ~fail:true env_params evd in let sigma = evd in let constructors = List.map (fun (idl,cl,impsl) -> (idl,List.map (nf_evar sigma) cl,impsl)) constructors in let ctx_params = Sign.map_rel_context (nf_evar sigma) ctx_params in @@ -781,7 +781,7 @@ let interp_recursive isfix fixl notations = (env,rec_sign,evd), (fixnames,fixdefs,fixtypes), list_combine3 fixctxnames fiximps fixannots let check_recursive isfix ((env,rec_sign,evd),(fixnames,fixdefs,fixtypes),info) = - let evd = Typeclasses.resolve_typeclasses ~with_goals:false ~fail:true env evd in + let evd = Typeclasses.resolve_typeclasses ~filter:Typeclasses.no_goals ~fail:true env evd in List.iter (Option.iter (check_evars (push_named_context rec_sign env) Evd.empty evd)) fixdefs; List.iter (check_evars env Evd.empty evd) fixtypes; if not (List.mem None fixdefs) then begin @@ -889,7 +889,8 @@ let do_program_recursive fixkind fixl ntns = in (* Program-specific code *) (* Get the interesting evars, those that were not instanciated *) - let evd = Typeclasses.resolve_typeclasses ~with_goals:false ~fail:true env evd in + let evd = Typeclasses.resolve_typeclasses ~filter:Typeclasses.no_goals_or_obligations ~fail:true env evd in + let evd = Typeclasses.resolve_typeclasses ~filter:Typeclasses.no_goals ~fail:false env evd in (* Solve remaining evars *) let rec collect_evars id def typ imps = (* Generalize by the recursive prototypes *) |