summaryrefslogtreecommitdiff
path: root/src/rebar_erlc_compiler.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/rebar_erlc_compiler.erl')
-rw-r--r--src/rebar_erlc_compiler.erl35
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"),