Browse Source

De-dup inside parse_attr function itself

pull/2124/head
Rob Ashton 5 years ago
parent
commit
18b39d7382
1 changed files with 16 additions and 15 deletions
  1. +16
    -15
      src/rebar_compiler_erl.erl

+ 16
- 15
src/rebar_compiler_erl.erl View File

@ -78,7 +78,7 @@ needed_files(Graph, FoundFiles, _, AppInfo) ->
dependencies(Source, SourceDir, Dirs) ->
case file:open(Source, [read]) of
{ok, Fd} ->
Incls = lists:usort(parse_attrs(Fd, [], SourceDir)),
Incls = parse_attrs(Fd, [], SourceDir),
AbsIncls = expand_file_names(Incls, Dirs),
ok = file:close(Fd),
AbsIncls;
@ -245,20 +245,21 @@ module_to_erl(Mod) ->
atom_to_list(Mod) ++ ".erl".
parse_attrs(Fd, Includes, Dir) ->
case io:parse_erl_form(Fd, "") of
{ok, Form, _Line} ->
case erl_syntax:type(Form) of
attribute ->
NewIncludes = process_attr(Form, Includes, Dir),
parse_attrs(Fd, NewIncludes, Dir);
_ ->
parse_attrs(Fd, Includes, Dir)
end;
{eof, _} ->
Includes;
_Err ->
parse_attrs(Fd, Includes, Dir)
end.
DupIncludes = case io:parse_erl_form(Fd, "") of
{ok, Form, _Line} ->
case erl_syntax:type(Form) of
attribute ->
NewIncludes = process_attr(Form, Includes, Dir),
parse_attrs(Fd, NewIncludes, Dir);
_ ->
parse_attrs(Fd, Includes, Dir)
end;
{eof, _} ->
Includes;
_Err ->
parse_attrs(Fd, Includes, Dir)
end,
lists:usort(DupIncludes).
process_attr(Form, Includes, Dir) ->
AttrName = erl_syntax:atom_value(erl_syntax:attribute_name(Form)),

Loading…
Cancel
Save