@@ -98,21 +98,26 @@ defmodule Kernel.CLI do
9898 @ doc """
9999 Shared helper for error formatting on CLI tools.
100100 """
101- def format_error ( kind , reason , stacktrace , ansi? \\ false ) do
101+ def format_error ( kind , reason , stacktrace ) do
102+ { banner , rest } = format_error_parts ( kind , reason , stacktrace )
103+ [ banner , rest ]
104+ end
105+
106+ defp format_error_parts ( kind , reason , stacktrace ) do
102107 { blamed , stacktrace } = Exception . blame ( kind , reason , stacktrace )
103108
104- iodata =
109+ banner =
105110 case blamed do
106111 % FunctionClauseError { } ->
107112 formatted = Exception . format_banner ( kind , reason , stacktrace )
108113 padded_blame = pad ( FunctionClauseError . blame ( blamed , & inspect / 1 , & blame_match / 1 ) )
109- [ banner_ansi ( formatted , ansi? ) , padded_blame ]
114+ [ formatted , padded_blame ]
110115
111116 _ ->
112- Exception . format_banner ( kind , blamed , stacktrace ) |> banner_ansi ( ansi? )
117+ Exception . format_banner ( kind , blamed , stacktrace )
113118 end
114119
115- [ iodata , ?\n , Exception . format_stacktrace ( prune_stacktrace ( stacktrace ) ) ]
120+ { banner , [ ?\n , Exception . format_stacktrace ( prune_stacktrace ( stacktrace ) ) ] }
116121 end
117122
118123 @ doc """
@@ -179,14 +184,10 @@ defmodule Kernel.CLI do
179184 ## Error handling
180185
181186 defp print_error ( kind , reason , stacktrace ) do
182- IO . write ( :stderr , format_error ( kind , reason , stacktrace , IO.ANSI . enabled? ( ) ) )
187+ { banner , rest } = format_error_parts ( kind , reason , stacktrace )
188+ IO . write ( :stderr , [ IO.ANSI . format ( [ :red , banner ] ) , rest ] )
183189 end
184190
185- defp banner_ansi ( banner , true ) ,
186- do: IO . iodata_to_binary ( IO.ANSI . format ( [ :red , banner ] , true ) )
187-
188- defp banner_ansi ( banner , false ) , do: banner
189-
190191 defp blame_match ( % { match?: true , node: node } ) , do: blame_ansi ( :normal , "+" , node )
191192 defp blame_match ( % { match?: false , node: node } ) , do: blame_ansi ( :red , "-" , node )
192193
0 commit comments