diff options
| -rw-r--r-- | plugins/subtac/subtac_command.ml | 6 | ||||
| -rw-r--r-- | theories/Program/Syntax.v | 4 |
2 files changed, 9 insertions, 1 deletions
diff --git a/plugins/subtac/subtac_command.ml b/plugins/subtac/subtac_command.ml index eb135139c4..1095b143cc 100644 --- a/plugins/subtac/subtac_command.ml +++ b/plugins/subtac/subtac_command.ml @@ -383,7 +383,8 @@ let check_evars env initial_sigma evd c = if not (Evd.mem initial_sigma evk) then let (loc,k) = evar_source evk evd in (match k with - | QuestionMark _ -> () + | QuestionMark _ + | ImplicitArg (_, _, false) -> () | _ -> let evi = nf_evar_info sigma (Evd.find sigma evk) in Pretype_errors.error_unsolvable_implicit loc env sigma evi k None) @@ -426,6 +427,9 @@ let interp_recursive fixkind l boxed = (* Instantiate evars and check all are resolved *) let evd,_ = Evarconv.consider_remaining_unif_problems env_rec !evdref in + let evd = Typeclasses.resolve_typeclasses + ~onlyargs:true ~split:true ~fail:false env_rec evd + in let evd = Evarutil.nf_evar_defs evd in let fixdefs = List.map (nf_evar evd) fixdefs in let fixtypes = List.map (nf_evar evd) fixtypes in diff --git a/theories/Program/Syntax.v b/theories/Program/Syntax.v index 25f6a5152f..9828d4b693 100644 --- a/theories/Program/Syntax.v +++ b/theories/Program/Syntax.v @@ -31,6 +31,10 @@ Implicit Arguments inr [[A] [B]]. Implicit Arguments left [[A] [B]]. Implicit Arguments right [[A] [B]]. +Implicit Arguments pair [[A] [B]]. +Implicit Arguments fst [[A] [B]]. +Implicit Arguments snd [[A] [B]]. + Require Import Coq.Lists.List. Implicit Arguments nil [[A]]. |
