From f7b035a505e86ad916a43ab1dc1a662a6066b011 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Thu, 24 Sep 2026 00:39:51 +0200 Subject: Move module heading to the top --- boot/symbol.cc | 112 ++++++++++++++++++++++++++++++--------------------------- 1 file changed, 59 insertions(+), 53 deletions(-) (limited to 'boot/symbol.cc') diff --git a/boot/symbol.cc b/boot/symbol.cc index 962808a..54cb595 100644 --- a/boot/symbol.cc +++ b/boot/symbol.cc @@ -67,77 +67,80 @@ namespace elna::boot bool type::operator==(const type& other) const { - type const resolved_this = resolve_aliases(*this); - type const resolved_that = resolve_aliases(other); + const type resolved_this = resolve_aliases(*this); + const type resolved_that = resolve_aliases(other); - if (auto left_record = resolved_this.get()) + if (const auto left_record = resolved_this.get()) { return left_record == resolved_that.get(); } - if (auto left_primitive = resolved_this.get()) + else if (const auto left_primitive = resolved_this.get()) { - auto right_primitive = resolved_that.get(); + const std::shared_ptr right_primitive = resolved_that.get(); return right_primitive != nullptr && left_primitive->identifier == right_primitive->identifier; } - if (auto left_enumeration = resolved_this.get()) + else if (const auto left_enumeration = resolved_this.get()) { return left_enumeration == resolved_that.get(); } - if (auto left_extern = resolved_this.get()) + else if (const auto left_extern = resolved_this.get()) { return left_extern == resolved_that.get(); } - if (auto left_pointer = resolved_this.get()) + else if (const auto left_pointer = resolved_this.get()) { - auto right_pointer = resolved_that.get(); + const std::shared_ptr right_pointer = resolved_that.get(); return right_pointer != nullptr && left_pointer->base == right_pointer->base; } - if (auto left_const = resolved_this.get()) + else if (const auto left_const = resolved_this.get()) { - auto right_const = resolved_that.get(); + const std::shared_ptr right_const = resolved_that.get(); return right_const != nullptr && left_const->unqualified == right_const->unqualified; } - if (auto left_array = resolved_this.get()) + else if (const auto left_array = resolved_this.get()) { - auto right_array = resolved_that.get(); + const std::shared_ptr right_array = resolved_that.get(); return right_array != nullptr && left_array->size == right_array->size && left_array->base == right_array->base; } - if (auto left_slice = resolved_this.get()) + else if (const auto left_slice = resolved_this.get()) { - auto right_slice = resolved_that.get(); + const std::shared_ptr right_slice = resolved_that.get(); return right_slice != nullptr && left_slice->base == right_slice->base; } - if (auto left_procedure = resolved_this.get()) + else if (const auto left_procedure = resolved_this.get()) { - auto right_procedure = resolved_that.get(); + const std::shared_ptr right_procedure = resolved_that.get(); return right_procedure != nullptr && left_procedure->return_type == right_procedure->return_type && left_procedure->parameters == right_procedure->parameters && left_procedure->variadic == right_procedure->variadic; } - if (auto left_parameter = resolved_this.get()) + else if (const auto left_parameter = resolved_this.get()) { return left_parameter == resolved_that.get(); } - if (auto left_generic = resolved_this.get()) + else if (const auto left_generic = resolved_this.get()) { return left_generic == resolved_that.get(); } - if (auto left_instance = resolved_this.get()) + else if (const auto left_instance = resolved_this.get()) { - auto right_instance = resolved_that.get(); + const std::shared_ptr right_instance = resolved_that.get(); return right_instance != nullptr && left_instance->generic == right_instance->generic && left_instance->arguments == right_instance->arguments; } - return resolved_this.empty() && resolved_that.empty(); + else + { + return resolved_this.empty() && resolved_that.empty(); + } } type::operator bool() const @@ -378,14 +381,14 @@ namespace elna::boot // matching the machine word. if (bit_size == properties.front().size * CHAR_BIT) { - auto alias = std::make_shared(integer_name, variant_type); + const std::shared_ptr alias = std::make_shared(integer_name, variant_type); symbols->enter(integer_name, std::make_shared(type(alias))); } } if (!symbols->contains(integer_name)) { - auto variant_type = type(std::make_shared(integer_name, properties.front())); + const type variant_type = type(std::make_shared(integer_name, properties.front())); symbols->enter(integer_name, std::make_shared(variant_type)); } @@ -489,14 +492,14 @@ namespace elna::boot std::shared_ptr symbol_bag::declared(const std::string& symbol_name) { - auto unresolved_alias = this->unresolved.find(symbol_name); + const auto unresolved_alias = this->unresolved.find(symbol_name); return unresolved_alias == this->unresolved.end() ? std::shared_ptr() : unresolved_alias->second; } std::shared_ptr symbol_bag::resolve(const std::string& symbol_name, type& resolution) { - auto unresolved_node = this->unresolved.extract(symbol_name); + const auto unresolved_node = this->unresolved.extract(symbol_name); assert(!unresolved_node.empty()); auto unresolved_declaration = unresolved_node.mapped(); @@ -563,7 +566,7 @@ namespace elna::boot { type resolved_alias = resolve_aliases(alias); - if (auto qualified = resolved_alias.get()) + if (const auto qualified = resolved_alias.get()) { return resolve_underlying_type(qualified->unqualified); } @@ -575,7 +578,7 @@ namespace elna::boot type unwrap_aliases(const type& checked) { - if (auto alias = checked.get()) + if (const auto alias = checked.get()) { return unwrap_aliases(alias->referent); } @@ -590,7 +593,7 @@ namespace elna::boot type substitute(const type& subject, const std::vector& parameters, const std::vector& arguments) { - if (auto parameter = subject.get()) + if (const auto parameter = subject.get()) { for (std::size_t i = 0; i < parameters.size() && i < arguments.size(); ++i) { @@ -601,27 +604,27 @@ namespace elna::boot } return subject; } - if (auto pointer = subject.get()) + else if (const auto pointer = subject.get()) { return type(std::make_shared( substitute(pointer->base, parameters, arguments))); } - if (auto slice = subject.get()) + else if (const auto slice = subject.get()) { return type(std::make_shared( substitute(slice->base, parameters, arguments))); } - if (auto array = subject.get()) + else if (const auto array = subject.get()) { return type(std::make_shared( substitute(array->base, parameters, arguments), array->size)); } - if (auto qualified = subject.get()) + else if (const auto qualified = subject.get()) { return type(std::make_shared( substitute(qualified->unqualified, parameters, arguments))); } - if (auto procedure = subject.get()) + else if (const auto procedure = subject.get()) { procedure_type::return_t result_return = procedure->return_type; @@ -630,7 +633,7 @@ namespace elna::boot result_return = procedure_type::return_t( substitute(result_return.proper_type, parameters, arguments)); } - auto result = std::make_shared(std::move(result_return)); + const std::shared_ptr result = std::make_shared(std::move(result_return)); result->variadic = procedure->variadic; result->parameters.reserve(procedure->parameters.size()); @@ -640,7 +643,7 @@ namespace elna::boot } return type(result); } - if (auto instance = subject.get()) + else if (const auto instance = subject.get()) { std::vector substituted; @@ -667,17 +670,20 @@ namespace elna::boot { type resolved = resolve_underlying_type(checked); - if (auto instance = resolved.get()) + if (const auto instance = resolved.get()) { std::shared_ptr const generic = unwrap_generic(instance->generic); return generic == nullptr ? type() : resolve_underlying_type(generic->referent); } - if (auto generic = resolved.get()) + else if (const auto generic = resolved.get()) { return resolve_underlying_type(generic->referent); } - return resolved; + else + { + return resolved; + } } /* @@ -686,13 +692,13 @@ namespace elna::boot */ static type substitute_from(const type& subject, const type& taken) { - auto instance = subject.get(); + const std::shared_ptr instance = subject.get(); if (instance == nullptr) { return taken; } - std::shared_ptr const generic = unwrap_generic(instance->generic); + const std::shared_ptr generic = unwrap_generic(instance->generic); return generic == nullptr ? type() @@ -702,7 +708,7 @@ namespace elna::boot type base_of(const type& derived) { const type resolved = resolve_underlying_type(derived); - auto record = erase_generic(resolved).get(); + const std::shared_ptr record = erase_generic(resolved).get(); return record == nullptr || record->base.empty() ? type() @@ -723,13 +729,13 @@ namespace elna::boot type resolve_aliases(const type& checked) { - if (auto alias = checked.get()) + if (const auto alias = checked.get()) { return resolve_aliases(alias->referent); } - if (auto instance = checked.get()) + else if (const auto instance = checked.get()) { - std::shared_ptr const generic = unwrap_generic(instance->generic); + const std::shared_ptr generic = unwrap_generic(instance->generic); // A record referent makes the instantiation nominal, so resolution // stops here and Stack#[^File] stays distinct from Stack#[^Socket]. @@ -744,7 +750,7 @@ namespace elna::boot bool is_primitive_type(const type& checked, const std::string& name) { - if (auto primitive_checked = checked.get()) + if (const auto primitive_checked = checked.get()) { return primitive_checked->identifier == name; } @@ -753,7 +759,7 @@ namespace elna::boot bool is_integer_type(const type& checked) { - if (auto primitive_checked = checked.get()) + if (const auto primitive_checked = checked.get()) { return primitive_checked->identifier.starts_with("Int"); } @@ -762,7 +768,7 @@ namespace elna::boot bool is_word_type(const type& checked) { - if (auto primitive_checked = checked.get()) + if (const auto primitive_checked = checked.get()) { return primitive_checked->identifier.starts_with("Word"); } @@ -811,9 +817,9 @@ namespace elna::boot bool is_string_type(const type& checked) { - if (auto slice = checked.get()) + if (const auto slice = checked.get()) { - if (auto base = resolve_aliases(slice->base).get()) + if (const auto base = resolve_aliases(slice->base).get()) { return is_primitive_type(resolve_aliases(base->unqualified), "Word8"); } @@ -823,11 +829,11 @@ namespace elna::boot type get_range_base_type(const type& range) { - if (auto array = range.get()) + if (const auto array = range.get()) { return array->base; } - else if (auto slice = range.get()) + else if (const auto slice = range.get()) { return slice->base; } @@ -838,7 +844,7 @@ namespace elna::boot { const type resolved_type = resolve_underlying_type(composite_type); - if (auto record = erase_generic(resolved_type).get()) + if (const auto record = erase_generic(resolved_type).get()) { for (const auto& [name, field] : record->fields) { -- cgit v1.2.3