Skip to content

Commit c840548

Browse files
authored
refactor(parse): enable compiling with Libc++ in C++23+ (#818)
1 parent 6b48a72 commit c840548

File tree

1 file changed

+35
-23
lines changed

1 file changed

+35
-23
lines changed

source/parse.h

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -751,14 +751,6 @@ struct expression_statement_node
751751
};
752752

753753

754-
expression_node::expression_node()
755-
{
756-
if (!expression_statement_node::current_expression_statements.empty()) {
757-
my_statement = expression_statement_node::current_expression_statements.back();
758-
}
759-
}
760-
761-
762754
auto expression_node::is_standalone_expression() const
763755
-> bool
764756
{
@@ -811,12 +803,7 @@ struct postfix_expression_node
811803
std::vector<term> ops;
812804
capture_group* cap_grp = {};
813805

814-
~postfix_expression_node()
815-
{
816-
if (cap_grp) {
817-
cap_grp->remove(this);
818-
}
819-
}
806+
~postfix_expression_node();
820807

821808
// API
822809
//
@@ -1454,6 +1441,14 @@ struct is_as_expression_node
14541441
};
14551442

14561443

1444+
expression_node::expression_node()
1445+
{
1446+
if (!expression_statement_node::current_expression_statements.empty()) {
1447+
my_statement = expression_statement_node::current_expression_statements.back();
1448+
}
1449+
}
1450+
1451+
14571452
struct id_expression_node
14581453
{
14591454
source_position pos;
@@ -1542,6 +1537,14 @@ struct id_expression_node
15421537
};
15431538

15441539

1540+
postfix_expression_node::~postfix_expression_node()
1541+
{
1542+
if (cap_grp) {
1543+
cap_grp->remove(this);
1544+
}
1545+
}
1546+
1547+
15451548
auto primary_expression_node::is_fold_expression() const
15461549
-> bool
15471550
{
@@ -1627,9 +1630,7 @@ struct compound_statement_node
16271630

16281631
colno_t body_indent = 0;
16291632

1630-
compound_statement_node(source_position o = source_position{})
1631-
: open_brace{o}
1632-
{ }
1633+
compound_statement_node(source_position o = source_position{});
16331634

16341635
auto position() const
16351636
-> source_position
@@ -1890,9 +1891,7 @@ struct statement_node
18901891
std::unique_ptr<parameter_declaration_list_node> parameters;
18911892
compound_statement_node* compound_parent = nullptr;
18921893

1893-
statement_node(compound_statement_node* compound_parent_ = nullptr)
1894-
: compound_parent{ compound_parent_ }
1895-
{ }
1894+
statement_node(compound_statement_node* compound_parent_ = nullptr);
18961895

18971896
enum active { expression=0, compound, selection, declaration, return_, iteration, using_, contract, inspect, jump };
18981897
std::variant<
@@ -2185,9 +2184,7 @@ struct function_type_node
21852184

21862185
std::vector<std::unique_ptr<contract_node>> contracts;
21872186

2188-
function_type_node(declaration_node* decl)
2189-
: my_decl{decl}
2190-
{ }
2187+
function_type_node(declaration_node* decl);
21912188

21922189
// API
21932190
//
@@ -3430,6 +3427,21 @@ struct declaration_node
34303427
};
34313428

34323429

3430+
compound_statement_node::compound_statement_node(source_position o)
3431+
: open_brace{o}
3432+
{ }
3433+
3434+
3435+
statement_node::statement_node(compound_statement_node* compound_parent_)
3436+
: compound_parent{ compound_parent_ }
3437+
{ }
3438+
3439+
3440+
function_type_node::function_type_node(declaration_node* decl)
3441+
: my_decl{decl}
3442+
{ }
3443+
3444+
34333445
auto parameter_declaration_node::has_name() const
34343446
-> bool
34353447
{

0 commit comments

Comments
 (0)