aboutsummaryrefslogtreecommitdiffhomepage
path: root/vernac
diff options
context:
space:
mode:
authorGravatar Matthieu Sozeau <matthieu.sozeau@inria.fr>2018-06-25 15:11:50 +0200
committerGravatar Matthieu Sozeau <matthieu.sozeau@inria.fr>2018-06-25 15:11:50 +0200
commit24279abf43cfbd65e2fc29f171eb8705fdf61a3e (patch)
treea618b3de5e73f469c0ef8ff4351baf0ab19bb8a2 /vernac
parent915452f9a73d25e45131edb08531c29a79ab7020 (diff)
parentc15880e6fe79f1d746f47deb22549518f1333c8a (diff)
Merge PR #7559: Existing Class noop when already a class + warning.
Diffstat (limited to 'vernac')
-rw-r--r--vernac/record.ml16
1 files changed, 11 insertions, 5 deletions
diff --git a/vernac/record.ml b/vernac/record.ml
index a97a1662e..202c9b92f 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