aboutsummaryrefslogtreecommitdiffstats
path: root/lib/compiler
diff options
context:
space:
mode:
authorBjörn-Egil Dahlberg <[email protected]>2014-03-06 14:33:06 +0100
committerBjörn-Egil Dahlberg <[email protected]>2014-03-06 14:33:06 +0100
commit47b0b0b94f82e6ae3d87d8d43ddf9a4846932d97 (patch)
tree722e3637ebf6c3d02c30f25403fea75194cdd69a /lib/compiler
parent1c48db25372a2bc96b5ce643913f95082c550b0c (diff)
parent55e4051bbe8f9790e19cf403bdd736a56e512510 (diff)
downloadotp-47b0b0b94f82e6ae3d87d8d43ddf9a4846932d97.tar.gz
otp-47b0b0b94f82e6ae3d87d8d43ddf9a4846932d97.tar.bz2
otp-47b0b0b94f82e6ae3d87d8d43ddf9a4846932d97.zip
Merge branch 'nox/maps-beam_jump'
* nox/maps-beam_jump: Properly check label use in get_map_elements in beam_jump
Diffstat (limited to 'lib/compiler')
-rw-r--r--lib/compiler/src/beam_jump.erl1
-rw-r--r--lib/compiler/test/map_SUITE.erl6
2 files changed, 7 insertions, 0 deletions
diff --git a/lib/compiler/src/beam_jump.erl b/lib/compiler/src/beam_jump.erl
index 0fc8d45c80..100acaede3 100644
--- a/lib/compiler/src/beam_jump.erl
+++ b/lib/compiler/src/beam_jump.erl
@@ -451,6 +451,7 @@ is_label_used_in_2({set,_,_,Info}, Lbl) ->
{put_tuple,_} -> false;
{get_tuple_element,_} -> false;
{set_tuple_element,_} -> false;
+ {get_map_elements,{f,F}} -> F =:= Lbl;
{line,_} -> false;
_ when is_atom(Info) -> false
end.
diff --git a/lib/compiler/test/map_SUITE.erl b/lib/compiler/test/map_SUITE.erl
index 59d70bb221..4fc4768802 100644
--- a/lib/compiler/test/map_SUITE.erl
+++ b/lib/compiler/test/map_SUITE.erl
@@ -298,6 +298,8 @@ t_guard_bifs(Config) when is_list(Config) ->
false = map_guard_body({}),
true = map_guard_pattern(#{a=>1, <<"hi">> => "hi" }),
false = map_guard_pattern("list"),
+ true = map_guard_tautology(),
+ true = map_guard_ill_map_size(),
ok.
map_guard_empty() when is_map(#{}); false -> true.
@@ -310,6 +312,10 @@ map_guard_body(M) -> is_map(M).
map_guard_pattern(#{}) -> true;
map_guard_pattern(_) -> false.
+map_guard_tautology() when #{} =:= #{}; true -> true.
+
+map_guard_ill_map_size() when true; map_size(0) -> true.
+
t_guard_sequence(Config) when is_list(Config) ->
{1, "a"} = map_guard_sequence_1(#{seq=>1,val=>id("a")}),
{2, "b"} = map_guard_sequence_1(#{seq=>2,val=>id("b")}),