Skip to content

Commit

Permalink
♻️ error: Make root_causes/1 public
Browse files Browse the repository at this point in the history
  • Loading branch information
alexocode committed Aug 8, 2023
1 parent d7e9c3e commit 51827e5
Showing 1 changed file with 11 additions and 9 deletions.
20 changes: 11 additions & 9 deletions lib/babel/error.ex
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,17 @@ defmodule Babel.Error do
Enum.reduce(errors, accumulator, &reduce(&1, &2, reducer))
end

@doc "Returns the errors that actually caused the failure (no nested errors)."
@spec root_causes(t | list(t)) :: list(t)
def root_causes(error) do
error
|> reduce([], fn
%{reason: {:nested, _}}, causes -> causes
%{} = cause, causes -> [cause | causes]
end)
|> Enum.reverse()
end

@impl true
def message(%__MODULE__{reason: {:nested, nested}} = error) do
root_causes = root_causes(nested)
Expand Down Expand Up @@ -103,15 +114,6 @@ defmodule Babel.Error do
end
end

defp root_causes(error) do
error
|> reduce([], fn
%{reason: {:nested, _}}, causes -> causes
%{} = cause, causes -> [cause | causes]
end)
|> Enum.reverse()
end

defp data(%{data: data}, indent: indent) do
data
|> inspect(pretty: true, limit: 80 - indent)
Expand Down

0 comments on commit 51827e5

Please sign in to comment.