File 2574-Remove-old-catch-syntax.patch of Package erlang

From 86d7de4dc0ef28a78d36392af4e1ae04b70f720a Mon Sep 17 00:00:00 2001
From: Dan Gudmundsson <dgud@erlang.org>
Date: Fri, 13 Dec 2019 14:08:58 +0100
Subject: [PATCH 2/3] Remove old catch syntax

---
 lib/mnesia/src/mnesia.erl         |  2 +-
 lib/mnesia/src/mnesia.hrl         |  2 ++
 lib/mnesia/src/mnesia_event.erl   |  8 +++---
 lib/mnesia/src/mnesia_lib.erl     | 56 +++++++++++++++++++--------------------
 lib/mnesia/src/mnesia_loader.erl  |  4 +--
 lib/mnesia/src/mnesia_monitor.erl |  2 +-
 lib/mnesia/src/mnesia_schema.erl  |  2 +-
 lib/mnesia/src/mnesia_sp.erl      | 13 +++++----
 lib/mnesia/src/mnesia_sup.erl     |  2 +-
 9 files changed, 49 insertions(+), 42 deletions(-)

diff --git a/lib/mnesia/src/mnesia.erl b/lib/mnesia/src/mnesia.erl
index aacea9a778..17b1785837 100644
--- a/lib/mnesia/src/mnesia.erl
+++ b/lib/mnesia/src/mnesia.erl
@@ -2172,7 +2172,7 @@ raw_table_info(Tab, Item) ->
 	    disc_only_copies ->
 		info_reply(dets:info(Tab, Item), Tab, Item);
             {ext, Alias, Mod} ->
-                info_reply(catch Mod:info(Alias, Tab, Item), Tab, Item);
+                info_reply(Mod:info(Alias, Tab, Item), Tab, Item);
 	    unknown ->
 		bad_info_reply(Tab, Item)
 	end
diff --git a/lib/mnesia/src/mnesia.hrl b/lib/mnesia/src/mnesia.hrl
index fe48a6fe3d..4ddfc17a06 100644
--- a/lib/mnesia/src/mnesia.hrl
+++ b/lib/mnesia/src/mnesia.hrl
@@ -44,6 +44,8 @@
 -define(SAFE(OP), try (OP) catch error:_ -> ok end).
 -define(CATCH(OP), try (OP) catch _:_Reason -> {'EXIT', _Reason} end).
 
+-define(CATCHU(OP), fun() -> try (OP) catch _:_Reason -> {'EXIT', _Reason} end end()).
+
 -define(catch_val(Var), (try ?ets_lookup_element(mnesia_gvar, Var, 2)
 			 catch error:_ -> {'EXIT', {badarg, []}} end)).
 
diff --git a/lib/mnesia/src/mnesia_event.erl b/lib/mnesia/src/mnesia_event.erl
index 49b3990086..0e96d5c73f 100644
--- a/lib/mnesia/src/mnesia_event.erl
+++ b/lib/mnesia/src/mnesia_event.erl
@@ -36,6 +36,8 @@
 		dumped_core = false,  %% only dump fatal core once
 		args}).
 
+-include("mnesia.hrl").
+
 %%%----------------------------------------------------------------
 %%% Callback functions from gen_server
 %%%----------------------------------------------------------------
