diff options
author | Tristan Sloughter <tristan.sloughter@gmail.com> | 2015-07-09 09:21:25 -0500 |
---|---|---|
committer | Tristan Sloughter <tristan.sloughter@gmail.com> | 2015-07-09 09:21:25 -0500 |
commit | 39518139d096be8a7ed52ae17f0cb152e16e5a2b (patch) | |
tree | be79a1103492c1cdb7640ce596d2a73a56873fd9 | |
parent | 9affae5c0003d0061114507195bffe2e13062fb9 (diff) | |
parent | 05e22e4d5c831888450bfc15e88dc2882b837d6c (diff) |
Merge pull request #603 from ferd/display-undefs
Fix reporting of error:undef exceptions
-rw-r--r-- | src/rebar_core.erl | 12 |
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. |