aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Herbelin2020-09-26 14:13:09 +0200
committerHugo Herbelin2020-10-19 10:19:17 +0200
commit116e82b44946998dad06b33b3fdc2516fca42fcc (patch)
treefada732b8a928cd8b87a57c68a53b03e74a227fc
parent26a456cbf1e8abc5c033090b59892b314d7e7142 (diff)
Addressing parsing part #13078.
We don't give sense to pattern/binders in leftmost position.
-rw-r--r--test-suite/bugs/closed/bug_13078.v2
-rw-r--r--vernac/metasyntax.ml3
2 files changed, 5 insertions, 0 deletions
diff --git a/test-suite/bugs/closed/bug_13078.v b/test-suite/bugs/closed/bug_13078.v
index 1bd32d0576..ec04408fd1 100644
--- a/test-suite/bugs/closed/bug_13078.v
+++ b/test-suite/bugs/closed/bug_13078.v
@@ -6,3 +6,5 @@ Check fun x => match x with | None => None | Some tt => Some tt end.
Notation "& x" := (Some x) (at level 0, x pattern).
Check fun x => match x with | None => None | Some tt => Some tt end.
End PrintingTest.
+
+Fail Notation "x &" := (Some x) (at level 0, x pattern).
diff --git a/vernac/metasyntax.ml b/vernac/metasyntax.ml
index 684036bc11..20a2a3218e 100644
--- a/vernac/metasyntax.ml
+++ b/vernac/metasyntax.ml
@@ -1233,6 +1233,9 @@ let find_precedence custom lev etyps symbols onlyprint =
| _ ->
user_err Pp.(str "A notation starting with an atomic expression must be at level 0.")
end
+ | (ETPattern _ | ETBinder _), InConstrEntry when not onlyprint ->
+ (* Don't know exactly if we can make sense of this case *)
+ user_err Pp.(str "Binders or patterns not supported in leftmost position.")
| (ETPattern _ | ETBinder _ | ETConstr _), _ ->
(* Give a default ? *)
if Option.is_empty lev then