summaryrefslogtreecommitdiff
path: root/lib/dialyzer
diff options
context:
space:
mode:
authorKiko Fernandez-Reyes <kiko@erlang.org>2023-03-10 09:59:05 +0100
committerKiko Fernandez-Reyes <kiko@erlang.org>2023-03-13 15:42:41 +0100
commit72cf16fe5aaff4f98931c52f2cc7d272107c8b16 (patch)
treef3238dff2cf94a8e59a7924814b1bcac76e8adb3 /lib/dialyzer
parent8c9f8942e80442f9db7d0908d5c27c90843c19e8 (diff)
downloaderlang-72cf16fe5aaff4f98931c52f2cc7d272107c8b16.tar.gz
dialyzer: remove creation of object
Diffstat (limited to 'lib/dialyzer')
-rw-r--r--lib/dialyzer/src/dialyzer_analysis_callgraph.erl24
-rw-r--r--lib/dialyzer/src/dialyzer_cl.erl4
-rw-r--r--lib/dialyzer/src/dialyzer_codeserver.erl48
3 files changed, 41 insertions, 35 deletions
diff --git a/lib/dialyzer/src/dialyzer_analysis_callgraph.erl b/lib/dialyzer/src/dialyzer_analysis_callgraph.erl
index 65fd069484..6d163c2cf9 100644
--- a/lib/dialyzer/src/dialyzer_analysis_callgraph.erl
+++ b/lib/dialyzer/src/dialyzer_analysis_callgraph.erl
@@ -152,18 +152,18 @@ analysis_start(Parent, Analysis, LegalWarnings) ->
send_analysis_done(Parent, Plt4, DocPlt).
create_analysis_state({Plt, Analysis, Parent}, LegalWarnings, CServer) ->
- #analysis_state{ codeserver = CServer
- , analysis_type = Analysis#analysis.type
- , defines = Analysis#analysis.defines
- , doc_plt = Analysis#analysis.doc_plt
- , include_dirs = Analysis#analysis.include_dirs
- , plt = Plt
- , parent = Parent
- , legal_warnings = LegalWarnings
- , start_from = Analysis#analysis.start_from
- , use_contracts = Analysis#analysis.use_contracts
- , timing_server = Analysis#analysis.timing_server
- , solvers = Analysis#analysis.solvers }.
+ #analysis_state{ codeserver = CServer,
+ analysis_type = Analysis#analysis.type,
+ defines = Analysis#analysis.defines,
+ doc_plt = Analysis#analysis.doc_plt,
+ include_dirs = Analysis#analysis.include_dirs,
+ plt = Plt,
+ parent = Parent,
+ legal_warnings = LegalWarnings,
+ start_from = Analysis#analysis.start_from,
+ use_contracts = Analysis#analysis.use_contracts,
+ timing_server = Analysis#analysis.timing_server,
+ solvers = Analysis#analysis.solvers }.
remote_type_postprocessing(TmpCServer, Args) ->
diff --git a/lib/dialyzer/src/dialyzer_cl.erl b/lib/dialyzer/src/dialyzer_cl.erl
index 4eb60d38c7..732873056e 100644
--- a/lib/dialyzer/src/dialyzer_cl.erl
+++ b/lib/dialyzer/src/dialyzer_cl.erl
@@ -685,8 +685,8 @@ unknown_warnings_by_module(#cl_state{legal_warnings = LegalWarnings} = State) ->
unknown_functions(#cl_state{ external_calls = Calls
, code_server = CodeServer}) ->
- [{Mod, {?WARN_UNKNOWN, WarningInfo, {unknown_function, MFA}}} || {MFA, WarningInfo = {_, _, {Mod, _, _}=WarnMFA}} <- Calls,
- {ok, [{nowarn_function, func}]} =/= dialyzer_codeserver:lookup_meta_info(WarnMFA, CodeServer)].
+ [{Mod, {?WARN_UNKNOWN, WarningInfo, {unknown_function, MFA}}} || { MFA, WarningInfo = {_, _, {Mod, _, _}=WarnMFA}} <- Calls
+ , not dialyzer_codeserver:is_member_meta_info(WarnMFA, CodeServer)].
unknown_types(#cl_state{external_types = Types}) ->
[{Mod, {?WARN_UNKNOWN, WarningInfo, {unknown_type, MFA}}} ||
diff --git a/lib/dialyzer/src/dialyzer_codeserver.erl b/lib/dialyzer/src/dialyzer_codeserver.erl
index b9d81d0975..7c0abd6451 100644
--- a/lib/dialyzer/src/dialyzer_codeserver.erl
+++ b/lib/dialyzer/src/dialyzer_codeserver.erl
@@ -22,40 +22,41 @@
-module(dialyzer_codeserver).
-export([delete/1,
- store_temp_contracts/4,
+ store_temp_contracts/4,
give_away/2,
- finalize_contracts/1,
+ finalize_contracts/1,
finalize_exported_types/2,
- finalize_records/1,
- get_contracts/1,
- get_callbacks/1,
+ finalize_records/1,
+ get_contracts/1,
+ get_callbacks/1,
get_exported_types_table/1,
extract_exported_types/1,
- get_exports/1,
- get_records_table/1,
+ get_exports/1,
+ get_records_table/1,
extract_records/1,
- get_next_core_label/1,
+ get_next_core_label/1,
get_temp_contracts/2,
all_temp_modules/1,
store_contracts/4,
get_temp_exported_types/1,
get_temp_records_table/1,
- lookup_temp_mod_records/2,
- insert/3,
- insert_exports/2,
+ lookup_temp_mod_records/2,
+ insert/3,
+ insert_exports/2,
insert_temp_exported_types/2,
insert_fun_meta_info/2,
- is_exported/2,
- lookup_mod_code/2,
- lookup_mfa_code/2,
- lookup_mfa_var_label/2,
- lookup_mod_records/2,
- lookup_mod_contracts/2,
- lookup_mfa_contract/2,
+ is_exported/2,
+ is_member_meta_info/2,
+ lookup_mod_code/2,
+ lookup_mfa_code/2,
+ lookup_mfa_var_label/2,
+ lookup_mod_records/2,
+ lookup_mod_contracts/2,
+ lookup_mfa_contract/2,
lookup_meta_info/2,
- new/0,
- set_next_core_label/2,
- store_temp_records/3,
+ new/0,
+ set_next_core_label/2,
+ store_temp_records/3,
translate_fake_file/3]).
-export_type([codeserver/0, fun_meta_info/0, contracts/0]).
@@ -329,6 +330,11 @@ lookup_mfa_contract(MFA, #codeserver{contracts = ContDict}) ->
lookup_meta_info(MorMFA, #codeserver{fun_meta_info = FunMetaInfo}) ->
ets_dict_find(MorMFA, FunMetaInfo).
+-spec is_member_meta_info(module() | mfa(), codeserver()) -> boolean().
+
+is_member_meta_info(MorMFA, #codeserver{fun_meta_info = FunMetaInfo}) ->
+ ets_set_is_element(MorMFA, FunMetaInfo).
+
-spec get_contracts(codeserver()) ->
dict:dict(mfa(), dialyzer_contracts:file_contract()).