aboutsummaryrefslogtreecommitdiff
path: root/boot/symbol.cc
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2026-08-23 14:05:26 +0200
committerEugen Wissner <belka@caraus.de>2026-08-23 14:05:26 +0200
commitbf41d022ce9736a92097f416ab96fca7ab4594ca (patch)
tree74813da62ec329f826828d2cac8701a94277dc41 /boot/symbol.cc
parente4fece8e791cddec1c765c9834e1c13d0f258e16 (diff)
downloadelna-bf41d022ce9736a92097f416ab96fca7ab4594ca.tar.gz
Reject 0-sized variables
Diffstat (limited to 'boot/symbol.cc')
-rw-r--r--boot/symbol.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/boot/symbol.cc b/boot/symbol.cc
index fdf6a65..b32782e 100644
--- a/boot/symbol.cc
+++ b/boot/symbol.cc
@@ -55,6 +55,7 @@ namespace elna::boot
template std::shared_ptr<constant_type> type::get<constant_type>() const;
template std::shared_ptr<procedure_type> type::get<procedure_type>() const;
template std::shared_ptr<enumeration_type> type::get<enumeration_type>() const;
+ template std::shared_ptr<extern_type> type::get<extern_type>() const;
bool type::operator==(const std::nullptr_t&) const
{
@@ -80,6 +81,10 @@ namespace elna::boot
{
return left_enumeration == resolved_that.get<enumeration_type>();
}
+ if (auto left_extern = resolved_this.get<extern_type>())
+ {
+ return left_extern == resolved_that.get<extern_type>();
+ }
if (auto left_pointer = resolved_this.get<pointer_type>())
{
auto right_pointer = resolved_that.get<pointer_type>();
@@ -181,6 +186,10 @@ namespace elna::boot
{
return "(enumeration)";
}
+ else if constexpr (std::is_same_v<T, std::shared_ptr<extern_type>>)
+ {
+ return "extern";
+ }
}, payload);
}