From 128a564be05afb1cb2ec76884a81c2bd536899fd Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Sat, 3 Oct 2026 00:46:51 +0200 Subject: Replace noreturn type with an attribute --- boot/symbol.cc | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) (limited to 'boot/symbol.cc') diff --git a/boot/symbol.cc b/boot/symbol.cc index 54cb595..2293275 100644 --- a/boot/symbol.cc +++ b/boot/symbol.cc @@ -199,13 +199,9 @@ namespace elna::boot { result += " #{varargs}"; } - if (payload->return_type.no_return) + else if (!payload->return_type.empty()) { - result += " -> !"; - } - else if (!payload->return_type.proper_type.empty()) - { - result += " -> " + payload->return_type.proper_type.to_string(); + result += " -> " + payload->return_type.to_string(); } return result; } @@ -272,7 +268,7 @@ namespace elna::boot { } - procedure_type::procedure_type(return_t return_type) + procedure_type::procedure_type(type return_type) : return_type(std::move(return_type)) { } @@ -414,14 +410,14 @@ namespace elna::boot const type boolean = type(std::make_shared("Bool", target.bool_properties)); result->enter("Bool", std::make_shared(boolean)); - procedure_type assert_symbol{ procedure_type::return_t() }; + procedure_type assert_symbol{}; assert_symbol.parameters.push_back(boolean); std::shared_ptr const assert_info = std::make_shared(assert_symbol, std::vector{ "condition" }); result->enter("assert", assert_info); const type load_parameter = type(std::make_shared("T")); - procedure_type volatile_load_symbol{ procedure_type::return_t(load_parameter) }; + procedure_type volatile_load_symbol{ load_parameter }; volatile_load_symbol.parameters.emplace_back(std::make_shared(load_parameter)); std::shared_ptr const volatile_load_info = std::make_shared(volatile_load_symbol, std::vector{ "source" }); @@ -429,7 +425,7 @@ namespace elna::boot result->enter("volatile_load", volatile_load_info); const type store_parameter = type(std::make_shared("T")); - procedure_type volatile_store_symbol{ procedure_type::return_t() }; + procedure_type volatile_store_symbol{}; volatile_store_symbol.parameters.emplace_back(std::make_shared(store_parameter)); volatile_store_symbol.parameters.push_back(store_parameter); std::shared_ptr const volatile_store_info = @@ -626,12 +622,11 @@ namespace elna::boot } else if (const auto procedure = subject.get()) { - procedure_type::return_t result_return = procedure->return_type; + type result_return = procedure->return_type; - if (!result_return.no_return && !result_return.proper_type.empty()) + if (!result_return.empty()) { - result_return = procedure_type::return_t( - substitute(result_return.proper_type, parameters, arguments)); + result_return = substitute(result_return, parameters, arguments); } const std::shared_ptr result = std::make_shared(std::move(result_return)); -- cgit v1.2.3