aboutsummaryrefslogtreecommitdiff
path: root/interp
diff options
context:
space:
mode:
authorMaxime Dénès2018-03-08 19:11:28 +0100
committerMaxime Dénès2018-03-09 19:27:09 +0100
commit4d9375d18d58958d992f76799ad545b800321d78 (patch)
tree72e7665d8efe27e64ebf27da5ef2df850b4536d1 /interp
parent5542ffe43dde333cec6d118fd4b0424313330c33 (diff)
Revert "Merge PR #873: New strategy based on open scopes for deciding which notation to use among several of them"
This reverts commit 9cac9db6446b31294d2413d920db0eaa6dd5d8a6, reversing changes made to 2f679ec5235257c9fd106c26c15049e04523a307.
Diffstat (limited to 'interp')
-rw-r--r--interp/constrextern.ml6
-rw-r--r--interp/notation.ml41
-rw-r--r--interp/notation.mli6
3 files changed, 15 insertions, 38 deletions
diff --git a/interp/constrextern.ml b/interp/constrextern.ml
index 949c7cbd8e..9efaff3b9f 100644
--- a/interp/constrextern.ml
+++ b/interp/constrextern.ml
@@ -386,7 +386,7 @@ let rec extern_cases_pattern_in_scope (scopes:local_scopes) vars pat =
try
if !Flags.in_debugger || !Flags.raw_print || !print_no_symbol then raise No_match;
extern_notation_pattern scopes vars pat
- (uninterp_cases_pattern_notations scopes pat)
+ (uninterp_cases_pattern_notations pat)
with No_match ->
lift (fun ?loc -> function
| PatVar (Name id) -> CPatAtom (Some (Ident (loc,id)))
@@ -517,7 +517,7 @@ let extern_ind_pattern_in_scope (scopes:local_scopes) vars ind args =
try
if !Flags.raw_print || !print_no_symbol then raise No_match;
extern_notation_ind_pattern scopes vars ind args
- (uninterp_ind_pattern_notations scopes ind)
+ (uninterp_ind_pattern_notations ind)
with No_match ->
let c = extern_reference vars (IndRef ind) in
let args = List.map (extern_cases_pattern_in_scope scopes vars) args in
@@ -741,7 +741,7 @@ let rec extern inctx scopes vars r =
try
let r'' = flatten_application r' in
if !Flags.raw_print || !print_no_symbol then raise No_match;
- extern_notation scopes vars r'' (uninterp_notations scopes r'')
+ extern_notation scopes vars r'' (uninterp_notations r'')
with No_match -> lift (fun ?loc -> function
| GRef (ref,us) ->
extern_global (select_stronger_impargs (implicits_of_global ref))
diff --git a/interp/notation.ml b/interp/notation.ml
index da3ed6b8ca..47d6481350 100644
--- a/interp/notation.ml
+++ b/interp/notation.ml
@@ -545,38 +545,15 @@ let interp_notation ?loc ntn local_scopes =
user_err ?loc
(str "Unknown interpretation for notation \"" ++ str ntn ++ str "\".")
-let sort_notations scopes l =
- let extract_scope l = function
- | Scope sc -> List.partitioni (fun _i x ->
- match x with
- | NotationRule (Some sc',_),_,_ -> String.equal sc sc'
- | _ -> false) l
- | SingleNotation ntn -> List.partitioni (fun _i x ->
- match x with
- | NotationRule (None,ntn'),_,_ -> String.equal ntn ntn'
- | _ -> false) l in
- let rec aux l scopes =
- if l == [] then [] (* shortcut *) else
- match scopes with
- | sc :: scopes -> let ntn_in_sc,l = extract_scope l sc in ntn_in_sc @ aux l scopes
- | [] -> l in
- aux l scopes
-
-let uninterp_notations scopes c =
- let scopes = make_current_scopes scopes in
- let keys = glob_constr_keys c in
- let maps = List.map_append (fun key -> keymap_find key !notations_key_table) keys in
- sort_notations scopes maps
-
-let uninterp_cases_pattern_notations scopes c =
- let scopes = make_current_scopes scopes in
- let maps = keymap_find (cases_pattern_key c) !notations_key_table in
- sort_notations scopes maps
-
-let uninterp_ind_pattern_notations scopes ind =
- let scopes = make_current_scopes scopes in
- let maps = keymap_find (RefKey (canonical_gr (IndRef ind))) !notations_key_table in
- sort_notations scopes maps
+let uninterp_notations c =
+ List.map_append (fun key -> keymap_find key !notations_key_table)
+ (glob_constr_keys c)
+
+let uninterp_cases_pattern_notations c =
+ keymap_find (cases_pattern_key c) !notations_key_table
+
+let uninterp_ind_pattern_notations ind =
+ keymap_find (RefKey (canonical_gr (IndRef ind))) !notations_key_table
let availability_of_notation (ntn_scope,ntn) scopes =
let f scope =
diff --git a/interp/notation.mli b/interp/notation.mli
index aa52b858a2..6803a7e517 100644
--- a/interp/notation.mli
+++ b/interp/notation.mli
@@ -126,9 +126,9 @@ val interp_notation : ?loc:Loc.t -> notation -> local_scopes ->
type notation_rule = interp_rule * interpretation * int option
(** Return the possible notations for a given term *)
-val uninterp_notations : local_scopes -> 'a glob_constr_g -> notation_rule list
-val uninterp_cases_pattern_notations : local_scopes -> 'a cases_pattern_g -> notation_rule list
-val uninterp_ind_pattern_notations : local_scopes -> inductive -> notation_rule list
+val uninterp_notations : 'a glob_constr_g -> notation_rule list
+val uninterp_cases_pattern_notations : 'a cases_pattern_g -> notation_rule list
+val uninterp_ind_pattern_notations : inductive -> notation_rule list
(** Test if a notation is available in the scopes
context [scopes]; if available, the result is not None; the first