diff options
author | Erlang/OTP <[email protected]> | 2010-06-09 12:21:50 +0000 |
---|---|---|
committer | Erlang/OTP <[email protected]> | 2010-06-09 12:21:50 +0000 |
commit | 26fbd5b3ed713afef6c443762f8aefd6367052e6 (patch) | |
tree | 4fa2a79238cfde448175b55ebe312b214c57b3a3 /lib/dialyzer/src/dialyzer_analysis_callgraph.erl | |
parent | 8e7719b8a5ae1d9e2e464d6d1a7abe502e0f9cd3 (diff) | |
parent | 1a9e2dd394a81d01742593a5b42f9aa01bb5f276 (diff) | |
download | otp-26fbd5b3ed713afef6c443762f8aefd6367052e6.tar.gz otp-26fbd5b3ed713afef6c443762f8aefd6367052e6.tar.bz2 otp-26fbd5b3ed713afef6c443762f8aefd6367052e6.zip |
Merge branch 'ks/dialyzer-R14-fixes' into dev
* ks/dialyzer-R14-fixes:
Various changes to dialyzer-related files for R14.
OTP-8699 ks/dialyzer-R14-fixes
Various changes to dialyzer-related files for R14.
- Dialyzer properly supports the new attribute -export_type and checks that
remote types only refer to exported types. A warning is produced if some
files/applications refer to types defined in modules which are neither in
the PLT nor in the analyzed applications.
- Support for detecting data races involving whereis/1 and unregister/1.
- More precise identification of the reason(s) why a record construction
violates the types declared for its fields.
- Fixed bug in the handling of the 'or' guard.
- Better handling of the erlang:element/2 BIF.
- Complete handling of Erlang BIFs.
Diffstat (limited to 'lib/dialyzer/src/dialyzer_analysis_callgraph.erl')
-rw-r--r-- | lib/dialyzer/src/dialyzer_analysis_callgraph.erl | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/lib/dialyzer/src/dialyzer_analysis_callgraph.erl b/lib/dialyzer/src/dialyzer_analysis_callgraph.erl index e3dd690470..3438cc8c7e 100644 --- a/lib/dialyzer/src/dialyzer_analysis_callgraph.erl +++ b/lib/dialyzer/src/dialyzer_analysis_callgraph.erl @@ -398,7 +398,7 @@ store_core(Mod, Core, NoWarn, Callgraph, CServer) -> store_code_and_build_callgraph(Mod, LabeledCore, Callgraph, CServer3, NoWarn). abs_get_nowarn(Abs, M) -> - [{M, F, A} + [{M, F, A} || {attribute, _, compile, {nowarn_unused_function, {F, A}}} <- Abs]. get_exported_types_from_core(Core) -> @@ -421,7 +421,7 @@ label_core(Core, CServer) -> NextLabel = dialyzer_codeserver:get_next_core_label(CServer), CoreTree = cerl:from_records(Core), {LabeledTree, NewNextLabel} = cerl_trees:label(CoreTree, NextLabel), - {cerl:to_records(LabeledTree), + {cerl:to_records(LabeledTree), dialyzer_codeserver:set_next_core_label(NewNextLabel, CServer)}. store_code_and_build_callgraph(Mod, Core, Callgraph, CServer, NoWarn) -> @@ -489,7 +489,8 @@ rcv_and_send_ext_types(Parent) -> Self = self(), Self ! {Self, done}, ExtTypes = rcv_ext_types(Self, []), - Parent ! {Self, ext_types, ExtTypes}. + Parent ! {Self, ext_types, ExtTypes}, + ok. rcv_ext_types(Self, ExtTypes) -> receive @@ -515,7 +516,7 @@ filter_warnings(LegalWarnings, Warnings) -> send_analysis_done(Parent, Plt, DocPlt) -> Parent ! {self(), done, Plt, DocPlt}, ok. - + send_ext_calls(Parent, ExtCalls) -> Parent ! {self(), ext_calls, ExtCalls}, ok. @@ -539,7 +540,7 @@ send_mod_deps(Parent, ModuleDeps) -> Parent ! {self(), mod_deps, ModuleDeps}, ok. -format_bad_calls([{{_, _, _}, {_, module_info, A}}|Left], CodeServer, Acc) +format_bad_calls([{{_, _, _}, {_, module_info, A}}|Left], CodeServer, Acc) when A =:= 0; A =:= 1 -> format_bad_calls(Left, CodeServer, Acc); format_bad_calls([{FromMFA, {M, F, A} = To}|Left], CodeServer, Acc) -> @@ -552,7 +553,7 @@ format_bad_calls([], _CodeServer, Acc) -> Acc. find_call_file_and_line(Tree, MFA) -> - Fun = + Fun = fun(SubTree, Acc) -> case cerl:is_c_call(SubTree) of true -> |