File 2012-dialyzer_succ_typings-Break-apart-a-function-into-tw.patch of Package erlang

From b8aa0b7d2de305cbcacbc80039f56b54900ab816 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= <bjorn@erlang.org>
Date: Mon, 13 Sep 2021 12:59:13 +0200
Subject: [PATCH 12/20] dialyzer_succ_typings: Break apart a function into two
 for clarity

---
 lib/dialyzer/src/dialyzer_succ_typings.erl | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/lib/dialyzer/src/dialyzer_succ_typings.erl b/lib/dialyzer/src/dialyzer_succ_typings.erl
index d4b4296e9a..8a5e397070 100644
--- a/lib/dialyzer/src/dialyzer_succ_typings.erl
+++ b/lib/dialyzer/src/dialyzer_succ_typings.erl
@@ -251,8 +251,9 @@ refine_one_module(M, {CodeServer, Callgraph, Plt, _Solvers}) ->
   Records = dialyzer_codeserver:lookup_mod_records(M, CodeServer),
   NewFunTypes =
     dialyzer_dataflow:get_fun_types(ModCode, Plt, Callgraph, CodeServer, Records),
-  {FunMFAContracts, ModOpaques} =
-    prepare_decoration(NewFunTypes, Callgraph, CodeServer),
+
+  FunMFAContracts = get_contracts(NewFunTypes, Callgraph, CodeServer),
+  ModOpaques = get_module_opaques(FunMFAContracts, CodeServer),
   DecoratedFunTypes = decorate_succ_typings(FunMFAContracts, ModOpaques),
   %% ?Debug("NewFunTypes       ~tp\n   ~n", [NewFunTypes]),
   %% ?debug("refine DecoratedFunTypes ~tp\n   ~n", [DecoratedFunTypes]),
@@ -356,8 +357,8 @@ find_succ_types_for_scc(SCC0, {Codeserver, Callgraph, Plt, Solvers}) ->
   BinRel = sofs:from_external(FunTypes, [{id,type}]), %Already sorted.
   FilteredFunTypes = sofs:to_external(sofs:restriction(BinRel, Set)),
 
-  {FunMFAContracts, ModOpaques} =
-    prepare_decoration(FilteredFunTypes, Callgraph, Codeserver),
+  FunMFAContracts = get_contracts(FilteredFunTypes, Callgraph, Codeserver),
+  ModOpaques = get_module_opaques(FunMFAContracts, Codeserver),
   DecoratedFunTypes = decorate_succ_typings(FunMFAContracts, ModOpaques),
 
   %% Check contracts
@@ -385,7 +386,7 @@ find_succ_types_for_scc(SCC0, {Codeserver, Callgraph, Plt, Solvers}) ->
       AllFunKeys
   end.
 
-prepare_decoration(FunTypes, Callgraph, Codeserver) ->
+get_contracts(FunTypes, Callgraph, Codeserver) ->
   F = fun({Label, _Type}=LabelType, Acc) ->
           case dialyzer_callgraph:lookup_name(Label, Callgraph) of
             {ok, MFA} ->
@@ -397,11 +398,11 @@ prepare_decoration(FunTypes, Callgraph, Codeserver) ->
             error -> [{LabelType, no}|Acc]
           end
       end,
-  Contracts = lists:foldl(F, [], orddict:to_list(FunTypes)),
-  ModOpaques =
-    [{M, lookup_opaques(M, Codeserver)} ||
-      M <- lists:usort([M || {_LabelType, {{M, _, _}, _Con}} <- Contracts])],
-  {Contracts, orddict:from_list(ModOpaques)}.
+  lists:foldl(F, [], FunTypes).
+
+get_module_opaques(Contracts, Codeserver) ->
+  OpaqueModules = ordsets:from_list([M || {_LabelType, {{M, _, _}, _Con}} <- Contracts]),
+  [{M, lookup_opaques(M, Codeserver)} || M <- OpaqueModules].
 
 decorate_succ_typings(FunTypesContracts, ModOpaques) ->
   F = fun({{Label, Type}, {{M, _, _}, Contract}}) ->
-- 
2.31.1

openSUSE Build Service is sponsored by