From 26a1b9ad9f347315bc14f2bf3ee064ede51794fc Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Sun, 30 Aug 2026 22:36:32 +0200 Subject: Fix record constructor for base records --- boot/symbol.cc | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'boot/symbol.cc') diff --git a/boot/symbol.cc b/boot/symbol.cc index 4d6832d..0d847e1 100644 --- a/boot/symbol.cc +++ b/boot/symbol.cc @@ -176,11 +176,11 @@ namespace elna::boot if (payload->return_type.no_return) { - result += ": !"; + result += " -> !"; } else if (!payload->return_type.proper_type.empty()) { - result += ": " + payload->return_type.proper_type.to_string(); + result += " -> " + payload->return_type.proper_type.to_string(); } return result; } @@ -570,4 +570,25 @@ namespace elna::boot } return type(); } + + type lookup_field(const type& composite_type, const std::string& field_name) + { + const type resolved_type = resolve_underlying_type(composite_type); + + if (auto record = resolved_type.get()) + { + for (const auto& [name, field_type] : record->fields) + { + if (name == field_name) + { + return field_type; + } + } + if (!record->base.empty()) + { + return lookup_field(record->base, field_name); + } + } + return type(); + } } -- cgit v1.2.3