summaryrefslogtreecommitdiff
path: root/lib/edoc/src/edoc_tags.erl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/edoc/src/edoc_tags.erl')
-rw-r--r--lib/edoc/src/edoc_tags.erl33
1 files changed, 19 insertions, 14 deletions
diff --git a/lib/edoc/src/edoc_tags.erl b/lib/edoc/src/edoc_tags.erl
index 3b117f252a..9f05894ec0 100644
--- a/lib/edoc/src/edoc_tags.erl
+++ b/lib/edoc/src/edoc_tags.erl
@@ -35,12 +35,9 @@
-export([tags/0, tags/1, tag_names/0, tag_parsers/0, scan_lines/2,
filter_tags/2, filter_tags/3, check_tags/4, parse_tags/4,
- check_types/3]).
+ check_types/3]).
-%% Avoid warning for imported function 3 clashing with autoimported BIF.
--compile({no_auto_import,[error/3]}).
-
--import(edoc_report, [report/4, warning/4, error/3]).
+-export_type([tag_flag/0]).
-include("edoc.hrl").
-include("edoc_types.hrl").
@@ -64,6 +61,13 @@
%% - @history (never properly updated; use version control etc.)
%% - @category (useless; superseded by keywords or free text search)
+-type tag() :: author | copyright | deprecated | doc | docfile | 'end' | equiv | headerfile
+ | hidden | param | private | reference | returns | see | since | spec | throws
+ | title | 'TODO' | todo | type | version.
+-type parser() :: text | xml | fun().
+-type tag_flag() :: module | footer | function | overview | single.
+
+-spec tags() -> [{tag(), parser(), [tag_flag()]}].
tags() ->
All = [module,footer,function,overview],
[{author, fun parse_contact/4, [module,overview]},
@@ -223,7 +227,7 @@ filter_tags([#tag{name = N, line = L} = T | Ts], Tags, Where, Ts1) ->
false ->
case Where of
no -> ok;
- _ -> warning(L, Where, "tag @~s not recognized.", [N])
+ _ -> edoc_report:warning(L, Where, "tag @~s not recognized.", [N])
end,
filter_tags(Ts, Tags, Where, Ts1)
end;
@@ -242,7 +246,7 @@ check_tags([#tag{name = T, line = L} | Ts], Allow, Single, Where, Error, Seen) -
false ->
check_tags(Ts, Allow, Single, Where, Error, Seen);
true ->
- report(L, Where, "multiple @~s tag.", [T]),
+ edoc_report:report(L, Where, "multiple @~s tag.", [T]),
check_tags(Ts, Allow, Single, Where, true, Seen)
end;
false ->
@@ -251,7 +255,7 @@ check_tags([#tag{name = T, line = L} | Ts], Allow, Single, Where, Error, Seen) -
true ->
check_tags(Ts, Allow, Single, Where, Error, Seen1);
false ->
- report(L, Where, "tag @~s not allowed here.", [T]),
+ edoc_report:report(L, Where, "tag @~s not allowed here.", [T]),
check_tags(Ts, Allow, Single, Where, true, Seen1)
end
end;
@@ -285,7 +289,7 @@ parse_tag(T, F, Env, Where) ->
{expand, Ts} ->
Ts;
{error, L, Error} ->
- error(L, Where, Error),
+ edoc_report:error(L, Where, Error),
exit(error);
{'EXIT', R} -> exit(R);
Other -> throw(Other)
@@ -344,8 +348,8 @@ parse_typedef(Data, Line, _Env, Where) ->
throw_error(Line, {"redefining built-in type '~w'.",
[T]});
true ->
- warning(Line, Where, "redefining built-in type '~w'.",
- [T]),
+ edoc_report:warning(Line, Where, "redefining built-in type '~w'.",
+ [T]),
Def
end;
false ->
@@ -354,7 +358,7 @@ parse_typedef(Data, Line, _Env, Where) ->
-type line() :: erl_anno:line().
--spec parse_file(_, line(), _, _) -> no_return().
+-spec parse_file(_, line(), edoc:env(), _) -> no_return().
parse_file(Data, Line, Env, _Where) ->
case edoc_lib:parse_expr(Data, Line) of
@@ -370,7 +374,7 @@ parse_file(Data, Line, Env, _Where) ->
throw_error(Line, file_not_string)
end.
--spec parse_header(_, line(), _, _) -> no_return().
+-spec parse_header(_, line(), edoc:env(), _) -> no_return().
parse_header(Data, Line, Env, {Where, _}) ->
parse_header(Data, Line, Env, Where);
@@ -393,6 +397,7 @@ parse_header(Data, Line, Env, Where) when is_list(Where) ->
-type err() :: 'file_not_string'
| {'file_not_found', file:filename()}
| {'read_file', file:filename(), term()}
+ | {string(), [term()]}
| string().
-spec throw_error(line(), err()) -> no_return().
@@ -519,4 +524,4 @@ check_used_type(#t_name{name = N, module = Mod}=Name, Args, P, LocalTypes) ->
type_warning(Line, File, S, N, NArgs) ->
AS = ["/"++integer_to_list(NArgs) || NArgs > 0],
- warning(Line, File, S++" ~w~s", [N, AS]).
+ edoc_report:warning(Line, File, S++" ~w~s", [N, AS]).