aboutsummaryrefslogtreecommitdiff
path: root/interp
diff options
context:
space:
mode:
Diffstat (limited to 'interp')
-rw-r--r--interp/notation.ml8
-rw-r--r--interp/notation.mli4
2 files changed, 12 insertions, 0 deletions
diff --git a/interp/notation.ml b/interp/notation.ml
index aeec4b6153..6040c33a5e 100644
--- a/interp/notation.ml
+++ b/interp/notation.ml
@@ -516,6 +516,14 @@ let availability_of_prim_token n printer_scope local_scopes =
(* Miscellaneous *)
+let exists_notation_in_scope scopt ntn r =
+ let scope = match scopt with Some s -> s | None -> default_scope in
+ try
+ let sc = String.Map.find scope !scope_map in
+ let (r',_) = String.Map.find ntn sc.notations in
+ Pervasives.(=) r' r (** FIXME *)
+ with Not_found -> false
+
let isNVar_or_NHole = function NVar _ | NHole _ -> true | _ -> false
(**********************************************************************)
diff --git a/interp/notation.mli b/interp/notation.mli
index c66115cbdd..854c52b2c7 100644
--- a/interp/notation.mli
+++ b/interp/notation.mli
@@ -140,6 +140,10 @@ val level_of_notation : notation -> level (** raise [Not_found] if no level *)
val interp_notation_as_global_reference : Loc.t -> (global_reference -> bool) ->
notation -> delimiters option -> global_reference
+(** Checks for already existing notations *)
+val exists_notation_in_scope : scope_name option -> notation ->
+ interpretation -> bool
+
(** Declares and looks for scopes associated to arguments of a global ref *)
val declare_arguments_scope :
bool (** true=local *) -> global_reference -> scope_name option list -> unit