@@ -131,14 +133,14 @@ handle_system_event({mnesia_down, Node}, State) ->
 			"must be restarted. Forcing shutdown "
 			"after mnesia_down from ~p...~n",
 		    report_fatal(Msg, [Node], nocore, State#state.dumped_core),
-		    catch exit(whereis(mnesia_monitor), fatal),
+		    ?SAFE(exit(whereis(mnesia_monitor), fatal)),
 		    {ok, State};
 		{UserMod, UserFunc} ->
 		    Msg = "Warning: A fallback is installed and Mnesia got mnesia_down "
 			"from ~p. ~n",
 		    report_info(Msg, [Node]),
-		    case catch apply(UserMod, UserFunc, [Node]) of
-			{'EXIT', {undef, _Reason}} ->
+		    case ?CATCH(apply(UserMod, UserFunc, [Node])) of
+			{'EXIT', {undef, _R}} ->
 			    %% Backward compatibility
 			    apply(UserMod, UserFunc, []);
 			{'EXIT', Reason} ->
diff --git a/lib/mnesia/src/mnesia_lib.erl b/lib/mnesia/src/mnesia_lib.erl
index 6abc05fade..dd28686f78 100644
--- a/lib/mnesia/src/mnesia_lib.erl
+++ b/lib/mnesia/src/mnesia_lib.erl
@@ -675,41 +675,41 @@ mkcore(CrashInfo) ->
 %   dbg_out("Making a Mnesia core dump...~p~n", [CrashInfo]),
     Nodes = [node() |nodes()],
     %%TidLocks = (catch ets:tab2list(mnesia_tid_locks)),
-    HeldLocks = (catch mnesia:system_info(held_locks)),
+    HeldLocks = ?CATCHU(mnesia:system_info(held_locks)),
     Core = [
 	    CrashInfo,
 	    {time, {date(), time()}},
 	    {self, proc_dbg_info(self())},
-	    {nodes, catch rpc:multicall(Nodes, ?MODULE, get_node_number, [])},
-	    {applications, catch lists:sort(application:loaded_applications())},
-	    {flags, catch init:get_arguments()},
-	    {code_path, catch code:get_path()},
-	    {code_loaded, catch lists:sort(code:all_loaded())},
-	    {etsinfo, catch ets_info(ets:all())},
-
-	    {version, catch mnesia:system_info(version)},
-	    {schema, catch ets:tab2list(schema)},
-	    {gvar, catch ets:tab2list(mnesia_gvar)},
-	    {master_nodes, catch mnesia_recover:get_master_node_info()},
-
-	    {processes, catch procs()},
-	    {relatives, catch relatives()},
-	    {workers, catch workers(mnesia_controller:get_workers(2000))},
-	    {locking_procs, catch locking_procs(HeldLocks)},
+	    {nodes, ?CATCHU(rpc:multicall(Nodes, ?MODULE, get_node_number, []))},
+	    {applications, ?CATCHU(lists:sort(application:loaded_applications()))},
+	    {flags, ?CATCHU(init:get_arguments())},
+	    {code_path, ?CATCHU(code:get_path())},
+	    {code_loaded, ?CATCHU(lists:sort(code:all_loaded()))},
+	    {etsinfo, ?CATCHU(ets_info(ets:all()))},
+
+	    {version, ?CATCHU(mnesia:system_info(version))},
+	    {schema, ?CATCHU(ets:tab2list(schema))},
+	    {gvar, ?CATCHU(ets:tab2list(mnesia_gvar))},
+	    {master_nodes, ?CATCHU(mnesia_recover:get_master_node_info())},
+
+	    {processes, ?CATCHU(procs())},
+	    {relatives, ?CATCHU(relatives())},
+	    {workers, ?CATCHU(workers(mnesia_controller:get_workers(2000)))},
+	    {locking_procs, ?CATCHU(locking_procs(HeldLocks))},
 
 	    {held_locks, HeldLocks},
-	    {lock_queue, catch mnesia:system_info(lock_queue)},
-	    {load_info, catch mnesia_controller:get_info(2000)},
-	    {trans_info, catch mnesia_tm:get_info(2000)},
+	    {lock_queue, ?CATCHU(mnesia:system_info(lock_queue))},
+	    {load_info, ?CATCHU(mnesia_controller:get_info(2000))},
+	    {trans_info, ?CATCHU(mnesia_tm:get_info(2000))},
 	    	    
-	    {schema_file, catch file:read_file(tab2dat(schema))},
-	    {dir_info, catch dir_info()},
-	    {logfile, catch {ok, read_log_files()}}
+	    {schema_file, ?CATCHU(file:read_file(tab2dat(schema)))},
+	    {dir_info, ?CATCHU(dir_info())},
+	    {logfile, ?CATCHU({ok, read_log_files()})}
 	   ],
     term_to_binary(Core).
 
 procs() ->
-    Fun = fun(P) -> {P, (catch lists:zf(fun proc_info/1, process_info(P)))} end,
+    Fun = fun(P) -> {P, (?CATCH(lists:zf(fun proc_info/1, process_info(P))))} end,
     lists:map(Fun, processes()).
 
 proc_info({registered_name, Val}) -> {true, Val};
@@ -730,7 +730,7 @@ have_majority(_Tab, AllNodes, HaveNodes) ->
     length(Present) > length(Missing).
 
 read_log_files() ->
-    [{F, catch file:read_file(F)} || F <- mnesia_log:log_files()].
+    [{F, ?CATCH(file:read_file(F))} || F <- mnesia_log:log_files()].
 
 dir_info() ->
     {ok, Cwd} = file:get_cwd(),
@@ -739,7 +739,7 @@ dir_info() ->
      {mnesia_dir, Dir, file:read_file_info(Dir)}] ++
     case file:list_dir(Dir) of
 	{ok, Files} ->
-	    [{mnesia_file, F, catch file:read_file_info(dir(F))} || F <- Files];
+	    [{mnesia_file, F, ?CATCH(file:read_file_info(dir(F)))} || F <- Files];
 	Other ->
 	    [Other]
     end.
@@ -854,7 +854,7 @@ vcore(Bin) when is_binary(Bin) ->
     Core = binary_to_term(Bin),
     Fun = fun({Item, Info}) ->
 		  show("***** ~tp *****~n", [Item]),
-		  case catch vcore_elem({Item, Info}) of
+		  case ?CATCHU(vcore_elem({Item, Info})) of
 		      {'EXIT', Reason} ->
 			  show("{'EXIT', ~tp}~n", [Reason]);
 		      _ -> ok
