aboutsummaryrefslogtreecommitdiffstats
path: root/lib/hipe/cerl
diff options
context:
space:
mode:
authorHans Bolinder <[email protected]>2017-11-28 12:37:42 +0100
committerHans Bolinder <[email protected]>2017-11-28 12:37:42 +0100
commit59ca0ddeb08d6ec433fa50eaa0a7175a09766b83 (patch)
tree2bf6f2d981a75ec23bfa4c459fb0346c2825de06 /lib/hipe/cerl
parent56eecdc8d0a0ebe7eb6b6d180e1854a72ddf82ac (diff)
parent985f5a1fae38caed84cde8bc09f6f60e91710f20 (diff)
downloadotp-59ca0ddeb08d6ec433fa50eaa0a7175a09766b83.tar.gz
otp-59ca0ddeb08d6ec433fa50eaa0a7175a09766b83.tar.bz2
otp-59ca0ddeb08d6ec433fa50eaa0a7175a09766b83.zip
Merge branch 'hasse/dialyzer/maps_anon_fun/OTP-14743' into maint
* hasse/dialyzer/maps_anon_fun/OTP-14743: dialyzer: Extend the map implementation's handling of ?unit dialyzer: Use string:find() instead of string:str()
Diffstat (limited to 'lib/hipe/cerl')
-rw-r--r--lib/hipe/cerl/erl_types.erl4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/hipe/cerl/erl_types.erl b/lib/hipe/cerl/erl_types.erl
index abb6c259f6..4e0f93212d 100644
--- a/lib/hipe/cerl/erl_types.erl
+++ b/lib/hipe/cerl/erl_types.erl
@@ -1877,6 +1877,7 @@ t_map_put(KV, Map, Opaques) ->
%% Key and Value are *not* unopaqued, but the map is
map_put(_, ?none, _) -> ?none;
+map_put(_, ?unit, _) -> ?none;
map_put({Key, Value}, ?map(Pairs,DefK,DefV), Opaques) ->
case t_is_none_or_unit(Key) orelse t_is_none_or_unit(Value) of
true -> ?none;
@@ -1902,6 +1903,7 @@ t_map_update(KV, Map) ->
-spec t_map_update({erl_type(), erl_type()}, erl_type(), opaques()) -> erl_type().
t_map_update(_, ?none, _) -> ?none;
+t_map_update(_, ?unit, _) -> ?none;
t_map_update(KV={Key, _}, M, Opaques) ->
case t_is_subtype(t_atom('true'), t_map_is_key(Key, M, Opaques)) of
false -> ?none;
@@ -1922,6 +1924,7 @@ t_map_get(Key, Map, Opaques) ->
end).
map_get(_, ?none) -> ?none;
+map_get(_, ?unit) -> ?none;
map_get(Key, ?map(Pairs, DefK, DefV)) ->
DefRes =
case t_do_overlap(DefK, Key) of
@@ -1957,6 +1960,7 @@ t_map_is_key(Key, Map, Opaques) ->
end).
map_is_key(_, ?none) -> ?none;
+map_is_key(_, ?unit) -> ?none;
map_is_key(Key, ?map(Pairs, DefK, _DefV)) ->
case is_singleton_type(Key) of
true ->