@@ -5453,9 +5453,9 @@ auto pretty_print_visualize(is_as_expression_node const& n, int indent)
5453
5453
-> std::string;
5454
5454
auto pretty_print_visualize (id_expression_node const & n, int indent)
5455
5455
-> std::string;
5456
- auto pretty_print_visualize (compound_statement_node const & n, int indent)
5456
+ auto pretty_print_visualize (compound_statement_node const & n, int indent, bool after_else = false )
5457
5457
-> std::string;
5458
- auto pretty_print_visualize (selection_statement_node const & n, int indent)
5458
+ auto pretty_print_visualize (selection_statement_node const & n, int indent, bool no_indent = false )
5459
5459
-> std::string;
5460
5460
auto pretty_print_visualize (iteration_statement_node const & n, int indent)
5461
5461
-> std::string;
@@ -5471,7 +5471,7 @@ auto pretty_print_visualize(jump_statement_node const& n, int indent)
5471
5471
-> std::string;
5472
5472
auto pretty_print_visualize (using_statement_node const & n, int indent)
5473
5473
-> std::string;
5474
- auto pretty_print_visualize (statement_node const & n, int indent)
5474
+ auto pretty_print_visualize (statement_node const & n, int indent, bool no_indent = false )
5475
5475
-> std::string;
5476
5476
auto pretty_print_visualize (parameter_declaration_node const & n, int indent, bool is_template_param = false )
5477
5477
-> std::string;
@@ -5837,30 +5837,51 @@ auto pretty_print_visualize(id_expression_node const& n, int indent)
5837
5837
}
5838
5838
5839
5839
5840
- auto pretty_print_visualize (compound_statement_node const & n, int indent)
5840
+ auto pretty_print_visualize (compound_statement_node const & n, int indent, bool after_else /* = false */ )
5841
5841
-> std::string
5842
5842
{
5843
- auto ret = std::string{" \n " } + pre (indent) + " { " ;
5843
+ auto ret = std::string{} ;
5844
5844
5845
- for (auto & stmt : n.statements ) {
5846
- assert (stmt);
5847
- ret += pretty_print_visualize (*stmt, indent+1 );
5845
+ // If this is just a plain "if" right after an "else", pull them together visually
5846
+ if (
5847
+ after_else
5848
+ && std::ssize (n.statements ) == 1
5849
+ && n.statements [0 ]
5850
+ && n.statements [0 ]->is_selection ()
5851
+ && n.statements [0 ]->get_parameters ().empty ()
5852
+ )
5853
+ {
5854
+ ret += pretty_print_visualize (*n.statements [0 ], indent, true );
5848
5855
}
5849
5856
5850
- ret += std::string{" \n " } + pre (indent) + " }" ;
5857
+ else
5858
+ {
5859
+ ret += std::string{" \n " } + pre (indent) + " {" ;
5860
+
5861
+ for (auto & stmt : n.statements ) {
5862
+ assert (stmt);
5863
+ ret += pretty_print_visualize (*stmt, indent+1 );
5864
+ }
5865
+
5866
+ ret += std::string{" \n " } + pre (indent) + " }" ;
5867
+ }
5851
5868
5852
5869
return ret;
5853
5870
}
5854
5871
5855
5872
5856
- auto pretty_print_visualize (selection_statement_node const & n, int indent)
5873
+ auto pretty_print_visualize (selection_statement_node const & n, int indent, bool no_indent /* = false */ )
5857
5874
-> std::string
5858
5875
{
5859
5876
assert (n.identifier && n.expression && n.true_branch && n.false_branch );
5860
5877
5861
5878
auto ret = std::string{};
5862
5879
5863
- ret += std::string{" \n " } + pre (indent) + n.identifier ->as_string_view () + " " ;
5880
+ if (!no_indent) {
5881
+ ret += std::string{" \n " } + pre (indent);
5882
+ }
5883
+ ret += n.identifier ->as_string_view ();
5884
+ ret += " " ;
5864
5885
5865
5886
if (n.is_constexpr ) {
5866
5887
ret += " constexpr " ;
@@ -5871,7 +5892,7 @@ auto pretty_print_visualize(selection_statement_node const& n, int indent)
5871
5892
5872
5893
if (n.has_source_false_branch ) {
5873
5894
ret += std::string{" \n " } + pre (indent) + " else "
5874
- + pretty_print_visualize (*n.false_branch , indent);
5895
+ + pretty_print_visualize (*n.false_branch , indent, true );
5875
5896
}
5876
5897
5877
5898
return ret;
@@ -6076,7 +6097,7 @@ auto pretty_print_visualize(using_statement_node const& n, int indent)
6076
6097
}
6077
6098
6078
6099
6079
- auto pretty_print_visualize (statement_node const & n, int indent)
6100
+ auto pretty_print_visualize (statement_node const & n, int indent, bool no_indent /* = false */ )
6080
6101
-> std::string
6081
6102
{
6082
6103
auto ret = std::string{};
@@ -6097,7 +6118,7 @@ auto pretty_print_visualize(statement_node const& n, int indent)
6097
6118
}
6098
6119
6099
6120
ret += try_pretty_print_visualize<statement_node::compound >(n.statement , indent);
6100
- ret += try_pretty_print_visualize<statement_node::selection >(n.statement , indent);
6121
+ ret += try_pretty_print_visualize<statement_node::selection >(n.statement , indent, no_indent );
6101
6122
ret += try_pretty_print_visualize<statement_node::declaration>(n.statement , indent);
6102
6123
ret += try_pretty_print_visualize<statement_node::return_ >(n.statement , indent);
6103
6124
ret += try_pretty_print_visualize<statement_node::iteration >(n.statement , indent);
0 commit comments