File 2782-Fix-type-violations.patch of Package erlang
From 2e4b376bc2ab96a921ac50784dae124b7fedc911 Mon Sep 17 00:00:00 2001
From: Raimo Niskanen <raimo@erlang.org>
Date: Fri, 18 Feb 2022 16:22:29 +0100
Subject: [PATCH 2/8] Fix type violations
---
lib/kernel/src/global.erl | 33 +++++++++++++++++----------------
lib/kernel/src/logger_olp.erl | 8 +++++---
lib/kernel/src/rpc.erl | 30 ++++++++++++++++++++----------
3 files changed, 42 insertions(+), 29 deletions(-)
diff --git a/lib/kernel/src/global.erl b/lib/kernel/src/global.erl
index 03f6c0aa94..98334ef0f2 100644
--- a/lib/kernel/src/global.erl
+++ b/lib/kernel/src/global.erl
@@ -241,9 +241,9 @@ register_name(Name, Pid, Method0) when is_pid(Pid) ->
Fun = fun(Nodes) ->
case (where(Name) =:= undefined) andalso check_dupname(Name, Pid) of
true ->
- gen_server:multi_call(Nodes,
- global_name_server,
- {register, Name, Pid, Method}),
+ _ = gen_server:multi_call(Nodes,
+ global_name_server,
+ {register, Name, Pid, Method}),
yes;
_ ->
no
@@ -276,9 +276,9 @@ unregister_name(Name) ->
ok;
_ ->
Fun = fun(Nodes) ->
- gen_server:multi_call(Nodes,
- global_name_server,
- {unregister, Name}),
+ _ = gen_server:multi_call(Nodes,
+ global_name_server,
+ {unregister, Name}),
ok
end,
?trace({unregister_name, self(), Name}),
@@ -298,9 +298,9 @@ re_register_name(Name, Pid) when is_pid(Pid) ->
re_register_name(Name, Pid, Method0) when is_pid(Pid) ->
Method = allow_tuple_fun(Method0),
Fun = fun(Nodes) ->
- gen_server:multi_call(Nodes,
- global_name_server,
- {register, Name, Pid, Method}),
+ _ = gen_server:multi_call(Nodes,
+ global_name_server,
+ {register, Name, Pid, Method}),
yes
end,
?trace({re_register_name, self(), Name, Pid, Method}),
@@ -334,10 +334,10 @@ register_name_external(Name, Pid, Method) when is_pid(Pid) ->
Fun = fun(Nodes) ->
case where(Name) of
undefined ->
- gen_server:multi_call(Nodes,
- global_name_server,
- {register_ext, Name, Pid,
- Method, node()}),
+ _ = gen_server:multi_call(Nodes,
+ global_name_server,
+ {register_ext, Name, Pid,
+ Method, node()}),
yes;
_Pid -> no
end
@@ -398,7 +398,7 @@ del_lock(Id) ->
Nodes :: [node()].
del_lock({_ResourceId, _LockRequesterId} = Id, Nodes) ->
?trace({del_lock, {me,self()}, Id, {nodes,Nodes}}),
- gen_server:multi_call(Nodes, global_name_server, {del_lock, Id}),
+ _ = gen_server:multi_call(Nodes, global_name_server, {del_lock, Id}),
true.
-type trans_fun() :: function() | {module(), atom()}.
@@ -1058,7 +1058,8 @@ check_replies([{_Node, false=Reply} | _T], _Id, [_]) ->
check_replies([{_Node, false=Reply} | _T], Id, Replies) ->
TrueReplyNodes = [N || {N, true} <- Replies],
?trace({check_replies, {true_reply_nodes, TrueReplyNodes}}),
- gen_server:multi_call(TrueReplyNodes, global_name_server, {del_lock, Id}),
+ _ = gen_server:multi_call(
+ TrueReplyNodes, global_name_server, {del_lock, Id}),
Reply;
check_replies([], _Id, _Replies) ->
true.
diff --git a/lib/kernel/src/logger_olp.erl b/lib/kernel/src/logger_olp.erl
index 068fbe447b..1379f8cf54 100644
--- a/lib/kernel/src/logger_olp.erl
+++ b/lib/kernel/src/logger_olp.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 2017-2020. All Rights Reserved.
+%% Copyright Ericsson AB 2017-2022. All Rights Reserved.
%%
%% Licensed under the Apache License, Version 2.0 (the "License");
%% you may not use this file except in compliance with the License.
@@ -193,11 +193,13 @@ init([Name,Module,Args,Options]) ->
gen_server:enter_loop(?MODULE, [], State);
Error ->
unregister(Name),
- proc_lib:init_ack(Error)
+ proc_lib:init_ack(Error),
+ ignore %% Just to shut Dialyzer up - ignored
catch
_:Error ->
unregister(Name),
- proc_lib:init_ack(Error)
+ proc_lib:init_ack(Error),
+ ignore %% Just to shut Dialyzer up - ignored
end.
%% This is the synchronous load event.
diff --git a/lib/kernel/src/rpc.erl b/lib/kernel/src/rpc.erl
index 52de9527ef..c3b4b8f1b1 100644
--- a/lib/kernel/src/rpc.erl
+++ b/lib/kernel/src/rpc.erl
@@ -1,7 +1,7 @@
%%
%% %CopyrightBegin%
%%
-%% Copyright Ericsson AB 1996-2021. All Rights Reserved.
+%% Copyright Ericsson AB 1996-2022. All Rights Reserved.
%%
%% Licensed under the Apache License, Version 2.0 (the "License");
%% you may not use this file except in compliance with the License.
@@ -119,10 +119,13 @@ init([]) ->
process_flag(trap_exit, true),
{ok, #{nodes_observer => start_nodes_observer()}}.
--spec handle_call(term(), term(), state()) ->
- {'noreply', state()} |
- {'reply', term(), state()} |
- {'stop', 'normal', 'stopped', state()}.
+-spec handle_call(
+ term(),
+ gen_server:from() | {?NAME,term()},
+ state()) ->
+ {'noreply', state()} |
+ {'reply', term(), state()} |
+ {'stop', 'normal', 'stopped', state()}.
handle_call({call, Mod, Fun, Args, Gleader}, To, S) ->
%% Spawn not to block the rex server.
@@ -142,7 +145,7 @@ handle_call({call, Mod, Fun, Args, Gleader}, To, S) ->
Ref -> ok
end;
_ ->
- gen_server:reply(To, Reply)
+ reply(To, Reply)
end
end,
try
@@ -190,7 +193,7 @@ handle_info({'DOWN', M, process, _, Reason}, S) ->
undefined ->
{noreply, S};
{_, _} = To ->
- gen_server:reply(To, {badrpc, {'EXIT', Reason}}),
+ reply(To, {badrpc, {'EXIT', Reason}}),
{noreply, maps:remove(M, S)}
end;
handle_info({From, {sbcast, Name, Msg}}, S) ->
@@ -211,7 +214,7 @@ handle_info({From, {send, Name, Msg}}, S) ->
{noreply, S};
handle_info({From, {call, Mod, Fun, Args, Gleader}}, S) ->
%% Special for hidden C node's, uugh ...
- To = {From, ?NAME},
+ To = {?NAME, From},
NewGleader =
case Gleader of
send_stdout_to_caller ->
@@ -224,7 +227,7 @@ handle_info({From, {call, Mod, Fun, Args, Gleader}}, S) ->
{noreply, _NewS} = Return ->
Return;
{reply, Reply, NewS} ->
- gen_server:reply(To, Reply),
+ reply(To, Reply),
{noreply, NewS}
end;
handle_info({From, features_request}, S) ->
@@ -246,6 +249,13 @@ code_change(_, S, _) ->
%% RPC aid functions ....
+reply({?NAME, From}, Reply) ->
+ From ! {?NAME, Reply},
+ ok;
+reply({From, _} = To, Reply) when is_pid(From) ->
+ gen_server:reply(To, Reply).
+
+
execute_call(Mod, Fun, Args) ->
try
{return, Return} = erpc:execute_call(Mod, Fun, Args),
@@ -894,7 +904,7 @@ cnode_call_group_leader_loop(State) ->
From ! {io_reply, ReplyAs, Reply},
cnode_call_group_leader_loop(NewState);
{stop, StopRequesterPid, Ref, To, Reply} ->
- gen_server:reply(To, Reply),
+ reply(To, Reply),
StopRequesterPid ! Ref,
ok;
_Unknown ->
--
2.34.1