diff options
Diffstat (limited to 'lib/tools/src/xref_reader.erl')
-rw-r--r-- | lib/tools/src/xref_reader.erl | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/lib/tools/src/xref_reader.erl b/lib/tools/src/xref_reader.erl index d28bdb78db..9857e8c150 100644 --- a/lib/tools/src/xref_reader.erl +++ b/lib/tools/src/xref_reader.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2000-2017. All Rights Reserved. +%% Copyright Ericsson AB 2000-2020. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -53,7 +53,8 @@ %% R8: abstract_v2 %% R9C: raw_abstract_v1 -%% -> {ok, Module, {DefAt, CallAt, LC, XC, X, Attrs}, Unresolved}} | EXIT +%% -> {ok, Module, {DefAt, LCallAt, XCallAt, LC, XC, X, Attrs, Depr, OL}, +%% Unresolved}} | EXIT %% Attrs = {ALC, AXC, Bad} %% ALC, AXC and Bad are extracted from the attribute 'xref'. An experiment. module(Module, Forms, CollectBuiltins, X, DF) -> @@ -96,13 +97,18 @@ form({function, _, module_info, 0, _Clauses}, S) -> form({function, _, module_info, 1, _Clauses}, S) -> S; form({function, Anno, Name, Arity, Clauses}, S) -> - MFA0 = {S#xrefr.module, Name, Arity}, - MFA = adjust_arity(S, MFA0), - S1 = S#xrefr{function = MFA}, - Line = erl_anno:line(Anno), - S2 = S1#xrefr{def_at = [{MFA,Line} | S#xrefr.def_at]}, - S3 = clauses(Clauses, S2), - S3#xrefr{function = []}; + case {Name, Arity, erl_anno:location(Anno)} of + {behaviour_info, 1, 0} -> + S; % generated + _ -> + MFA0 = {S#xrefr.module, Name, Arity}, + MFA = adjust_arity(S, MFA0), + S1 = S#xrefr{function = MFA}, + Line = erl_anno:line(Anno), + S2 = S1#xrefr{def_at = [{MFA,Line} | S#xrefr.def_at]}, + S3 = clauses(Clauses, S2), + S3#xrefr{function = []} + end; form(_, S) -> %% OTP 20. Other uninteresting forms such as {eof, _} and {warning, _}. %% Exposed because sys_pre_expand is no longer run. |