diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/dialyzer/doc/src/notes.xml | 16 | ||||
-rw-r--r-- | lib/dialyzer/src/dialyzer_analysis_callgraph.erl | 20 | ||||
-rw-r--r-- | lib/dialyzer/src/dialyzer_utils.erl | 14 | ||||
-rw-r--r-- | lib/dialyzer/test/options2_SUITE_data/dialyzer_options | 2 | ||||
-rw-r--r-- | lib/dialyzer/test/options2_SUITE_data/results/unknown_type | 2 | ||||
-rw-r--r-- | lib/dialyzer/test/options2_SUITE_data/src/unknown_type.erl | 7 | ||||
-rw-r--r-- | lib/hipe/regalloc/hipe_range_split.erl | 6 | ||||
-rw-r--r-- | lib/inets/doc/src/notes.xml | 24 |
8 files changed, 69 insertions, 22 deletions
diff --git a/lib/dialyzer/doc/src/notes.xml b/lib/dialyzer/doc/src/notes.xml index cd4ec4c068..0dbee1ce34 100644 --- a/lib/dialyzer/doc/src/notes.xml +++ b/lib/dialyzer/doc/src/notes.xml @@ -32,6 +32,22 @@ <p>This document describes the changes made to the Dialyzer application.</p> +<section><title>Dialyzer 3.1.1</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> Report unknown types properly. A bug was introduced + in Erlang/OTP 19.3, where warnings about unknown types + were simply discarded. </p> + <p> + Own Id: OTP-14368</p> + </item> + </list> + </section> + +</section> + <section><title>Dialyzer 3.1</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/dialyzer/src/dialyzer_analysis_callgraph.erl b/lib/dialyzer/src/dialyzer_analysis_callgraph.erl index 051b700231..29aa25b98e 100644 --- a/lib/dialyzer/src/dialyzer_analysis_callgraph.erl +++ b/lib/dialyzer/src/dialyzer_analysis_callgraph.erl @@ -149,7 +149,7 @@ analysis_start(Parent, Analysis, LegalWarnings) -> dialyzer_codeserver:finalize_exported_types(MergedExpTypes, TmpCServer1), erlang:garbage_collect(), % reduce heap size ?timing(State#analysis_state.timing_server, "remote", - contracts_and_records(TmpCServer2)) + contracts_and_records(TmpCServer2, Parent)) catch throw:{error, _ErrorMsg} = Error -> exit(Error) end, @@ -173,15 +173,14 @@ analysis_start(Parent, Analysis, LegalWarnings) -> codeserver = Codeserver0} = State2, {Codeserver, MiniPlt3} = move_data(Codeserver0, MiniPlt2), dialyzer_callgraph:dispose_race_server(NewCallgraph), - rcv_and_send_ext_types(Parent), %% Since the PLT is never used, a dummy is sent: DummyPlt = dialyzer_plt:new(), send_codeserver_plt(Parent, Codeserver, DummyPlt), MiniPlt4 = dialyzer_plt:delete_list(MiniPlt3, NonExportsList), send_analysis_done(Parent, MiniPlt4, DocPlt). -contracts_and_records(CodeServer) -> - Fun = contrs_and_recs(CodeServer), +contracts_and_records(CodeServer, Parent) -> + Fun = contrs_and_recs(CodeServer, Parent), {Pid, Ref} = erlang:spawn_monitor(Fun), dialyzer_codeserver:give_away(CodeServer, Pid), Pid ! {self(), go}, @@ -189,16 +188,17 @@ contracts_and_records(CodeServer) -> Return end. --spec contrs_and_recs(dialyzer_codeserver:codeserver()) -> +-spec contrs_and_recs(dialyzer_codeserver:codeserver(), pid()) -> fun(() -> no_return()). -contrs_and_recs(TmpCServer2) -> +contrs_and_recs(TmpCServer2, Parent) -> fun() -> - Parent = receive {Pid, go} -> Pid end, + Caller = receive {Pid, go} -> Pid end, TmpCServer3 = dialyzer_utils:process_record_remote_types(TmpCServer2), TmpServer4 = dialyzer_contracts:process_contract_remote_types(TmpCServer3), - dialyzer_codeserver:give_away(TmpServer4, Parent), + dialyzer_codeserver:give_away(TmpServer4, Caller), + rcv_and_send_ext_types(Caller, Parent), exit(TmpServer4) end. @@ -525,13 +525,13 @@ default_includes(Dir) -> %% Handle Messages %%------------------------------------------------------------------- -rcv_and_send_ext_types(Parent) -> +rcv_and_send_ext_types(SendTo, Parent) -> Self = self(), Self ! {Self, done}, case rcv_ext_types(Self, []) of [] -> ok; ExtTypes -> - Parent ! {Self, ext_types, ExtTypes}, + Parent ! {SendTo, ext_types, ExtTypes}, ok end. diff --git a/lib/dialyzer/src/dialyzer_utils.erl b/lib/dialyzer/src/dialyzer_utils.erl index e0497159b3..75d6e3bc65 100644 --- a/lib/dialyzer/src/dialyzer_utils.erl +++ b/lib/dialyzer/src/dialyzer_utils.erl @@ -212,7 +212,7 @@ keep_compile_option(_) -> true. -type type_table() :: erl_types:type_table(). --spec get_record_and_type_info(cerl:module()) -> +-spec get_record_and_type_info(cerl:c_module()) -> {'ok', type_table()} | {'error', string()}. get_record_and_type_info(Core) -> @@ -478,7 +478,7 @@ merge_types(CServer, Plt) -> -type spec_map() :: dialyzer_codeserver:contracts(). -type callback_map() :: dialyzer_codeserver:contracts(). --spec get_spec_info(module(), cerl:module(), type_table()) -> +-spec get_spec_info(module(), cerl:c_module(), type_table()) -> {'ok', spec_map(), callback_map()} | {'error', string()}. get_spec_info(ModName, Core, RecordsMap) -> @@ -555,7 +555,7 @@ get_core_line([L | _As]) when is_integer(L) -> L; get_core_line([_ | As]) -> get_core_line(As); get_core_line([]) -> undefined. --spec get_fun_meta_info(module(), cerl:module(), [dial_warn_tag()]) -> +-spec get_fun_meta_info(module(), cerl:c_module(), [dial_warn_tag()]) -> dialyzer_codeserver:fun_meta_info() | {'error', string()}. get_fun_meta_info(M, Core, LegalWarnings) -> @@ -591,7 +591,7 @@ process_options([{{_M, _F, _A}=MFA, Opts}|Left], Warnings) -> end; process_options([], _Warnings) -> []. --spec get_nowarn_unused_function(module(), cerl:module(), [fa()]) -> +-spec get_nowarn_unused_function(module(), cerl:c_module(), [fa()]) -> [{mfa(), 'no_unused'}]. get_nowarn_unused_function(M, Core, Functions) -> @@ -607,7 +607,7 @@ get_nowarn_unused_function(M, Core, Functions) -> end, [{{M, F, A}, no_unused} || {F, A} <- FAs]. --spec get_func_suppressions(module(), cerl:module(), [fa()]) -> +-spec get_func_suppressions(module(), cerl:c_module(), [fa()]) -> [{mfa(), 'nowarn_function' | dial_warn_tag()}]. get_func_suppressions(M, Core, Functions) -> @@ -621,7 +621,7 @@ get_func_suppressions(M, Core, Functions) -> lists:foreach(Fun, TagsFAs), [{{M, F, A}, W} || {{Warnings, _L, _File}, {F, A}} <- TagsFAs, W <- Warnings]. --spec get_options(cerl:module(), [dial_warn_tag()]) -> +-spec get_options(cerl:c_module(), [dial_warn_tag()]) -> ordsets:ordset(dial_warn_tag()). get_options(Core, LegalWarnings) -> @@ -735,7 +735,7 @@ format_sig(Type, RecDict) -> flat_format(Fmt, Lst) -> lists:flatten(io_lib:format(Fmt, Lst)). --spec get_options_with_tag(atom(), cerl:module()) -> [term()]. +-spec get_options_with_tag(atom(), cerl:c_module()) -> [term()]. get_options_with_tag(Tag, Core) -> [O || {Key, Value} <- cerl:module_attrs(Core), diff --git a/lib/dialyzer/test/options2_SUITE_data/dialyzer_options b/lib/dialyzer/test/options2_SUITE_data/dialyzer_options index 5db2e50d23..be57e2de72 100644 --- a/lib/dialyzer/test/options2_SUITE_data/dialyzer_options +++ b/lib/dialyzer/test/options2_SUITE_data/dialyzer_options @@ -1 +1 @@ -{dialyzer_options, [{defines, [{'vsn', 4}]}, {warnings, [no_return]}]}. +{dialyzer_options, [{defines, [{'vsn', 4}]}, {warnings, [unknown, no_return]}]}. diff --git a/lib/dialyzer/test/options2_SUITE_data/results/unknown_type b/lib/dialyzer/test/options2_SUITE_data/results/unknown_type new file mode 100644 index 0000000000..d308c5a810 --- /dev/null +++ b/lib/dialyzer/test/options2_SUITE_data/results/unknown_type @@ -0,0 +1,2 @@ + +:0: Unknown type unknown:type/0
\ No newline at end of file diff --git a/lib/dialyzer/test/options2_SUITE_data/src/unknown_type.erl b/lib/dialyzer/test/options2_SUITE_data/src/unknown_type.erl new file mode 100644 index 0000000000..7a891c0831 --- /dev/null +++ b/lib/dialyzer/test/options2_SUITE_data/src/unknown_type.erl @@ -0,0 +1,7 @@ +-module(unknown_type). + +-export([t/0]). + +-spec t() -> unknown:type(). +t() -> + a. diff --git a/lib/hipe/regalloc/hipe_range_split.erl b/lib/hipe/regalloc/hipe_range_split.erl index 39b086d9f7..385df695f2 100644 --- a/lib/hipe/regalloc/hipe_range_split.erl +++ b/lib/hipe/regalloc/hipe_range_split.erl @@ -270,8 +270,8 @@ defbutlast(L, Defs) -> maps:get(L, Defs). -spec defseti_new() -> defseti(). -spec defseti_union(defseti(), defseti()) -> defseti(). --spec defseti_add_ordset(ordset:ordset(temp()), defseti()) -> defseti(). --spec defseti_from_ordset(ordset:ordset(temp())) -> defseti(). +-spec defseti_add_ordset(ordsets:ordset(temp()), defseti()) -> defseti(). +-spec defseti_from_ordset(ordsets:ordset(temp())) -> defseti(). -spec defseti_finalise(defseti()) -> defsetf(). -spec defsetf_member(temp(), defsetf()) -> boolean(). -spec defsetf_intersect_ordset(ordsets:ordset(temp()), defsetf()) @@ -415,7 +415,7 @@ rdefset_finalise(Ord) -> {arr, bitarr_from_bitord(Ord)}. %% rdefsetf_top() -> top. rdefsetf_empty() -> {arr, bitarr_new()}. --spec rdefsetf_add_ordset(ordset:ordset(temp()), rdefsetf()) -> rdefsetf(). +-spec rdefsetf_add_ordset(ordsets:ordset(temp()), rdefsetf()) -> rdefsetf(). rdefsetf_add_ordset(_, top) -> top; rdefsetf_add_ordset(OS, {arr, Arr}) -> {arr, lists:foldl(fun bitarr_set/2, Arr, OS)}. diff --git a/lib/inets/doc/src/notes.xml b/lib/inets/doc/src/notes.xml index 2aa48cd50a..ef01136978 100644 --- a/lib/inets/doc/src/notes.xml +++ b/lib/inets/doc/src/notes.xml @@ -33,7 +33,22 @@ <file>notes.xml</file> </header> - <section><title>Inets 6.3.7</title> + <section><title>Inets 6.3.8</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Added missing release note for inets-6.3.7</p> + <p> + Own Id: OTP-14383</p> + </item> + </list> + </section> + +</section> + +<section><title>Inets 6.3.7</title> <section><title>Fixed Bugs and Malfunctions</title> <list> @@ -44,6 +59,13 @@ <p> Own Id: OTP-14242</p> </item> + + <item> + <p>Make default port, 80 and 443, implicit in automatic redirection. + </p> + <p> Own Id: OTP-14301 + </p> + </item> </list> </section> |