From d696abc97143061bf2abb05922188e12b59306c1 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Fri, 14 Aug 2026 17:22:17 +0200 Subject: Use the new .is_a() for literal kind checks in the evaluator --- boot/validation.cc | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) (limited to 'boot/validation.cc') diff --git a/boot/validation.cc b/boot/validation.cc index 0c03fd0..26d4f64 100644 --- a/boot/validation.cc +++ b/boot/validation.cc @@ -21,33 +21,19 @@ along with GCC; see the file COPYING3. If not see namespace elna::boot { - validation_error::validation_error(const source_position position, payload_type payload) - : error(position), payload(payload) + validation_error::validation_error(const source_position position, source_position first) + : error(position), first(first) { } std::string validation_error::what() const { - return std::visit([](const auto& payload) -> std::string { - using T = std::decay_t; - - if constexpr (std::is_same_v) - { - return "Duplicate case label"; - } - }, this->payload); + return "Duplicate case label"; } std::optional> validation_error::note() const { - return std::visit([](const auto& payload) -> std::optional> { - using T = std::decay_t; - - if constexpr (std::is_same_v) - { - return std::make_pair("Previous label here", payload.first); - } - }, this->payload); + return previous_declaration_note(this->first, "Previous label here"); } validation_visitor::validation_visitor(symbol_bag& bag, const target_info& target) @@ -145,8 +131,7 @@ namespace elna::boot auto [case_position, inserted] = seen.try_emplace(value.value(), label->position()); if (!inserted) { - add_error(label->position(), - validation_error::duplicate_case{ case_position->second }); + add_error(label->position(), case_position->second); } } } -- cgit v1.2.3