@@ -2645,17 +2645,18 @@ defmodule Macro do
2645
2645
dbg_boolean_tree ( ast , result_var , [ ] )
2646
2646
end
2647
2647
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
2650
2649
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
2651
2654
2652
- [
2653
2655
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 ) }
2657
2658
end
2658
- ]
2659
+ end )
2659
2660
end
2660
2661
2661
2662
defp dbg_ast_to_debuggable ( { :case , _meta , [ expr , [ do: clauses ] ] } = ast , _env ) do
@@ -2833,18 +2834,6 @@ defmodule Macro do
2833
2834
[ node | nodes ]
2834
2835
end
2835
2836
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
-
2848
2837
# Made public to be called from Macro.dbg/3, so that we generate as little code
2849
2838
# as possible and call out into a function as soon as we can.
2850
2839
@ doc false
@@ -2884,20 +2873,6 @@ defmodule Macro do
2884
2873
{ [ first_formatted | rest_formatted ] , result }
2885
2874
end
2886
2875
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
-
2901
2876
defp dbg_format_ast_to_debug ( { :case_argument , expr_ast , expr_value } , options ) do
2902
2877
formatted = [
2903
2878
dbg_maybe_underline ( "Case argument" , options ) ,
0 commit comments