@@ -1446,7 +1446,7 @@ eval_debug_fun(FunId, EvalContext, EvalFile, EvalLine) ->
 			ok
 		end
 	end
-    catch error ->
+    catch _:_ ->
 	    ok
     end.
 	
diff --git a/lib/mnesia/src/mnesia_loader.erl b/lib/mnesia/src/mnesia_loader.erl
index 2cdae0c906..c34a83bb6c 100644
--- a/lib/mnesia/src/mnesia_loader.erl
+++ b/lib/mnesia/src/mnesia_loader.erl
@@ -654,8 +654,8 @@ down(Tab, Storage) ->
 	    mnesia_lib:dets_sync_close(Tab),
 	    file:delete(TmpFile);
         {ext, Alias, Mod} ->
-	    catch Mod:close_table(Alias, Tab),
-            catch Mod:delete_table(Alias, Tab)
+	    ?CATCHU(Mod:close_table(Alias, Tab)),
+            ?CATCHU(Mod:delete_table(Alias, Tab))
     end,
     mnesia_checkpoint:tm_del_copy(Tab, node()),
     mnesia_controller:sync_del_table_copy_whereabouts(Tab, node()),
diff --git a/lib/mnesia/src/mnesia_monitor.erl b/lib/mnesia/src/mnesia_monitor.erl
index d1c22f2d58..5ce1439298 100644
--- a/lib/mnesia/src/mnesia_monitor.erl
+++ b/lib/mnesia/src/mnesia_monitor.erl
@@ -409,7 +409,7 @@ handle_call({unsafe_close_log, Name}, _From, State) ->
     {reply, ok, State};
 
 handle_call({unsafe_create_external, Tab, Alias, Mod, Cs}, _From, State) ->
-    case catch Mod:create_table(Alias, Tab, mnesia_schema:cs2list(Cs)) of
+    case ?CATCH(Mod:create_table(Alias, Tab, mnesia_schema:cs2list(Cs))) of
 	{'EXIT', ExitReason} ->
 	    {reply, {error, ExitReason}, State};
 	Reply ->
diff --git a/lib/mnesia/src/mnesia_schema.erl b/lib/mnesia/src/mnesia_schema.erl
index d0f5d0e07b..4a65f3996a 100644
--- a/lib/mnesia/src/mnesia_schema.erl
+++ b/lib/mnesia/src/mnesia_schema.erl
@@ -1271,7 +1271,7 @@ verify_nodes(Cs) ->
     lists:foreach(AtomCheck, Nodes).
 
 verify(Expected, Fun, Error) when is_function(Fun) ->
-    do_verify(Expected, catch Fun(), Error);
+    do_verify(Expected, ?CATCH(Fun()), Error);
 verify(Expected, Actual, Error) ->
     do_verify(Expected, Actual, Error).
 
diff --git a/lib/mnesia/src/mnesia_sp.erl b/lib/mnesia/src/mnesia_sp.erl
index d65c659690..0c56107c41 100644
--- a/lib/mnesia/src/mnesia_sp.erl
+++ b/lib/mnesia/src/mnesia_sp.erl
@@ -30,12 +30,15 @@
 
 init_proc(Who, Mod, Fun, Args) ->
     mnesia_lib:verbose("~p starting: ~p~n", [Who, self()]),
-    case catch apply(Mod, Fun, Args) of
-	{'EXIT', Reason} ->
-	    mnesia_monitor:terminate_proc(Who, Reason, Args),
+    try
+        apply(Mod, Fun, Args)
+    catch
+        exit:Reason when Reason =:= shutdown; Reason =:= kill; Reason =:= normal ->
+            mnesia_monitor:terminate_proc(Who, Reason, Args),
 	    exit(Reason);
-	Other ->
-	    Other
+        _:Reason:ST ->
+	    mnesia_monitor:terminate_proc(Who, {Reason,ST}, Args),
+	    exit(Reason)
     end.
 
 
diff --git a/lib/mnesia/src/mnesia_sup.erl b/lib/mnesia/src/mnesia_sup.erl
index 3e5792900b..fd5156d2a4 100644
--- a/lib/mnesia/src/mnesia_sup.erl
+++ b/lib/mnesia/src/mnesia_sup.erl
@@ -88,7 +88,7 @@ add_event_handler() ->
 
 kill() ->
     Mnesia = [mnesia_fallback | mnesia:ms()],
-    Kill = fun(Name) -> catch exit(whereis(Name), kill) end,
+    Kill = fun(Name) -> try exit(whereis(Name), kill) catch _:_ -> ok end end,
     lists:foreach(Kill, Mnesia),
     lists:foreach(fun ensure_dead/1, Mnesia),
     timer:sleep(10),
-- 
2.16.4

openSUSE Build Service is sponsored by