summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristan Sloughter <tristan.sloughter@gmail.com>2015-07-09 09:21:25 -0500
committerTristan Sloughter <tristan.sloughter@gmail.com>2015-07-09 09:21:25 -0500
commit39518139d096be8a7ed52ae17f0cb152e16e5a2b (patch)
treebe79a1103492c1cdb7640ce596d2a73a56873fd9
parent9affae5c0003d0061114507195bffe2e13062fb9 (diff)
parent05e22e4d5c831888450bfc15e88dc2882b837d6c (diff)
Merge pull request #603 from ferd/display-undefs
Fix reporting of error:undef exceptions
-rw-r--r--src/rebar_core.erl12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/rebar_core.erl b/src/rebar_core.erl
index b1647f0..f097429 100644
--- a/src/rebar_core.erl
+++ b/src/rebar_core.erl
@@ -128,9 +128,15 @@ do([ProviderName | Rest], State) ->
{error, Error}
catch
error:undef ->
- %% This should really only happen if a plugin provider doesn't export do/1
- ?DEBUG("Undefined call to provider's do function:~n~p", [erlang:get_stacktrace()]),
- ?PRV_ERROR({bad_provider_namespace, ProviderName});
+ Stack = erlang:get_stacktrace(),
+ case Stack of
+ [{ProviderName, do, [_], _}|_] ->
+ %% This should really only happen if a plugin provider doesn't export do/1
+ ?DEBUG("Undefined call to provider's do/1 function:~n~p", [Stack]),
+ ?PRV_ERROR({bad_provider_namespace, ProviderName});
+ _ -> % re-raise
+ erlang:raise(error, undef, Stack)
+ end;
error:{badrecord,provider} ->
{error, ProviderName}
end.