aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/dialyzer/doc/src/notes.xml16
-rw-r--r--lib/dialyzer/src/dialyzer_analysis_callgraph.erl20
-rw-r--r--lib/dialyzer/src/dialyzer_utils.erl14
-rw-r--r--lib/dialyzer/test/options2_SUITE_data/dialyzer_options2
-rw-r--r--lib/dialyzer/test/options2_SUITE_data/results/unknown_type2
-rw-r--r--lib/dialyzer/test/options2_SUITE_data/src/unknown_type.erl7
-rw-r--r--lib/hipe/regalloc/hipe_range_split.erl6
-rw-r--r--lib/inets/doc/src/notes.xml24
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>