aboutsummaryrefslogtreecommitdiff
path: root/toplevel/record.ml
diff options
context:
space:
mode:
Diffstat (limited to 'toplevel/record.ml')
-rw-r--r--toplevel/record.ml16
1 files changed, 10 insertions, 6 deletions
diff --git a/toplevel/record.ml b/toplevel/record.ml
index c066bae5c1..f1ee0ab658 100644
--- a/toplevel/record.ml
+++ b/toplevel/record.ml
@@ -341,6 +341,8 @@ let declare_class finite id idbuild paramimpls params arity fieldimpls fields
k.cl_projs coers;
add_class k; impl
+open Vernacexpr
+
(* [fs] corresponds to fields and [ps] to parameters; [coers] is a boolean
list telling if the corresponding fields must me declared as coercion *)
let definition_structure (kind,finite,(is_coe,(loc,idstruc)),ps,cfs,idbuild,s) =
@@ -358,9 +360,11 @@ let definition_structure (kind,finite,(is_coe,(loc,idstruc)),ps,cfs,idbuild,s) =
States.with_heavy_rollback (fun () ->
typecheck_params_and_fields idstruc sc ps notations fs) ()
in
- if kind then
- let arity = Option.cata (fun x -> x) (new_Type ()) sc in
- let implfs = List.map
- (fun impls -> implpars @ Impargs.lift_implicits (succ (List.length params)) impls) implfs
- in IndRef (declare_structure finite idstruc idbuild implpars params arity implfs fields is_coe coers)
- else declare_class finite (loc,idstruc) idbuild implpars params sc implfs fields is_coe coers
+ match kind with
+ | Record | Structure ->
+ let arity = Option.cata (fun x -> x) (new_Type ()) sc in
+ let implfs = List.map
+ (fun impls -> implpars @ Impargs.lift_implicits (succ (List.length params)) impls) implfs
+ in IndRef (declare_structure finite idstruc idbuild implpars params arity implfs fields is_coe coers)
+ | Class ->
+ declare_class finite (loc,idstruc) idbuild implpars params sc implfs fields is_coe coers