diff options
| author | Eugen Wissner <belka@caraus.de> | 2026-10-08 01:29:37 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2026-10-08 01:29:37 +0200 |
| commit | d4b7f5e52a33f2d15aafca7f1b040f3f2821fd0c (patch) | |
| tree | c4d2f2ea44bbcb26108e86270a4454cd04f7873a /boot/ast.cc | |
| parent | 12e304fd56f054ba7296ab538eecd4280a67832a (diff) | |
| download | elna-d4b7f5e52a33f2d15aafca7f1b040f3f2821fd0c.tar.gz | |
Move record constructor type into the braces
Diffstat (limited to 'boot/ast.cc')
| -rw-r--r-- | boot/ast.cc | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/boot/ast.cc b/boot/ast.cc index dc643fe..d698cd4 100644 --- a/boot/ast.cc +++ b/boot/ast.cc @@ -423,6 +423,7 @@ namespace elna::boot void walking_visitor::visit(record_constructor_expression *expression) { + expression->record_type().accept(this); for (const field_initializer& initializer : expression->field_initializers) { initializer.value().accept(this); @@ -844,36 +845,29 @@ namespace elna::boot } record_constructor_expression::record_constructor_expression(const source_position position, - identifier&& type_name, - std::vector<field_initializer>&& field_initializers) - : node(position), type_name(std::move(type_name)), field_initializers(std::move(field_initializers)) + type_expression *record_type, std::vector<field_initializer>&& field_initializers) + : node(position), m_record_type(record_type), field_initializers(std::move(field_initializers)) { } - record_constructor_expression::record_constructor_expression(const source_position position, - identifier&& type_name, std::vector<type_expression *>&& arguments, - std::vector<field_initializer>&& field_initializers) - : node(position), type_name(std::move(type_name)), - field_initializers(std::move(field_initializers)), arguments(std::move(arguments)) + void record_constructor_expression::accept(parser_visitor *visitor) { + visitor->visit(this); } - record_constructor_expression::~record_constructor_expression() + record_constructor_expression *record_constructor_expression::is_record_constructor() { - for (const type_expression *argument : this->arguments) - { - delete argument; - } + return this; } - void record_constructor_expression::accept(parser_visitor *visitor) + type_expression& record_constructor_expression::record_type() { - visitor->visit(this); + return *this->m_record_type; } - record_constructor_expression *record_constructor_expression::is_record_constructor() + record_constructor_expression::~record_constructor_expression() { - return this; + delete this->m_record_type; } array_constructor_expression::array_constructor_expression(const source_position position, |
