diff options
author | Anthony Ramine <[email protected]> | 2014-03-05 00:00:01 +0100 |
---|---|---|
committer | Anthony Ramine <[email protected]> | 2014-03-05 00:00:01 +0100 |
commit | 55e4051bbe8f9790e19cf403bdd736a56e512510 (patch) | |
tree | c02cbb50b39529648c634cc4b90fcea2d268e2c1 /lib/compiler | |
parent | c199bd2923e7d733e60beb9bd27b3852cbb2e699 (diff) | |
download | otp-55e4051bbe8f9790e19cf403bdd736a56e512510.tar.gz otp-55e4051bbe8f9790e19cf403bdd736a56e512510.tar.bz2 otp-55e4051bbe8f9790e19cf403bdd736a56e512510.zip |
Properly check label use in get_map_elements in beam_jump
Reported-by: Ulf Norell
Diffstat (limited to 'lib/compiler')
-rw-r--r-- | lib/compiler/src/beam_jump.erl | 1 | ||||
-rw-r--r-- | lib/compiler/test/map_SUITE.erl | 6 |
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 3639192a51..427883d59b 100644 --- a/lib/compiler/test/map_SUITE.erl +++ b/lib/compiler/test/map_SUITE.erl @@ -293,6 +293,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. @@ -305,6 +307,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")}), |