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

openSUSE Build Service is sponsored by