diff options
| author | Pierre-Marie Pédrot | 2019-02-05 15:56:36 +0100 |
|---|---|---|
| committer | Pierre-Marie Pédrot | 2019-02-05 15:56:36 +0100 |
| commit | b307529a3888ab632b7076a793904d150d263eac (patch) | |
| tree | 105892da79735e63bb59f8ae1089fabcb0adbaa0 /vernac | |
| parent | 38b1682ee6b6342ca582bac4e658f7d1c3919de4 (diff) | |
| parent | 5531d049b2a4f4c6c9e55ad31acae5b31aeda5c5 (diff) | |
Merge PR #9373: Kernel: don't automatically downgrade ill-shaped primitive records
Reviewed-by: ppedrot
Diffstat (limited to 'vernac')
| -rw-r--r-- | vernac/record.ml | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/vernac/record.ml b/vernac/record.ml index 1b7b828f47..ed5edb7e3b 100644 --- a/vernac/record.ml +++ b/vernac/record.ml @@ -414,9 +414,15 @@ let declare_structure finite ubinders univs paramimpls params template ?(kind=St mind_entry_lc = [type_constructor] } in let blocks = List.mapi mk_block record_data in + let primitive = + !primitive_flag && + List.for_all (fun (_,_,_,_,fields,_,_) -> List.exists is_local_assum fields) record_data + (* will warn_non_primitive_record in declare_projections if we try + to declare a 0-field record *) + in let mie = { mind_entry_params = params; - mind_entry_record = Some (if !primitive_flag then Some binder_name else None); + mind_entry_record = Some (if primitive then Some binder_name else None); mind_entry_finite = finite; mind_entry_inds = blocks; mind_entry_private = None; |
