https://gcc.gnu.org/g:ddd0fb9e4bc725ba38396b36bfca0b143cb342f1
commit r15-8115-gddd0fb9e4bc725ba38396b36bfca0b143cb342f1 Author: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com> Date: Thu Apr 25 16:00:23 2024 +0200 gccrs: Change return type of lookup_crate_name Change the function's return type to use an optional. gcc/rust/ChangeLog: * resolve/rust-ast-resolve-toplevel.h: Adapt the code to the new return type. * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit): Likewise. * rust-session-manager.cc (Session::load_extern_crate): Likewise. * util/rust-hir-map.cc (Mappings::lookup_crate_name): Change the 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/resolve/rust-ast-resolve-toplevel.h | 9 ++++----- gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc | 3 +-- gcc/rust/rust-session-manager.cc | 6 ++---- gcc/rust/util/rust-hir-map.cc | 12 ++++-------- gcc/rust/util/rust-hir-map.h | 4 ++-- 5 files changed, 13 insertions(+), 21 deletions(-) diff --git a/gcc/rust/resolve/rust-ast-resolve-toplevel.h b/gcc/rust/resolve/rust-ast-resolve-toplevel.h index 1cadf9829fee..99fc4f6bfcc8 100644 --- a/gcc/rust/resolve/rust-ast-resolve-toplevel.h +++ b/gcc/rust/resolve/rust-ast-resolve-toplevel.h @@ -434,16 +434,15 @@ public: } else { - CrateNum found_crate_num = UNKNOWN_CRATENUM; - bool found - = mappings.lookup_crate_name (extern_crate.get_referenced_crate (), - found_crate_num); - if (!found) + auto cnum + = mappings.lookup_crate_name (extern_crate.get_referenced_crate ()); + if (!cnum) { rust_error_at (extern_crate.get_locus (), "unknown crate %qs", extern_crate.get_referenced_crate ().c_str ()); return; } + auto found_crate_num = cnum.value (); bool ok = mappings.crate_num_to_nodeid (found_crate_num, resolved_crate); diff --git a/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc b/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc index 281d4752fe14..1d8b1c5a65c1 100644 --- a/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc +++ b/gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc @@ -231,8 +231,7 @@ void TopLevel::visit (AST::ExternCrate &crate) { auto &mappings = Analysis::Mappings::get (); - CrateNum num; - rust_assert (mappings.lookup_crate_name (crate.get_referenced_crate (), num)); + CrateNum num = *mappings.lookup_crate_name (crate.get_referenced_crate ()); auto attribute_macros = mappings.lookup_attribute_proc_macros (num); diff --git a/gcc/rust/rust-session-manager.cc b/gcc/rust/rust-session-manager.cc index 0dd17b2b43a9..da66479d608c 100644 --- a/gcc/rust/rust-session-manager.cc +++ b/gcc/rust/rust-session-manager.cc @@ -1048,13 +1048,11 @@ NodeId Session::load_extern_crate (const std::string &crate_name, location_t locus) { // has it already been loaded? - CrateNum found_crate_num = UNKNOWN_CRATENUM; - bool found = mappings.lookup_crate_name (crate_name, found_crate_num); - if (found) + if (auto crate_num = mappings.lookup_crate_name (crate_name)) { NodeId resolved_node_id = UNKNOWN_NODEID; bool resolved - = mappings.crate_num_to_nodeid (found_crate_num, resolved_node_id); + = mappings.crate_num_to_nodeid (*crate_num, resolved_node_id); rust_assert (resolved); return resolved_node_id; diff --git a/gcc/rust/util/rust-hir-map.cc b/gcc/rust/util/rust-hir-map.cc index 99c2493da14e..95d3b3a4d611 100644 --- a/gcc/rust/util/rust-hir-map.cc +++ b/gcc/rust/util/rust-hir-map.cc @@ -164,19 +164,15 @@ Mappings::get_current_crate_name () const return name; } -bool -Mappings::lookup_crate_name (const std::string &crate_name, - CrateNum &resolved_crate_num) const +tl::optional<CrateNum> +Mappings::lookup_crate_name (const std::string &crate_name) const { for (const auto &it : crate_names) { if (it.second.compare (crate_name) == 0) - { - resolved_crate_num = it.first; - return true; - } + return it.first; } - return false; + return tl::nullopt; } bool diff --git a/gcc/rust/util/rust-hir-map.h b/gcc/rust/util/rust-hir-map.h index 912d42a4b970..a68d81f34efe 100644 --- a/gcc/rust/util/rust-hir-map.h +++ b/gcc/rust/util/rust-hir-map.h @@ -83,8 +83,8 @@ public: bool get_crate_name (CrateNum crate_num, std::string &name) const; void set_crate_name (CrateNum crate_num, const std::string &name); std::string get_current_crate_name () const; - bool lookup_crate_name (const std::string &crate_name, - CrateNum &resolved_crate_num) const; + tl::optional<CrateNum> + lookup_crate_name (const std::string &crate_name) const; bool crate_num_to_nodeid (const CrateNum &crate_num, NodeId &node_id) const; bool node_is_crate (NodeId node_id) const;