Commits

Vagabond  committed 6134919

Move the .erl sorting to the right place

  • Participants
  • Parent commits f57c04c

Comments (0)

Files changed (2)

File src/rebar_base_compiler.erl

         [] ->
             ok;
         _ ->
-            % Sort RestFiles so that parse_transforms and behaviours are first
-            SortedRestFiles = [K || {K, _V} <- lists:keysort(2,
-                    [{F, compile_priority(F)} || F <- RestFiles ])],
             Self = self(),
             F = fun() -> compile_worker(Self, Config, CompileFn) end,
             Jobs = rebar_config:get_jobs(),
             ?DEBUG("Starting ~B compile worker(s)~n", [Jobs]),
             Pids = [spawn_monitor(F) || _I <- lists:seq(1,Jobs)],
-            compile_queue(Pids, SortedRestFiles)
+            compile_queue(Pids, RestFiles)
     end.
 
 run(Config, FirstFiles, SourceDir, SourceExt, TargetDir, TargetExt, Compile3Fn) ->
         empty ->
             ok
     end.
-
-compile_priority(File) ->
-    case epp_dodger:parse_file(File) of
-        {error, _} ->
-            10; % couldn't parse the file, default priority
-        {ok, Trees} ->
-            ?DEBUG("Computing priority of ~p\n", [File]),
-            F2 = fun({tree,arity_qualifier,_,
-                        {arity_qualifier,{tree,atom,_,behaviour_info},
-                            {tree,integer,_,1}}}, _) ->
-                    2;
-                ({tree,arity_qualifier,_,
-                        {arity_qualifier,{tree,atom,_,parse_transform},
-                            {tree,integer,_,2}}}, _) ->
-                    1;
-                (_, Acc) ->
-                    Acc
-            end,
-
-            F = fun({tree, attribute, _, {attribute, {tree, atom, _, export},
-                            [{tree, list, _, {list, List, none}}]}}, Acc) ->
-                    lists:foldl(F2, Acc, List);
-                (_, Acc) ->
-                    Acc
-            end,
-
-            lists:foldl(F, 10, Trees)
-    end.
-

File src/rebar_erlc_compiler.erl

     RestErls  = [Source || Source <- gather_src(SrcDirs, []) ++ MoreSources,
                            lists:member(Source, FirstErls) == false],
 
+    % Sort RestErls so that parse_transforms and behaviours are first
+    % This should probably be somewhat combined with inspect_epp
+    SortedRestErls = [K || {K, _V} <- lists:keysort(2,
+        [{F, compile_priority(F)} || F <- RestErls ])],
+
+
     %% Make sure that ebin/ is on the path
     CurrPath = code:get_path(),
     code:add_path("ebin"),
-    rebar_base_compiler:run(Config, FirstErls, RestErls,
+    rebar_base_compiler:run(Config, FirstErls, SortedRestErls,
                             fun(S, C) -> internal_erl_compile(S, C, OutDir) end),
     code:set_path(CurrPath),
     ok.
 delete_dir(Dir, Subdirs) ->
     lists:foreach(fun(D) -> delete_dir(D, dirs(D)) end, Subdirs),
     file:del_dir(Dir).
+
+-spec compile_priority(File::string()) -> pos_integer().
+compile_priority(File) ->
+    case epp_dodger:parse_file(File) of
+        {error, _} ->
+            10; % couldn't parse the file, default priority
+        {ok, Trees} ->
+            ?DEBUG("Computing priority of ~p\n", [File]),
+            F2 = fun({tree,arity_qualifier,_,
+                        {arity_qualifier,{tree,atom,_,behaviour_info},
+                            {tree,integer,_,1}}}, _) ->
+                    2;
+                ({tree,arity_qualifier,_,
+                        {arity_qualifier,{tree,atom,_,parse_transform},
+                            {tree,integer,_,2}}}, _) ->
+                    1;
+                (_, Acc) ->
+                    Acc
+            end,
+
+            F = fun({tree, attribute, _, {attribute, {tree, atom, _, export},
+                            [{tree, list, _, {list, List, none}}]}}, Acc) ->
+                    lists:foldl(F2, Acc, List);
+                (_, Acc) ->
+                    Acc
+            end,
+
+            lists:foldl(F, 10, Trees)
+    end.