diff options
| author | Hugo Herbelin | 2020-09-26 14:13:09 +0200 |
|---|---|---|
| committer | Hugo Herbelin | 2020-10-19 10:19:17 +0200 |
| commit | 116e82b44946998dad06b33b3fdc2516fca42fcc (patch) | |
| tree | fada732b8a928cd8b87a57c68a53b03e74a227fc | |
| parent | 26a456cbf1e8abc5c033090b59892b314d7e7142 (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.v | 2 | ||||
| -rw-r--r-- | vernac/metasyntax.ml | 3 |
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 |
