From 47c8f99b6ef812dbc22ca56a39ba21bccad47796 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Tue, 8 Sep 2026 20:43:39 +0200 Subject: Implement generic pointers --- boot/evaluator.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'boot/evaluator.cc') diff --git a/boot/evaluator.cc b/boot/evaluator.cc index b1648af..0a6ebe5 100644 --- a/boot/evaluator.cc +++ b/boot/evaluator.cc @@ -72,6 +72,12 @@ namespace elna::boot { return target.word_properties.front(); } + else if (resolved.get() != nullptr) + { + const type erased = erase_generic(resolved); + + return erased.empty() ? std::nullopt : get_type_properties(erased, target); + } else if (auto resolved_primitive = resolved.get()) { return resolved_primitive->properties; @@ -127,7 +133,7 @@ namespace elna::boot { break; } - current_record = resolve_underlying_type(current_record->base).get(); + current_record = erase_generic(current_record->base).get(); } for (auto const *current_record : std::views::reverse(chain)) { @@ -1097,7 +1103,7 @@ namespace elna::boot else if (subject.name.name() == "offset") { auto *field = subject.arguments.at(1)->is_named(); - auto record = resolve_underlying_type(subject.types.front()).get(); + auto record = erase_generic(subject.types.front()).get(); if (field == nullptr || record == nullptr) { return std::nullopt; -- cgit v1.2.3