Skip to content

Commit 06f3173

Browse files
committed
Make pretty printing not emit double ;, closes #840
1 parent ec06a73 commit 06f3173

File tree

1 file changed

+31
-13
lines changed

1 file changed

+31
-13
lines changed

source/parse.h

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4452,7 +4452,7 @@ auto pretty_print_visualize(expression_statement_node const& n, int indent)
44524452

44534453
auto ret = pretty_print_visualize(*n.expr, indent);
44544454

4455-
if (n.has_semicolon) {
4455+
if (n.has_semicolon && ret.back() != ';') {
44564456
ret += ";";
44574457
}
44584458

@@ -4654,8 +4654,10 @@ auto pretty_print_visualize(iteration_statement_node const& n, int indent)
46544654
+ stmts
46554655
+ next_expr
46564656
+ "\n" + pre(indent) + "while "
4657-
+ pretty_print_visualize(*n.condition, indent)
4658-
+ ";";
4657+
+ pretty_print_visualize(*n.condition, indent);
4658+
if (ret.back() != ';') {
4659+
ret += ";";
4660+
}
46594661
}
46604662
else {
46614663
assert (n.range && n.parameter && n.body);
@@ -4679,7 +4681,9 @@ auto pretty_print_visualize(return_statement_node const& n, int indent)
46794681
ret += " " + pretty_print_visualize(*n.expression, indent);
46804682
}
46814683

4682-
ret += ";";
4684+
if (ret.back() != ';') {
4685+
ret += ";";
4686+
}
46834687

46844688
return ret;
46854689
}
@@ -4759,7 +4763,7 @@ auto pretty_print_visualize(contract_node const& n, int indent)
47594763

47604764
ret += " )";
47614765

4762-
if (*n.kind == "assert") {
4766+
if (*n.kind == "assert" && ret.back() != ';') {
47634767
ret += ";";
47644768
}
47654769

@@ -4778,7 +4782,9 @@ auto pretty_print_visualize(jump_statement_node const& n, int indent)
47784782
ret += " " + n.label->to_string();
47794783
}
47804784

4781-
ret += ";";
4785+
if (ret.back() != ';') {
4786+
ret += ";";
4787+
}
47824788

47834789
return ret;
47844790
}
@@ -4795,7 +4801,10 @@ auto pretty_print_visualize(using_statement_node const& n, int indent)
47954801
ret += "namespace ";
47964802
}
47974803

4798-
ret += pretty_print_visualize(*n.id, indent) + ";";
4804+
ret += pretty_print_visualize(*n.id, indent);
4805+
if (ret.back() != ';') {
4806+
ret += ";";
4807+
}
47994808

48004809
return ret;
48014810
}
@@ -4979,6 +4988,9 @@ auto pretty_print_visualize(declaration_node const& n, int indent, bool include_
49794988
initializer += "=";
49804989
}
49814990
initializer += " " + pretty_print_visualize(*n.initializer, adjusted_indent);
4991+
if (initializer.ends_with(";;")) {
4992+
initializer.pop_back();
4993+
}
49824994
}
49834995
else if (!n.is_parameter) {
49844996
initializer = ";";
@@ -5083,24 +5095,30 @@ auto pretty_print_visualize(declaration_node const& n, int indent, bool include_
50835095
ret += " type"
50845096
+ requires_clause
50855097
+ " == "
5086-
+ pretty_print_visualize(*t, indent)
5087-
+ ";";
5098+
+ pretty_print_visualize(*t, indent);
5099+
if (ret.back() != ';') {
5100+
ret += ";";
5101+
}
50885102
}
50895103
else if (a->is_namespace_alias()) {
50905104
auto& id = std::get<alias_node::a_namespace>(a->initializer);
50915105
assert(id);
50925106
ret += " namespace == "
5093-
+ pretty_print_visualize(*id, indent)
5094-
+ ";";
5107+
+ pretty_print_visualize(*id, indent);
5108+
if (ret.back() != ';') {
5109+
ret += ";";
5110+
}
50955111
}
50965112
else if (a->is_object_alias()) {
50975113
auto& expr = std::get<alias_node::an_object>(a->initializer);
50985114
assert(expr);
50995115
ret += object_type_id
51005116
+ requires_clause
51015117
+ " == "
5102-
+ pretty_print_visualize(*expr, indent)
5103-
+ ";";
5118+
+ pretty_print_visualize(*expr, indent);
5119+
if (ret.back() != ';') {
5120+
ret += ";";
5121+
}
51045122
}
51055123
}
51065124

0 commit comments

Comments
 (0)