瀏覽代碼

De-dup inside parse_attr function itself

pull/2124/head
Rob Ashton 5 年之前
父節點
當前提交
18b39d7382
共有 1 個文件被更改,包括 16 次插入15 次删除
  1. +16
    -15
      src/rebar_compiler_erl.erl

+ 16
- 15
src/rebar_compiler_erl.erl 查看文件

@ -78,7 +78,7 @@ needed_files(Graph, FoundFiles, _, AppInfo) ->
dependencies(Source, SourceDir, Dirs) -> dependencies(Source, SourceDir, Dirs) ->
case file:open(Source, [read]) of case file:open(Source, [read]) of
{ok, Fd} -> {ok, Fd} ->
Incls = lists:usort(parse_attrs(Fd, [], SourceDir)),
Incls = parse_attrs(Fd, [], SourceDir),
AbsIncls = expand_file_names(Incls, Dirs), AbsIncls = expand_file_names(Incls, Dirs),
ok = file:close(Fd), ok = file:close(Fd),
AbsIncls; AbsIncls;
@ -245,20 +245,21 @@ module_to_erl(Mod) ->
atom_to_list(Mod) ++ ".erl". atom_to_list(Mod) ++ ".erl".
parse_attrs(Fd, Includes, Dir) -> 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) -> process_attr(Form, Includes, Dir) ->
AttrName = erl_syntax:atom_value(erl_syntax:attribute_name(Form)), AttrName = erl_syntax:atom_value(erl_syntax:attribute_name(Form)),

Loading…
取消
儲存