diff options
| author | Eugen Wissner <belka@caraus.de> | 2026-08-14 17:22:17 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2026-08-14 17:22:17 +0200 |
| commit | d696abc97143061bf2abb05922188e12b59306c1 (patch) | |
| tree | df8d2d1799e7036566d02e2201d159634d576481 /boot/validation.cc | |
| parent | bf7416a3ef9f0b787dcaebf816f3f3e6e385ff42 (diff) | |
| download | elna-d696abc97143061bf2abb05922188e12b59306c1.tar.gz | |
Use the new .is_a() for literal kind checks in the evaluator
Diffstat (limited to 'boot/validation.cc')
| -rw-r--r-- | boot/validation.cc | 25 |
1 files changed, 5 insertions, 20 deletions
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<decltype(payload)>; - - if constexpr (std::is_same_v<T, duplicate_case>) - { - return "Duplicate case label"; - } - }, this->payload); + return "Duplicate case label"; } std::optional<std::pair<std::string, source_position>> validation_error::note() const { - return std::visit([](const auto& payload) -> std::optional<std::pair<std::string, source_position>> { - using T = std::decay_t<decltype(payload)>; - - if constexpr (std::is_same_v<T, duplicate_case>) - { - 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<validation_error>(label->position(), - validation_error::duplicate_case{ case_position->second }); + add_error<validation_error>(label->position(), case_position->second); } } } |
