File 2241-Don-t-parse-map-update-syntax-in-patterns.patch of Package erlang
From 6804aafc9b45ac73204bd8190eb6599a9045086f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Muska=C5=82a?= <micmus@whatsapp.com>
Date: Thu, 7 Apr 2022 15:24:44 +0100
Subject: [PATCH] Don't parse map update syntax in patterns
This syntax is later rejected by `erl_lint` in:
* https://github.com/erlang/otp/blob/738b597ff5a9489981a71102ae90d05276e1333f/lib/stdlib/src/erl_lint.erl#L1694-L1752
* https://github.com/erlang/otp/blob/738b597ff5a9489981a71102ae90d05276e1333f/lib/stdlib/src/erl_lint.erl#L1886-L1899
This short-circuits the case where such syntax is encontered
to reject it in `erl_parse` early.
This simplifies `erl_parse` slighly and generates less code for it.
It's also consistent with types in `erl_parse` that don't allow the
4-element `map` tuple in patterns:
https://github.com/erlang/otp/blob/738b597ff5a9489981a71102ae90d05276e1333f/lib/stdlib/src/erl_parse.yrl#L834-L835
---
lib/stdlib/src/erl_parse.yrl | 4 ----
1 file changed, 4 deletions(-)
diff --git a/lib/stdlib/src/erl_parse.yrl b/lib/stdlib/src/erl_parse.yrl
index 6878af8886..1fff9ea630 100644
--- a/lib/stdlib/src/erl_parse.yrl
+++ b/lib/stdlib/src/erl_parse.yrl
@@ -281,10 +281,6 @@ pat_expr_max -> '(' pat_expr ')' : '$2'.
map_pat_expr -> '#' map_tuple :
{map, ?anno('$1'),'$2'}.
-map_pat_expr -> pat_expr_max '#' map_tuple :
- {map, ?anno('$2'),'$1','$3'}.
-map_pat_expr -> map_pat_expr '#' map_tuple :
- {map, ?anno('$2'),'$1','$3'}.
record_pat_expr -> '#' atom '.' atom :
{record_index,?anno('$1'),element(3, '$2'),'$4'}.
--
2.34.1