diff options
author | Gaëtan Gilbert <gaetan.gilbert@skyskimmer.net> | 2018-05-20 21:21:43 +0200 |
---|---|---|
committer | Gaëtan Gilbert <gaetan.gilbert@skyskimmer.net> | 2018-06-08 23:13:09 +0200 |
commit | c15880e6fe79f1d746f47deb22549518f1333c8a (patch) | |
tree | bf10110145c0f7c82e82b90d7d25dc5dc23db919 /vernac | |
parent | db8f02d2c5ff6ba2ecc8fcc5919c512d07c1a557 (diff) |
Existing Class noop when already a class + warning.
Fix #5012.
Diffstat (limited to 'vernac')
-rw-r--r-- | vernac/record.ml | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/vernac/record.ml b/vernac/record.ml index e6a3afe4e..8b665d1c5 100644 --- a/vernac/record.ml +++ b/vernac/record.ml @@ -562,12 +562,18 @@ let add_inductive_class ind = cl_unique = !typeclasses_unique } in add_class k +let warn_already_existing_class = + CWarnings.create ~name:"already-existing-class" ~category:"automation" Pp.(fun g -> + Printer.pr_global g ++ str " is already declared as a typeclass.") + let declare_existing_class g = - match g with - | ConstRef x -> add_constant_class x - | IndRef x -> add_inductive_class x - | _ -> user_err ~hdr:"declare_existing_class" - (Pp.str"Unsupported class type, only constants and inductives are allowed") + if Typeclasses.is_class g then warn_already_existing_class g + else + match g with + | ConstRef x -> add_constant_class x + | IndRef x -> add_inductive_class x + | _ -> user_err ~hdr:"declare_existing_class" + (Pp.str"Unsupported class type, only constants and inductives are allowed") open Vernacexpr |