@@ -2645,17 +2645,18 @@ defmodule Macro do
26452645 dbg_boolean_tree ( ast , result_var , [ ] )
26462646 end
26472647
2648- defp dbg_ast_to_debuggable ( { :__block__ , _meta , exprs } = ast , _env ) when exprs != [ ] do
2649- acc_var = unique_var ( :acc , __MODULE__ )
2648+ defp dbg_ast_to_debuggable ( { :__block__ , _meta , exprs } , _env ) when exprs != [ ] do
26502649 result_var = unique_var ( :result , __MODULE__ )
2650+ count = length ( exprs )
2651+
2652+ Enum . with_index ( exprs , fn expr , i ->
2653+ tag = if i + 1 == count , do: :value , else: :multi_value
26512654
2652- [
26532655 quote do
2654- unquote ( acc_var ) = [ ]
2655- unquote ( dbg_block ( ast , acc_var , result_var ) )
2656- { :block , Enum . reverse ( unquote ( acc_var ) ) , unquote ( result_var ) }
2656+ unquote ( result_var ) = unquote ( expr )
2657+ { unquote ( tag ) , unquote ( Macro . escape ( expr ) ) , unquote ( result_var ) }
26572658 end
2658- ]
2659+ end )
26592660 end
26602661
26612662 defp dbg_ast_to_debuggable ( { :case , _meta , [ expr , [ do: clauses ] ] } = ast , _env ) do
@@ -2833,18 +2834,6 @@ defmodule Macro do
28332834 [ node | nodes ]
28342835 end
28352836
2836- defp dbg_block ( { :__block__ , meta , exprs } , acc_var , result_var ) do
2837- modified_exprs =
2838- Enum . map ( exprs , fn expr ->
2839- quote do
2840- unquote ( result_var ) = unquote ( expr )
2841- unquote ( acc_var ) = [ { unquote ( escape ( expr ) ) , unquote ( result_var ) } | unquote ( acc_var ) ]
2842- end
2843- end )
2844-
2845- { :__block__ , meta , modified_exprs }
2846- end
2847-
28482837 # Made public to be called from Macro.dbg/3, so that we generate as little code
28492838 # as possible and call out into a function as soon as we can.
28502839 @ doc false
@@ -2884,20 +2873,6 @@ defmodule Macro do
28842873 { [ first_formatted | rest_formatted ] , result }
28852874 end
28862875
2887- defp dbg_format_ast_to_debug ( { :block , components , value } , options ) do
2888- formatted =
2889- [
2890- dbg_maybe_underline ( "Code block" , options ) ,
2891- ":\n (\n " ,
2892- Enum . map ( components , fn { ast , value } ->
2893- [ " " , dbg_format_ast_with_value ( ast , value , options ) ]
2894- end ) ,
2895- ")\n "
2896- ]
2897-
2898- { formatted , value }
2899- end
2900-
29012876 defp dbg_format_ast_to_debug ( { :case_argument , expr_ast , expr_value } , options ) do
29022877 formatted = [
29032878 dbg_maybe_underline ( "Case argument" , options ) ,
0 commit comments