File 0847-v3_core-Handle-combined-with-a-bad-alias-in-patterns.patch of Package erlang

From f397dfadcb686aa0d528d69ed8205d3d6490cd8f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= <bjorn@erlang.org>
Date: Wed, 5 Feb 2020 12:42:49 +0100
Subject: [PATCH 11/13] v3_core: Handle ++ combined with a bad alias in
 patterns

---
 lib/compiler/src/v3_core.erl      | 2 ++
 lib/compiler/test/match_SUITE.erl | 5 +++++
 2 files changed, 7 insertions(+)

diff --git a/lib/compiler/src/v3_core.erl b/lib/compiler/src/v3_core.erl
index 1466e24104..36aa0a3667 100644
--- a/lib/compiler/src/v3_core.erl
+++ b/lib/compiler/src/v3_core.erl
@@ -841,6 +841,8 @@ sanitize({tuple,L,Ps0}) ->
 sanitize({map,L,Ps0}) ->
     Ps = [sanitize(V) || {map_field_exact,_,_,V} <- Ps0],
     {tuple,L,Ps};
+sanitize({op,L,_Name,P1,P2}) ->
+    {tuple,L,[sanitize(P1),sanitize(P2)]};
 sanitize(P) -> P.
 
 make_bool_switch(L, E, V, T, F, #core{in_guard=true}) ->
diff --git a/lib/compiler/test/match_SUITE.erl b/lib/compiler/test/match_SUITE.erl
index ce467622ae..d1da114d3f 100644
--- a/lib/compiler/test/match_SUITE.erl
+++ b/lib/compiler/test/match_SUITE.erl
@@ -255,6 +255,7 @@ non_matching_aliases(_Config) ->
     none = mixed_aliases({a,42}),
     none = mixed_aliases(42),
 
+    {'EXIT',{{badmatch,bar},_}} = (catch plus_plus_prefix()),
     {'EXIT',{{badmatch,42},_}} = (catch nomatch_alias(42)),
     {'EXIT',{{badmatch,job},_}} = (catch entirely()),
     {'EXIT',{{badmatch,associates},_}} = (catch printer()),
@@ -279,8 +280,12 @@ mixed_aliases([X] = #{key:=X}) -> {k,X};
 mixed_aliases([b] = <<X:8>>) -> {b,X};
 mixed_aliases(<<X:8>> = {a,X}) -> {c,X};
 mixed_aliases([X] = <<X:8>>) -> {d,X};
+mixed_aliases([] ++ (foo = [])) -> o;
 mixed_aliases(_) -> none.
 
+plus_plus_prefix() ->
+    [] ++ (foo = []) = bar.
+
 nomatch_alias(I) ->
     {ok={A,B}} = id(I),
     {A,B}.
-- 
2.16.4

openSUSE Build Service is sponsored by