https://gcc.gnu.org/g:7146c1b6f5edfd7d0b92685d81c81fa1ec40ceab
commit r15-8112-g7146c1b6f5edfd7d0b92685d81c81fa1ec40ceab Author: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com> Date: Thu Apr 25 15:14:36 2024 +0200 gccrs: Change return type of lookup_hir_extern_block Change the return type to an optional in order to easily differentiate between a null pointer and an missing value. gcc/rust/ChangeLog: * checks/errors/rust-unsafe-checker.cc (UnsafeChecker::check_function_call): Adapt function call to new return type. * typecheck/rust-type-util.cc (query_type): Likewise. * util/rust-hir-map.cc (Mappings::insert_hir_extern_block): Likewise. (Mappings::lookup_hir_extern_block): Change return type to an optional. * util/rust-hir-map.h: Update the function's prototype. Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com> Diff: --- gcc/rust/checks/errors/rust-unsafe-checker.cc | 2 +- gcc/rust/typecheck/rust-type-util.cc | 8 ++++---- gcc/rust/util/rust-hir-map.cc | 6 +++--- gcc/rust/util/rust-hir-map.h | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/gcc/rust/checks/errors/rust-unsafe-checker.cc b/gcc/rust/checks/errors/rust-unsafe-checker.cc index 18e79e3ce659..fc83283a795c 100644 --- a/gcc/rust/checks/errors/rust-unsafe-checker.cc +++ b/gcc/rust/checks/errors/rust-unsafe-checker.cc @@ -177,7 +177,7 @@ UnsafeChecker::check_function_call (HirId node_id, location_t locus) if (maybe_extern) check_extern_call (static_cast<ExternalItem *> (maybe_extern), - mappings.lookup_hir_extern_block (parent_extern_block), + *mappings.lookup_hir_extern_block (parent_extern_block), locus); } diff --git a/gcc/rust/typecheck/rust-type-util.cc b/gcc/rust/typecheck/rust-type-util.cc index f6f8c8e9e148..9a777863c2c2 100644 --- a/gcc/rust/typecheck/rust-type-util.cc +++ b/gcc/rust/typecheck/rust-type-util.cc @@ -105,11 +105,11 @@ query_type (HirId reference, TyTy::BaseType **result) = mappings.lookup_hir_extern_item (reference, &parent_extern_block_id); if (extern_item != nullptr) { - HIR::ExternBlock *block - = mappings.lookup_hir_extern_block (parent_extern_block_id); - rust_assert (block != nullptr); + auto block = mappings.lookup_hir_extern_block (parent_extern_block_id); + rust_assert (block.has_value ()); - *result = TypeCheckTopLevelExternItem::Resolve (extern_item, *block); + *result + = TypeCheckTopLevelExternItem::Resolve (extern_item, *block.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 0d134bf4ab9f..184ab13494db 100644 --- a/gcc/rust/util/rust-hir-map.cc +++ b/gcc/rust/util/rust-hir-map.cc @@ -426,18 +426,18 @@ void Mappings::insert_hir_extern_block (HIR::ExternBlock *block) { auto id = block->get_mappings ().get_hirid (); - rust_assert (lookup_hir_extern_block (id) == nullptr); + rust_assert (!lookup_hir_extern_block (id).has_value ()); hirExternBlockMappings[id] = block; insert_node_to_hir (block->get_mappings ().get_nodeid (), id); } -HIR::ExternBlock * +tl::optional<HIR::ExternBlock *> Mappings::lookup_hir_extern_block (HirId id) { auto it = hirExternBlockMappings.find (id); if (it == hirExternBlockMappings.end ()) - return nullptr; + return tl::nullopt; return it->second; } diff --git a/gcc/rust/util/rust-hir-map.h b/gcc/rust/util/rust-hir-map.h index 5565ef93f1c8..ef4d65639a07 100644 --- a/gcc/rust/util/rust-hir-map.h +++ b/gcc/rust/util/rust-hir-map.h @@ -124,7 +124,7 @@ public: tl::optional<HIR::TraitItem *> lookup_hir_trait_item (HirId id); void insert_hir_extern_block (HIR::ExternBlock *block); - HIR::ExternBlock *lookup_hir_extern_block (HirId id); + tl::optional<HIR::ExternBlock *> lookup_hir_extern_block (HirId id); void insert_hir_extern_item (HIR::ExternalItem *item, HirId parent_block); HIR::ExternalItem *lookup_hir_extern_item (HirId id, HirId *parent_block);