anchor.diff:                      Worker ! {compile, Src, Target, Config, CompileFn},
                       compile_queue(Pids, Rest, Config, CompileFn)
               end;
  +
  +        {fail, Error} ->
  +            ?DEBUG("Worker compilation failed: ~p\n", [Error]),
  +            ?FAIL;
           
           {compiled, Source} ->
               ?CONSOLE("Compiled ~s\n", [Source]),
  
positive.code:         {compile, Src, Target, Config, CompileFn} ->
              case needs_compile(Src, Target) of
                  true ->
                      CompileFn(Src, Config),
                      QueuePid ! {compiled, Src};
                  false ->
                      ?INFO("Skipping ~s\n", [Src]),
                      ok
              end,
              compile_worker(QueuePid);
          empty ->
              ok
      end.
  
negative.code:     rebar_config:get_list(Config, Key, []).
  
  compile_erl(Source, Config) ->
      Opts = [{i, "include"}, {outdir, "ebin"}, report, return] ++ compile_opts(Config, erl_opts),
      case compile:file(Source, Opts) of
          {ok, _, []} ->
              ok;
          {ok, _, _Warnings} ->
              %% We got at least one warning -- if fail_on_warning is in options, fail
              case lists:member(fail_on_warning, Opts) of
                  true ->
                      ?FAIL;
                  false ->
                      ok
              end;
          _ ->
              ?FAIL
      end.
  
  