@@ -2552,13 +2552,13 @@ defmodule Macro do
2552
2552
header = dbg_format_header ( env )
2553
2553
2554
2554
quote do
2555
- to_debug = unquote ( dbg_ast_to_debuggable ( code ) )
2555
+ to_debug = unquote ( dbg_ast_to_debuggable ( code , env ) )
2556
2556
unquote ( __MODULE__ ) . __dbg__ ( unquote ( header ) , to_debug , unquote ( options ) )
2557
2557
end
2558
2558
end
2559
2559
2560
2560
# Pipelines.
2561
- defp dbg_ast_to_debuggable ( { :|> , _meta , _args } = pipe_ast ) do
2561
+ defp dbg_ast_to_debuggable ( { :|> , _meta , _args } = pipe_ast , _env ) do
2562
2562
value_var = unique_var ( :value , __MODULE__ )
2563
2563
values_acc_var = unique_var ( :values , __MODULE__ )
2564
2564
@@ -2591,7 +2591,7 @@ defmodule Macro do
2591
2591
dbg_decomposed_binary_operators = [ :&& , :|| , :and , :or ]
2592
2592
2593
2593
# Logic operators.
2594
- defp dbg_ast_to_debuggable ( { op , _meta , [ _left , _right ] } = ast )
2594
+ defp dbg_ast_to_debuggable ( { op , _meta , [ _left , _right ] } = ast , _env )
2595
2595
when op in unquote ( dbg_decomposed_binary_operators ) do
2596
2596
acc_var = unique_var ( :acc , __MODULE__ )
2597
2597
result_var = unique_var ( :result , __MODULE__ )
@@ -2603,7 +2603,7 @@ defmodule Macro do
2603
2603
end
2604
2604
end
2605
2605
2606
- defp dbg_ast_to_debuggable ( { :case , _meta , [ expr , [ do: clauses ] ] } = ast ) do
2606
+ defp dbg_ast_to_debuggable ( { :case , _meta , [ expr , [ do: clauses ] ] } = ast , _env ) do
2607
2607
clauses_returning_index =
2608
2608
Enum . with_index ( clauses , fn { :-> , meta , [ left , right ] } , index ->
2609
2609
{ :-> , meta , [ left , { right , index } ] }
@@ -2621,7 +2621,7 @@ defmodule Macro do
2621
2621
end
2622
2622
end
2623
2623
2624
- defp dbg_ast_to_debuggable ( { :cond , _meta , [ [ do: clauses ] ] } = ast ) do
2624
+ defp dbg_ast_to_debuggable ( { :cond , _meta , [ [ do: clauses ] ] } = ast , _env ) do
2625
2625
modified_clauses =
2626
2626
Enum . with_index ( clauses , fn { :-> , _meta , [ [ left ] , right ] } , index ->
2627
2627
hd (
@@ -2642,17 +2642,25 @@ defmodule Macro do
2642
2642
end
2643
2643
end
2644
2644
2645
- defp dbg_ast_to_debuggable ( { :if , _meta , [ condition_ast , _clauses ] } = ast ) do
2646
- quote do
2647
- condition_result = unquote ( condition_ast )
2648
- result = unquote ( ast )
2645
+ defp dbg_ast_to_debuggable ( { :if , _meta , [ condition_ast , _clauses ] } = ast , env ) do
2646
+ if get_in ( env . macros , [
2647
+ Access . find ( & ( elem ( & 1 , 0 ) == Kernel ) ) ,
2648
+ Access . elem ( 1 ) ,
2649
+ :if
2650
+ ] ) == 2 do
2651
+ quote do
2652
+ condition_result = unquote ( condition_ast )
2653
+ result = unquote ( ast )
2649
2654
2650
- { :if , unquote ( escape ( ast ) ) , unquote ( escape ( condition_ast ) ) , condition_result , result }
2655
+ { :if , unquote ( escape ( ast ) ) , unquote ( escape ( condition_ast ) ) , condition_result , result }
2656
+ end
2657
+ else
2658
+ quote do: { :value , unquote ( escape ( ast ) ) , unquote ( ast ) }
2651
2659
end
2652
2660
end
2653
2661
2654
2662
# Any other AST.
2655
- defp dbg_ast_to_debuggable ( ast ) do
2663
+ defp dbg_ast_to_debuggable ( ast , _env ) do
2656
2664
quote do: { :value , unquote ( escape ( ast ) ) , unquote ( ast ) }
2657
2665
end
2658
2666
0 commit comments