@@ -57,26 +57,37 @@ let infer_assumption env t ty =
57
57
with TypeError _ ->
58
58
error_assumption env (make_judge t ty)
59
59
60
- type bad_relevance =
61
- | BadRelevanceBinder of Sorts .relevance * rel_declaration
62
- | BadRelevanceCase of Sorts .relevance * Constr .t
60
+ type ('constr,'types) bad_relevance =
61
+ | BadRelevanceBinder of Sorts .relevance * ( 'constr ,'types) Context.Rel.Declaration .pt
62
+ | BadRelevanceCase of Sorts .relevance * 'constr
63
63
64
64
let warn_bad_relevance_name = " bad-relevance"
65
- let warn_bad_relevance =
66
- CWarnings. create ~name: warn_bad_relevance_name ~default: CWarnings. AsError
67
- Pp. (function
68
- | BadRelevanceCase _ -> str " Bad relevance in case annotation."
69
- | BadRelevanceBinder (_ , na ) -> str " Bad relevance for binder " ++ Name. print (RelDecl. get_name na) ++ str " ." )
70
65
71
- let warn_bad_relevance_case ?loc env rlv case = match CWarnings. get_status ~name: warn_bad_relevance_name with
66
+ let bad_relevance_warning =
67
+ CWarnings. create_warning ~name: warn_bad_relevance_name ~default: CWarnings. AsError ()
68
+
69
+ let bad_relevance_msg = CWarnings. create_msg bad_relevance_warning ()
70
+
71
+ let default_print_bad_relevance = function
72
+ | BadRelevanceCase _ -> Pp. str " Bad relevance in case annotation."
73
+ | BadRelevanceBinder (_ , na ) ->
74
+ Pp. (str " Bad relevance for binder " ++ Name. print (RelDecl. get_name na) ++ str " ." )
75
+
76
+ (* used eg in the checker *)
77
+ let () = CWarnings. register_printer bad_relevance_msg
78
+ (fun (_env ,b ) -> default_print_bad_relevance b)
79
+
80
+ let warn_bad_relevance_case ?loc env rlv case =
81
+ match CWarnings. warning_status bad_relevance_warning with
72
82
| CWarnings. Disabled | CWarnings. Enabled ->
73
- warn_bad_relevance ?loc (BadRelevanceCase (rlv, mkCase case))
83
+ CWarnings. warn bad_relevance_msg ?loc (env, BadRelevanceCase (rlv, mkCase case))
74
84
| CWarnings. AsError ->
75
85
error_bad_case_relevance env rlv case
76
86
77
- let warn_bad_relevance_binder ?loc env rlv bnd = match CWarnings. get_status ~name: warn_bad_relevance_name with
87
+ let warn_bad_relevance_binder ?loc env rlv bnd =
88
+ match CWarnings. warning_status bad_relevance_warning with
78
89
| CWarnings. Disabled | CWarnings. Enabled ->
79
- warn_bad_relevance ?loc (BadRelevanceBinder (rlv, bnd))
90
+ CWarnings. warn bad_relevance_msg ?loc (env, BadRelevanceBinder (rlv, bnd))
80
91
| CWarnings. AsError ->
81
92
error_bad_binder_relevance env rlv bnd
82
93
0 commit comments