https://gcc.gnu.org/g:ead5584a07347847fea93fb5df7ba28fbce1b735
commit r15-8114-gead5584a07347847fea93fb5df7ba28fbce1b735 Author: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com> Date: Thu Apr 25 15:39:33 2024 +0200 gccrs: Change return type of lookup_impl_block_type Change the return type to an optional. gcc/rust/ChangeLog: * typecheck/rust-type-util.cc (query_type): Adapt code to accomodate the new return type. * util/rust-hir-map.cc (Mappings::lookup_impl_block_type): Change the function's return type and remove the out pointer argument. * util/rust-hir-map.h: Update the function's prototype. Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com> Diff: --- gcc/rust/typecheck/rust-type-util.cc | 8 +++----- gcc/rust/util/rust-hir-map.cc | 9 ++++----- gcc/rust/util/rust-hir-map.h | 2 +- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/gcc/rust/typecheck/rust-type-util.cc b/gcc/rust/typecheck/rust-type-util.cc index af38acd0c320..6847d87ad961 100644 --- a/gcc/rust/typecheck/rust-type-util.cc +++ b/gcc/rust/typecheck/rust-type-util.cc @@ -89,12 +89,10 @@ query_type (HirId reference, TyTy::BaseType **result) } // is it an impl_type? - HIR::ImplBlock *impl_block_by_type = nullptr; - bool found_impl_block_type - = mappings.lookup_impl_block_type (reference, &impl_block_by_type); - if (found_impl_block_type) + if (auto impl_block_by_type = mappings.lookup_impl_block_type (reference)) { - *result = TypeCheckItem::ResolveImplBlockSelf (*impl_block_by_type); + *result + = TypeCheckItem::ResolveImplBlockSelf (*impl_block_by_type.value ()); context->query_completed (reference); return true; } diff --git a/gcc/rust/util/rust-hir-map.cc b/gcc/rust/util/rust-hir-map.cc index a5b1daf04c11..99c2493da14e 100644 --- a/gcc/rust/util/rust-hir-map.cc +++ b/gcc/rust/util/rust-hir-map.cc @@ -486,15 +486,14 @@ Mappings::lookup_hir_impl_block (HirId id) return it->second; } -bool -Mappings::lookup_impl_block_type (HirId id, HIR::ImplBlock **impl_block) +tl::optional<HIR::ImplBlock *> +Mappings::lookup_impl_block_type (HirId id) { auto it = hirImplBlockTypeMappings.find (id); if (it == hirImplBlockTypeMappings.end ()) - return false; + return tl::nullopt; - *impl_block = it->second; - return true; + return it->second; } void diff --git a/gcc/rust/util/rust-hir-map.h b/gcc/rust/util/rust-hir-map.h index 109693e9c745..912d42a4b970 100644 --- a/gcc/rust/util/rust-hir-map.h +++ b/gcc/rust/util/rust-hir-map.h @@ -131,7 +131,7 @@ public: void insert_hir_impl_block (HIR::ImplBlock *item); tl::optional<HIR::ImplBlock *> lookup_hir_impl_block (HirId id); - bool lookup_impl_block_type (HirId id, HIR::ImplBlock **impl_block); + tl::optional<HIR::ImplBlock *> lookup_impl_block_type (HirId id); void insert_module (HIR::Module *module); HIR::Module *lookup_module (HirId id);