Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:24
erlang
2012-dialyzer_succ_typings-Break-apart-a-functi...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
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
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor