File tree Expand file tree Collapse file tree 2 files changed +7
-4
lines changed Expand file tree Collapse file tree 2 files changed +7
-4
lines changed Original file line number Diff line number Diff line change @@ -1990,7 +1990,7 @@ class cppfront
1990
1990
//
1991
1991
auto emit (expression_list_node const & n) -> void
1992
1992
{
1993
- if (should_add_expression_list_parens () && !n.expressions .empty ()) {
1993
+ if (should_add_expression_list_parens () && !n.expressions .empty () && !n. inside_initializer ) {
1994
1994
printer.print_cpp2 (" (" , n.position ());
1995
1995
}
1996
1996
@@ -2024,7 +2024,7 @@ class cppfront
2024
2024
}
2025
2025
}
2026
2026
2027
- if (should_add_expression_list_parens () && !n.expressions .empty ()) {
2027
+ if (should_add_expression_list_parens () && !n.expressions .empty () && !n. inside_initializer ) {
2028
2028
printer.print_cpp2 (" )" , n.position ());
2029
2029
}
2030
2030
// We want to consume only one of these
Original file line number Diff line number Diff line change @@ -257,6 +257,7 @@ struct expression_list_node
257
257
{
258
258
source_position open_paren = {};
259
259
source_position close_paren = {};
260
+ bool inside_initializer = false ;
260
261
261
262
struct term {
262
263
passing_style pass = {};
@@ -1317,9 +1318,10 @@ class parser
1317
1318
1318
1319
if (curr ().type () == lexeme::LeftParen)
1319
1320
{
1321
+ bool inside_initializer = (peek (-1 )->type () == lexeme::Assignment);
1320
1322
auto open_paren = curr ().position ();
1321
1323
next ();
1322
- auto expr_list = expression_list (open_paren);
1324
+ auto expr_list = expression_list (open_paren, inside_initializer );
1323
1325
if (!expr_list) {
1324
1326
error (" unexpected text - ( is not followed by an expression-list" );
1325
1327
next ();
@@ -1704,10 +1706,11 @@ class parser
1704
1706
// G expression
1705
1707
// G expression-list , expression
1706
1708
// G
1707
- auto expression_list (source_position open_paren) -> std::unique_ptr<expression_list_node> {
1709
+ auto expression_list (source_position open_paren, bool inside_initializer = false ) -> std::unique_ptr<expression_list_node> {
1708
1710
auto pass = passing_style::in;
1709
1711
auto n = std::make_unique<expression_list_node>();
1710
1712
n->open_paren = open_paren;
1713
+ n->inside_initializer = inside_initializer;
1711
1714
1712
1715
if (curr ().type () == lexeme::Identifier && curr () == " out" ) {
1713
1716
pass = passing_style::out;
You can’t perform that action at this time.
0 commit comments