From d09cd98bd3df9920f0ecab97615048c0594e8f7f Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Sun, 19 Jul 2026 23:23:22 +0200 Subject: Add clang-tidy support --- boot/symbol.cc | 109 +++++++++++++++++++++++++++++++++------------------------ 1 file changed, 63 insertions(+), 46 deletions(-) (limited to 'boot/symbol.cc') diff --git a/boot/symbol.cc b/boot/symbol.cc index 7b45612..d7a1cae 100644 --- a/boot/symbol.cc +++ b/boot/symbol.cc @@ -17,6 +17,8 @@ along with GCC; see the file COPYING3. If not see #include "elna/boot/symbol.h" +#include + namespace elna::boot { type::type(std::shared_ptr alias) @@ -64,14 +66,16 @@ namespace elna::boot { if constexpr (std::is_same_v) { - if (auto *wp = std::get_if>(&payload)) - return wp->lock(); + if (const auto *weak_pointer = std::get_if>(&payload)) { + return weak_pointer->lock(); +} return nullptr; } else { - if (auto *sp = std::get_if>(&payload)) - return *sp; + if (auto *shared_pointer = std::get_if>(&payload)) { + return *shared_pointer; +} return nullptr; } } @@ -93,8 +97,8 @@ namespace elna::boot bool type::operator==(const type& other) const { - type resolved_this = resolve_aliases(*this); - type resolved_that = resolve_aliases(other); + type const resolved_this = resolve_aliases(*this); + type const resolved_that = resolve_aliases(other); if (auto left_record = resolved_this.get()) { @@ -146,64 +150,79 @@ namespace elna::boot std::string type::to_string() const { - return std::visit([](const auto& p) -> std::string { - using T = std::decay_t; + return std::visit([](const auto& payload) -> std::string { + using T = std::decay_t; if constexpr (std::is_same_v) + { return ""; + } else if constexpr (std::is_same_v>) - return p.lock()->name; + { + return payload.lock()->name; + } else if constexpr (std::is_same_v>) - return p->identifier; + { + return payload->identifier; + } else if constexpr (std::is_same_v>) - return "^" + p->base.to_string(); + { + return "^" + payload->base.to_string(); + } else if constexpr (std::is_same_v>) - return "const " + p->unqualified.to_string(); + { + return "const " + payload->unqualified.to_string(); + } else if constexpr (std::is_same_v>) - return "[" + std::to_string(p->size) + "]" + p->base.to_string(); + { + return "[" + std::to_string(payload->size) + "]" + payload->base.to_string(); + } else if constexpr (std::is_same_v>) { - if (p->base.empty()) - return "record ... end"; - else - return "record(" + p->base.to_string() + ") ... end"; + return payload->base.empty() + ? "record ... end" + : "record(" + payload->base.to_string() + ") ... end"; } else if constexpr (std::is_same_v>) { std::string result = "proc("; - for (std::size_t i = 0; i < p->parameters.size(); ++i) + for (std::size_t i = 0; i < payload->parameters.size(); ++i) { - if (i > 0) result += ", "; - result += p->parameters[i].to_string(); + if (i > 0) { result += ", "; +} + result += payload->parameters[i].to_string(); } result += ")"; - if (p->return_type.no_return) + if (payload->return_type.no_return) { result += ": !"; - else if (!p->return_type.proper_type.empty()) - result += ": " + p->return_type.proper_type.to_string(); + } else if (!payload->return_type.proper_type.empty()) { + result += ": " + payload->return_type.proper_type.to_string(); +} return result; } else if constexpr (std::is_same_v>) + { return "(enumeration)"; + } }, payload); } alias_type::alias_type(const std::string& name) - : name(name), referent() + : name(name) { } pointer_type::pointer_type(type base) - : base(base) + : base(std::move(base)) { } constant_type::constant_type(type unqualified) - : unqualified(unqualified) + : unqualified(std::move(unqualified)) { } array_type::array_type(type base, std::uint64_t size) - : base(base), size(size) + : base(std::move(base)), size(size) { } @@ -213,12 +232,12 @@ namespace elna::boot } record_type::record_type(type base) - : base(base) + : base(std::move(base)) { } procedure_type::procedure_type(return_t return_type) - : return_type(return_type) + : return_type(std::move(return_type)) { } @@ -227,9 +246,7 @@ namespace elna::boot { } - info::~info() - { - } + info::~info() = default; std::shared_ptr info::is_type() { @@ -246,7 +263,7 @@ namespace elna::boot return nullptr; } - type_info::type_info(const type symbol) + type_info::type_info(const type& symbol) : symbol(symbol) { } @@ -256,9 +273,9 @@ namespace elna::boot return std::static_pointer_cast(shared_from_this()); } - procedure_info::procedure_info(const procedure_type symbol, const std::vector names, + procedure_info::procedure_info(const procedure_type& symbol, const std::vector& names, std::shared_ptr scope) - : symbol(symbol), names(names), scope(scope) + : symbol(symbol), names(names), scope(std::move(scope)) { } @@ -272,7 +289,7 @@ namespace elna::boot return this->scope == nullptr; } - variable_info::variable_info(const type symbol, bool is_extern) + variable_info::variable_info(const type& symbol, bool is_extern) : symbol(symbol), is_extern(is_extern) { } @@ -293,19 +310,19 @@ namespace elna::boot result->enter("Float", std::make_shared(type(std::make_shared("Float")))); result->enter("String", std::make_shared(type(std::make_shared("String")))); - type boolean = type(std::make_shared("Bool")); + type const boolean = type(std::make_shared("Bool")); result->enter("Bool", std::make_shared(boolean)); procedure_type assert_symbol{ procedure_type::return_t() }; assert_symbol.parameters.push_back(boolean); - std::shared_ptr assert_info = std::make_shared(assert_symbol, + std::shared_ptr const assert_info = std::make_shared(assert_symbol, std::vector{ "condition" }); result->enter("assert", assert_info); return result; } - symbol_bag::symbol_bag(forward_table&& unresolved, std::shared_ptr global_table) + symbol_bag::symbol_bag(forward_table&& unresolved, const std::shared_ptr& global_table) : unresolved(unresolved) { this->symbols = std::make_shared(global_table); @@ -313,7 +330,7 @@ namespace elna::boot std::shared_ptr symbol_bag::lookup(const std::string& name) { - for (auto import_bag : this->imports) + for (const auto& import_bag : this->imports) { if (auto result = import_bag->lookup(name)) { @@ -323,7 +340,7 @@ namespace elna::boot return this->symbols->lookup(name); } - bool symbol_bag::enter(const std::string& name, std::shared_ptr entry) + bool symbol_bag::enter(const std::string& name, const std::shared_ptr& entry) { return this->symbols->enter(name, entry); } @@ -336,7 +353,7 @@ namespace elna::boot void symbol_bag::enter(std::shared_ptr child) { - this->symbols = child; + this->symbols = std::move(child); } std::shared_ptr symbol_bag::leave() @@ -383,7 +400,7 @@ namespace elna::boot return m_exported; } - type resolve_underlying_type(std::shared_ptr alias) + type resolve_underlying_type(const std::shared_ptr& alias) { return resolve_underlying_type(alias->referent); } @@ -422,7 +439,7 @@ namespace elna::boot bool is_numeric_type(const type& checked) { - type resolved = resolve_underlying_type(checked); + type const resolved = resolve_underlying_type(checked); return is_primitive_type(resolved, "Int") || is_primitive_type(resolved, "Word") @@ -431,7 +448,7 @@ namespace elna::boot bool is_integral_type(const type& checked) { - type resolved = resolve_underlying_type(checked); + type const resolved = resolve_underlying_type(checked); return is_primitive_type(resolved, "Int") || is_primitive_type(resolved, "Word"); @@ -439,7 +456,7 @@ namespace elna::boot bool is_discrete_type(const type& checked) { - type resolved = resolve_underlying_type(checked); + type const resolved = resolve_underlying_type(checked); return is_primitive_type(resolved, "Int") || is_primitive_type(resolved, "Word") -- cgit v1.2.3