diff options
Diffstat (limited to 'src/rebar_erlc_compiler.erl')
| -rw-r--r-- | src/rebar_erlc_compiler.erl | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/src/rebar_erlc_compiler.erl b/src/rebar_erlc_compiler.erl index f7753c7..16a7a35 100644 --- a/src/rebar_erlc_compiler.erl +++ b/src/rebar_erlc_compiler.erl @@ -47,6 +47,14 @@ info = {[], []} :: erlc_info() }). +-ifdef(namespaced_types). +% digraph:digraph() exists starting from Erlang 17. +-type rebar_digraph() :: digraph:digraph(). +-else. +% digraph() has been obsoleted in Erlang 17 and deprecated in 18. +-type rebar_digraph() :: digraph(). +-endif. + %% =================================================================== %% Public API %% =================================================================== @@ -111,8 +119,7 @@ clean(Config, _AppFile) -> YrlFiles = rebar_utils:find_files("src", "^.*\\.[x|y]rl\$"), rebar_file_utils:delete_each( - [ binary_to_list(iolist_to_binary(re:replace(F, "\\.[x|y]rl$", ".erl"))) - || F <- YrlFiles ]), + [re:replace(F, "\\.[xy]rl$", ".erl", [{return,list}]) || F <- YrlFiles]), %% Delete the build graph, if any rebar_file_utils:rm_rf(erlcinfo_file(Config)), @@ -141,11 +148,9 @@ test_compile(Config, Cmd, OutDir) -> %% in src but in a subdirectory of src. Cover only looks in cwd and ../src %% for source files. Also copy files from src_dirs. SrcDirs = rebar_utils:src_dirs(proplists:append_values(src_dirs, ErlOpts1)), - SrcErls = lists:foldl( - fun(Dir, Acc) -> - Files = rebar_utils:find_files(Dir, ".*\\.erl\$"), - lists:append(Acc, Files) - end, [], SrcDirs), + SrcErls = lists:flatmap( + fun (Dir) -> rebar_utils:find_files(Dir, ".*\\.erl$") end, + SrcDirs), %% If it is not the first time rebar eunit or rebar qc is executed, %% there will be source files already present in OutDir. Since some @@ -156,17 +161,17 @@ test_compile(Config, Cmd, OutDir) -> %% rebar_file_utils:cp_r. %% Get the full path to a file that was previously copied in OutDir - ToCleanUp = fun(F, Acc) -> + ToCleanUp = fun(F) -> F2 = filename:basename(F), F3 = filename:join([OutDir, F2]), case filelib:is_regular(F3) of - true -> [F3|Acc]; - false -> Acc + true -> F3; + false -> [] end end, - ok = rebar_file_utils:delete_each(lists:foldl(ToCleanUp, [], TestErls)), - ok = rebar_file_utils:delete_each(lists:foldl(ToCleanUp, [], SrcErls)), + ok = rebar_file_utils:delete_each(lists:flatmap(ToCleanUp, TestErls)), + ok = rebar_file_utils:delete_each(lists:flatmap(ToCleanUp, SrcErls)), ok = rebar_file_utils:cp_r(SrcErls ++ TestErls, OutDir), @@ -522,19 +527,19 @@ expand_file_names(Files, Dirs) -> end end, Files). --spec get_parents(digraph(), file:filename()) -> [file:filename()]. +-spec get_parents(rebar_digraph(), file:filename()) -> [file:filename()]. get_parents(G, Source) -> %% Return all files which the Source depends upon. digraph_utils:reachable_neighbours([Source], G). --spec get_children(digraph(), file:filename()) -> [file:filename()]. +-spec get_children(rebar_digraph(), file:filename()) -> [file:filename()]. get_children(G, Source) -> %% Return all files dependent on the Source. digraph_utils:reaching_neighbours([Source], G). -spec internal_erl_compile(rebar_config:config(), file:filename(), file:filename(), list(), - digraph()) -> 'ok' | 'skipped'. + rebar_digraph()) -> 'ok' | 'skipped'. internal_erl_compile(Config, Source, OutDir, ErlOpts, G) -> %% Determine the target name and includes list by inspecting the source file Module = filename:basename(Source, ".erl"), |
