diff options
| author | Eugen Wissner <belka@caraus.de> | 2026-08-05 01:03:55 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2026-08-05 21:27:36 +0200 |
| commit | b2dee14873402ee3d13d59ae5579593796ea862f (patch) | |
| tree | 1f245eac1a23a73f45124498fc8274874e35750e /boot/ast.cc | |
| parent | 1c2fb173ea3b674207badc721556ad72962b266e (diff) | |
| download | elna-b2dee14873402ee3d13d59ae5579593796ea862f.tar.gz | |
Check that constants are initialized
Diffstat (limited to 'boot/ast.cc')
| -rw-r--r-- | boot/ast.cc | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/boot/ast.cc b/boot/ast.cc index 7157315..fb1e276 100644 --- a/boot/ast.cc +++ b/boot/ast.cc @@ -394,6 +394,7 @@ namespace elna::boot void walking_visitor::visit(array_type_expression *expression) { expression->base().accept(this); + expression->dimensions().accept(this); } void walking_visitor::visit(slice_type_expression *expression) @@ -451,7 +452,7 @@ namespace elna::boot void walking_visitor::visit(array_constructor_expression *expression) { - expression->m_element_type->accept(this); + expression->array_type().accept(this); for (auto *element : expression->elements) { element->accept(this); @@ -626,14 +627,15 @@ namespace elna::boot } array_type_expression::array_type_expression(const source_position position, - type_expression *base, const std::uint32_t size) - : node(position), m_base(base), size(size) + type_expression *base, expression *dimensions) + : node(position), m_base(base), m_dimensions(dimensions) { } array_type_expression::~array_type_expression() { - delete m_base; + delete this->m_base; + delete this->m_dimensions; } void array_type_expression::accept(parser_visitor *visitor) @@ -646,9 +648,14 @@ namespace elna::boot return this; } - type_expression& array_type_expression::base() + type_expression& array_type_expression::base() const { - return *m_base; + return *this->m_base; + } + + expression& array_type_expression::dimensions() const + { + return *this->m_dimensions; } slice_type_expression::slice_type_expression(const source_position position, @@ -659,7 +666,7 @@ namespace elna::boot slice_type_expression::~slice_type_expression() { - delete m_base; + delete this->m_base; } void slice_type_expression::accept(parser_visitor *visitor) @@ -818,9 +825,8 @@ namespace elna::boot } array_constructor_expression::array_constructor_expression(const source_position position, - std::uint32_t size, type_expression *element_type, - std::vector<expression *>&& elements) - : node(position), size(size), m_element_type(element_type), elements(std::move(elements)) + array_type_expression *element_type, std::vector<expression *>&& elements) + : node(position), m_element_type(element_type), elements(std::move(elements)) { } @@ -834,9 +840,14 @@ namespace elna::boot return this; } + array_type_expression& array_constructor_expression::array_type() const + { + return *this->m_element_type; + } + array_constructor_expression::~array_constructor_expression() { - delete m_element_type; + delete this->m_element_type; for (const expression *element : elements) { delete element; |
