diff options
Diffstat (limited to 'lib/edoc/src/edoc_tags.erl')
-rw-r--r-- | lib/edoc/src/edoc_tags.erl | 33 |
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]). |