diff options
author | Siddharth Bhat <siddu.druid@gmail.com> | 2018-06-27 22:03:25 +0200 |
---|---|---|
committer | Siddharth Bhat <siddu.druid@gmail.com> | 2018-07-17 13:14:44 +0200 |
commit | 1300da19d13f7e46cf3a4b0b3396604ffc44a6d5 (patch) | |
tree | 577f1c1b6dbc64382a7623d77bc6e6756ed45a96 /pretyping/pretyping.ml | |
parent | b799252775563b4f46f5ea39cbfc469759e7a296 (diff) |
Change QuestionMark for better record field missing error message.
While we were adding a new field into `QuestionMark`, we
decided to go ahead and refactor the constructor to hold
an actual record. This record now holds the name, obligations, and
whether the evar represents a missing record field.
This is used to provide better error messages on missing record
fields.
Diffstat (limited to 'pretyping/pretyping.ml')
-rw-r--r-- | pretyping/pretyping.ml | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/pretyping/pretyping.ml b/pretyping/pretyping.ml index 57c4d363b..122979c1a 100644 --- a/pretyping/pretyping.ml +++ b/pretyping/pretyping.ml @@ -381,8 +381,16 @@ let adjust_evar_source evdref na c = | Name id, Evar (evk,args) -> let evi = Evd.find !evdref evk in begin match evi.evar_source with - | loc, Evar_kinds.QuestionMark (b,Anonymous) -> - let src = (loc,Evar_kinds.QuestionMark (b,na)) in + | loc, Evar_kinds.QuestionMark { + Evar_kinds.qm_obligation=b; + Evar_kinds.qm_name=Anonymous; + Evar_kinds.qm_record_field=recfieldname; + } -> + let src = (loc,Evar_kinds.QuestionMark { + Evar_kinds.qm_obligation=b; + Evar_kinds.qm_name=na; + Evar_kinds.qm_record_field=recfieldname; + }) in let (evd, evk') = restrict_evar !evdref evk (evar_filter evi) ~src None in evdref := evd; mkEvar (evk',args) |