File 2004-Use-map-based-sets.patch of Package erlang

From 5df61852940c7303ce3596e223a95d9b3dd24521 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= <bjorn@erlang.org>
Date: Mon, 13 Sep 2021 16:29:38 +0200
Subject: [PATCH 04/20] Use map-based sets

---
 lib/dialyzer/src/cerl_closurean.erl              | 2 +-
 lib/dialyzer/src/cerl_typean.erl                 | 4 ++--
 lib/dialyzer/src/dialyzer_analysis_callgraph.erl | 6 +++---
 lib/dialyzer/src/dialyzer_callgraph.erl          | 2 +-
 lib/dialyzer/src/dialyzer_cl.erl                 | 4 ++--
 lib/dialyzer/src/dialyzer_codeserver.erl         | 2 +-
 lib/dialyzer/src/dialyzer_dataflow.erl           | 4 ++--
 lib/dialyzer/src/dialyzer_dep.erl                | 4 ++--
 lib/dialyzer/src/dialyzer_typesig.erl            | 2 +-
 9 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/lib/dialyzer/src/cerl_closurean.erl b/lib/dialyzer/src/cerl_closurean.erl
index 55dcfeed1d..e4718cb819 100644
--- a/lib/dialyzer/src/cerl_closurean.erl
+++ b/lib/dialyzer/src/cerl_closurean.erl
@@ -763,7 +763,7 @@ queue__get({In, _}) ->
 %% The work list - a queue without repeated elements.
 
 init_work() ->
-    {queue__new(), sets:new()}.
+    {queue__new(), sets:new([{version, 2}])}.
 
 add_work(Ls, {Q, Set}) ->
     add_work(Ls, Q, Set).
diff --git a/lib/dialyzer/src/cerl_typean.erl b/lib/dialyzer/src/cerl_typean.erl
index 3deb4af3e1..b0e5c10d7d 100644
--- a/lib/dialyzer/src/cerl_typean.erl
+++ b/lib/dialyzer/src/cerl_typean.erl
@@ -268,7 +268,7 @@ analyze(Tree, Limit, Esc0, Dep0, Par) ->
     %% receive any values as inputs. Also add an extra dependency edge
     %% from each fun-expression label to its parent fun-expression.
 %%%     io:fwrite("Escape: ~p.\n",[Esc0]),
-    Esc = sets:from_list(Esc0),
+    Esc = sets:from_list(Esc0, [{version, 2}]),
     Any = t_any(),
     None = t_none(),
     Funs0 = dict:new(),
@@ -828,7 +828,7 @@ queue__get({In, _}) ->
 %% The work list - a queue without repeated elements.
 
 init_work() ->
-    {queue__put(external, queue__new()), sets:new()}.
+    {queue__put(external, queue__new()), sets:new([{version, 2}])}.
 
 add_work(Ls, {Q, Set}) ->
     add_work(Ls, Q, Set).
diff --git a/lib/dialyzer/src/dialyzer_analysis_callgraph.erl b/lib/dialyzer/src/dialyzer_analysis_callgraph.erl
index 898ed26daf..ea3770270d 100644
--- a/lib/dialyzer/src/dialyzer_analysis_callgraph.erl
+++ b/lib/dialyzer/src/dialyzer_analysis_callgraph.erl
@@ -143,7 +143,7 @@ analysis_start(Parent, Analysis, LegalWarnings) ->
   Plt1 = dialyzer_plt:insert_callbacks(Plt1_a, NewCServer),
   State1 = State#analysis_state{codeserver = NewCServer, plt = Plt1},
   Exports = dialyzer_codeserver:get_exports(NewCServer),
-  NonExports = sets:subtract(sets:from_list(AllNodes), Exports),
+  NonExports = sets:subtract(sets:from_list(AllNodes, [{version, 2}]), Exports),
   NonExportsList = sets:to_list(NonExports),
   NewCallgraph =
     case Analysis#analysis.race_detection of
@@ -382,7 +382,7 @@ cleanup_callgraph(#analysis_state{plt = InitPlt, parent = Parent,
   {BadCalls1, RealExtCalls} =
     if ExtCalls1 =:= [] -> {[], []};
        true ->
-	ModuleSet = sets:from_list(Modules),
+	ModuleSet = sets:from_list(Modules, [{version, 2}]),
 	PltModuleSet = dialyzer_plt:all_modules(InitPlt),
 	AllModules = sets:union(ModuleSet, PltModuleSet),
 	Pred = fun({_From, {M, _F, _A}}) -> sets:is_element(M, AllModules) end,
@@ -475,7 +475,7 @@ get_exported_types_from_core(Core) ->
                                     cerl:concrete(L1) =:= 'export_type'],
   ExpTypes2 = lists:flatten(ExpTypes1),
   M = cerl:atom_val(cerl:module_name(Core)),
-  sets:from_list([{M, F, A} || {F, A} <- ExpTypes2]).
+  sets:from_list([{M, F, A} || {F, A} <- ExpTypes2], [{version, 2}]).
 
 get_exports_from_core(Core) ->
   Tree = cerl:from_records(Core),
