aboutsummaryrefslogtreecommitdiff
path: root/boot/result.cc
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2026-08-14 17:22:17 +0200
committerEugen Wissner <belka@caraus.de>2026-08-14 17:22:17 +0200
commitd696abc97143061bf2abb05922188e12b59306c1 (patch)
treedf8d2d1799e7036566d02e2201d159634d576481 /boot/result.cc
parentbf7416a3ef9f0b787dcaebf816f3f3e6e385ff42 (diff)
downloadelna-d696abc97143061bf2abb05922188e12b59306c1.tar.gz
Use the new .is_a() for literal kind checks in the evaluator
Diffstat (limited to 'boot/result.cc')
-rw-r--r--boot/result.cc22
1 files changed, 22 insertions, 0 deletions
diff --git a/boot/result.cc b/boot/result.cc
index 15fe8b4..a5f0803 100644
--- a/boot/result.cc
+++ b/boot/result.cc
@@ -129,6 +129,28 @@ namespace elna::boot
return this->m_exported;
}
+ std::optional<std::pair<std::string, source_position>> previous_declaration_note(
+ const std::optional<source_position>& original, std::string_view label)
+ {
+ if (original.has_value() && original.value().start().available())
+ {
+ return std::make_pair(std::string(label), original.value());
+ }
+ else
+ {
+ return std::nullopt;
+ }
+ }
+
+ std::optional<std::pair<std::string, source_position>> identifier_list_note(
+ const std::vector<identifier>& identifiers)
+ {
+ auto position_span = source_position(identifiers.front().position().start(),
+ identifiers.back().position().end());
+
+ return std::make_optional(std::make_pair(join(identifiers), position_span));
+ }
+
std::vector<identifier> extract_identifiers(const std::vector<identifier_definition>& identifiers)
{
std::vector<identifier> result;