From d4b7f5e52a33f2d15aafca7f1b040f3f2821fd0c Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Thu, 8 Oct 2026 01:29:37 +0200 Subject: Move record constructor type into the braces --- boot/ast.cc | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) (limited to 'boot/ast.cc') 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_initializers) - : node(position), type_name(std::move(type_name)), field_initializers(std::move(field_initializers)) + type_expression *record_type, std::vector&& 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&& arguments, - std::vector&& 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, -- cgit v1.2.3