diff --git a/lib/dialyzer/src/dialyzer_callgraph.erl b/lib/dialyzer/src/dialyzer_callgraph.erl
index fcf2c9d8af..506a785885 100644
--- a/lib/dialyzer/src/dialyzer_callgraph.erl
+++ b/lib/dialyzer/src/dialyzer_callgraph.erl
@@ -222,7 +222,7 @@ remove_external(#callgraph{digraph = DG} = CG) ->
 
 non_local_calls(#callgraph{digraph = DG}) ->
   Edges = digraph_edges(DG),
-  find_non_local_calls(Edges, sets:new()).
+  find_non_local_calls(Edges, sets:new([{version, 2}])).
 
 -type call_tab() :: sets:set(mfa_call()).
 
diff --git a/lib/dialyzer/src/dialyzer_cl.erl b/lib/dialyzer/src/dialyzer_cl.erl
index 2dd56ebb08..39c4634d74 100644
--- a/lib/dialyzer/src/dialyzer_cl.erl
+++ b/lib/dialyzer/src/dialyzer_cl.erl
@@ -452,8 +452,8 @@ clean_plt(PltFile, RemovedMods) ->
 	    Plt, RemovedMods).
 
 expand_dependent_modules(Md5, DiffMd5, ModDeps) ->
-  ChangedMods = sets:from_list([M || {differ, M} <- DiffMd5]),
-  RemovedMods = sets:from_list([M || {removed, M} <- DiffMd5]),
+  ChangedMods = sets:from_list([M || {differ, M} <- DiffMd5], [{version, 2}]),
+  RemovedMods = sets:from_list([M || {removed, M} <- DiffMd5], [{version, 2}]),
   BigSet = sets:union(ChangedMods, RemovedMods),
   BigList = sets:to_list(BigSet),
   ExpandedSet = expand_dependent_modules_1(BigList, BigSet, ModDeps),
diff --git a/lib/dialyzer/src/dialyzer_codeserver.erl b/lib/dialyzer/src/dialyzer_codeserver.erl
index b25ea791d2..9b8a165dd0 100644
--- a/lib/dialyzer/src/dialyzer_codeserver.erl
+++ b/lib/dialyzer/src/dialyzer_codeserver.erl
@@ -122,7 +122,7 @@ ets_set_insert_list(List, Table) ->
 
 ets_set_to_set(Table) ->
   Fold = fun({E}, Set) -> sets:add_element(E, Set) end,
-  ets:foldl(Fold, sets:new(), Table).
+  ets:foldl(Fold, sets:new([{version, 2}]), Table).
 
 %%--------------------------------------------------------------------
 
diff --git a/lib/dialyzer/src/dialyzer_dataflow.erl b/lib/dialyzer/src/dialyzer_dataflow.erl
index 2323889a51..49353ff945 100644
--- a/lib/dialyzer/src/dialyzer_dataflow.erl
+++ b/lib/dialyzer/src/dialyzer_dataflow.erl
@@ -3093,7 +3093,7 @@ state__new(Callgraph, Codeserver, Tree, Plt, Module, Records) ->
          envs = Env, fun_tab = FunTab, fun_homes = FunHomes, opaques = Opaques,
 	 plt = Plt, races = dialyzer_races:new(), records = Records,
 	 warning_mode = false, warnings = [], work = Work, tree_map = TreeMap,
-	 module = Module, reachable_funs = sets:new()}.
+	 module = Module, reachable_funs = sets:new([{version, 2}])}.
 
 state__warning_mode(#state{warning_mode = WM}) ->
   WM.
@@ -3628,7 +3628,7 @@ renew_race_public_tables([Var], #state{races = Races, callgraph = Callgraph,
 %%% ===========================================================================
 
 init_work(List) ->
-  {List, [], sets:from_list(List)}.
+  {List, [], sets:from_list(List, [{version, 2}])}.
 
 get_work({[], [], _Set}) ->
   none;
diff --git a/lib/dialyzer/src/dialyzer_dep.erl b/lib/dialyzer/src/dialyzer_dep.erl
index 1880e1ee5c..f5885a8567 100644
--- a/lib/dialyzer/src/dialyzer_dep.erl
+++ b/lib/dialyzer/src/dialyzer_dep.erl
@@ -319,10 +319,10 @@ primop(Tree, ArgFuns, State) ->
 -record(set, {set :: sets:set()}).
 
 set__singleton(Val) ->
-  #set{set = sets:add_element(Val, sets:new())}.
+  #set{set = sets:add_element(Val, sets:new([{version, 2}]))}.
 
 set__from_list(List) ->
-  #set{set = sets:from_list(List)}.
+  #set{set = sets:from_list(List, [{version, 2}])}.
 
 set__is_element(_El, none) ->
   false;
diff --git a/lib/dialyzer/src/dialyzer_typesig.erl b/lib/dialyzer/src/dialyzer_typesig.erl
index 8daf5d5b69..aadefb7a94 100644
--- a/lib/dialyzer/src/dialyzer_typesig.erl
+++ b/lib/dialyzer/src/dialyzer_typesig.erl
@@ -181,7 +181,7 @@ analyze_scc(SCC, NextLabel, CallGraph, CServer, Plt, PropTypes, Solvers0) ->
   Solvers = solvers(Solvers0),
   State1 = new_state(SCC, NextLabel, CallGraph, CServer, Plt, PropTypes,
                      Solvers),
-  DefSet = add_def_list(maps:values(State1#state.name_map), sets:new()),
+  DefSet = add_def_list(maps:values(State1#state.name_map), sets:new([{version, 2}])),
   State2 = traverse_scc(SCC, CServer, DefSet, State1),
   State3 = state__finalize(State2),
   Funs = state__scc(State3),
-- 
2.31.1

openSUSE Build Service is sponsored by