diff options
author | Hans Bolinder <[email protected]> | 2014-05-26 08:56:05 +0200 |
---|---|---|
committer | Hans Bolinder <[email protected]> | 2014-05-26 08:56:05 +0200 |
commit | 11540c517b082ee9be131d9cc96b24a4a5d4c7c8 (patch) | |
tree | 1feafe787add90cc918404ce136ac9de56ebce02 | |
parent | e6c124ad7515f4b50cca8bd7ba4744ec8c1ef09c (diff) | |
parent | 21af711057b5369e54d8eabf2f63eda734f5f259 (diff) | |
download | otp-11540c517b082ee9be131d9cc96b24a4a5d4c7c8.tar.gz otp-11540c517b082ee9be131d9cc96b24a4a5d4c7c8.tar.bz2 otp-11540c517b082ee9be131d9cc96b24a4a5d4c7c8.zip |
Merge branch 'maint'
* maint:
hipe: fix a bug concerning typed record fields
-rw-r--r-- | lib/dialyzer/test/small_SUITE_data/src/remote_field2.erl | 17 | ||||
-rw-r--r-- | lib/hipe/cerl/erl_types.erl | 4 |
2 files changed, 20 insertions, 1 deletions
diff --git a/lib/dialyzer/test/small_SUITE_data/src/remote_field2.erl b/lib/dialyzer/test/small_SUITE_data/src/remote_field2.erl new file mode 100644 index 0000000000..35687e22ec --- /dev/null +++ b/lib/dialyzer/test/small_SUITE_data/src/remote_field2.erl @@ -0,0 +1,17 @@ +-module(remote_field2). + +-export([handle_cast/2]). + +-record(state, {tcp_socket :: inet:socket()}). + +-spec handle_cast(_,_) -> + {noreply,_} | + {stop,{shutdown,connection_closed}, + #state{tcp_socket :: port()}}. +handle_cast({send, Message}, #state{tcp_socket = TCPSocket} = State) -> + case gen_tcp:send(TCPSocket, Message) of + ok -> + {noreply, State}; + {error, closed} -> + {stop, {shutdown, connection_closed}, State} + end. diff --git a/lib/hipe/cerl/erl_types.erl b/lib/hipe/cerl/erl_types.erl index e9e2fd757f..ba55cb0aba 100644 --- a/lib/hipe/cerl/erl_types.erl +++ b/lib/hipe/cerl/erl_types.erl @@ -4373,7 +4373,9 @@ get_mod_record([{FieldName, DeclType}|Left1], [{FieldName, ModType}|Left2], Acc) -> ModTypeNoVars = subst_all_vars_to_any(ModType), case - contains_remote(ModTypeNoVars) orelse t_is_subtype(ModTypeNoVars, DeclType) + contains_remote(ModTypeNoVars) + orelse contains_remote(DeclType) + orelse t_is_subtype(ModTypeNoVars, DeclType) of false -> {error, FieldName}; true -> get_mod_record(Left1, Left2, [{FieldName, ModType}|Acc]) |