From: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com> Change the function's return type to an optional.
gcc/rust/ChangeLog: * resolve/rust-ast-resolve-toplevel.h: Adapt the code to the new return type. * rust-session-manager.cc (Session::load_extern_crate): Likewise. * util/rust-hir-map.cc (Mappings::crate_num_to_nodeid): Change the return type. * util/rust-hir-map.h: Update the function's prototype. Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com> --- gcc/rust/resolve/rust-ast-resolve-toplevel.h | 11 ++++------- gcc/rust/rust-session-manager.cc | 8 +++----- gcc/rust/util/rust-hir-map.cc | 9 ++++----- gcc/rust/util/rust-hir-map.h | 2 +- 4 files changed, 12 insertions(+), 18 deletions(-) diff --git a/gcc/rust/resolve/rust-ast-resolve-toplevel.h b/gcc/rust/resolve/rust-ast-resolve-toplevel.h index 99fc4f6bfcc..565ca922e84 100644 --- a/gcc/rust/resolve/rust-ast-resolve-toplevel.h +++ b/gcc/rust/resolve/rust-ast-resolve-toplevel.h @@ -429,8 +429,7 @@ public: if (extern_crate.references_self ()) { CrateNum crate_num = mappings.get_current_crate (); - bool ok = mappings.crate_num_to_nodeid (crate_num, resolved_crate); - rust_assert (ok); + resolved_crate = mappings.crate_num_to_nodeid (crate_num).value (); } else { @@ -442,11 +441,9 @@ public: 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); - if (!ok) + if (auto resolved = mappings.crate_num_to_nodeid (*cnum)) + resolved_crate = resolved.value (); + else { rust_internal_error_at (extern_crate.get_locus (), "failed to resolve crate to nodeid"); diff --git a/gcc/rust/rust-session-manager.cc b/gcc/rust/rust-session-manager.cc index da66479d608..61a76d69a6b 100644 --- a/gcc/rust/rust-session-manager.cc +++ b/gcc/rust/rust-session-manager.cc @@ -1050,12 +1050,10 @@ Session::load_extern_crate (const std::string &crate_name, location_t locus) // has it already been loaded? if (auto crate_num = mappings.lookup_crate_name (crate_name)) { - NodeId resolved_node_id = UNKNOWN_NODEID; - bool resolved - = mappings.crate_num_to_nodeid (*crate_num, resolved_node_id); - rust_assert (resolved); + auto resolved_node_id = mappings.crate_num_to_nodeid (*crate_num); + rust_assert (resolved_node_id); - return resolved_node_id; + return *resolved_node_id; } std::string relative_import_path = ""; diff --git a/gcc/rust/util/rust-hir-map.cc b/gcc/rust/util/rust-hir-map.cc index 95d3b3a4d61..76642a1b132 100644 --- a/gcc/rust/util/rust-hir-map.cc +++ b/gcc/rust/util/rust-hir-map.cc @@ -175,15 +175,14 @@ Mappings::lookup_crate_name (const std::string &crate_name) const return tl::nullopt; } -bool -Mappings::crate_num_to_nodeid (const CrateNum &crate_num, NodeId &node_id) const +tl::optional<NodeId> +Mappings::crate_num_to_nodeid (const CrateNum &crate_num) const { auto it = ast_crate_mappings.find (crate_num); if (it == ast_crate_mappings.end ()) - return false; + return tl::nullopt; - node_id = it->second->get_node_id (); - return true; + return it->second->get_node_id (); } bool diff --git a/gcc/rust/util/rust-hir-map.h b/gcc/rust/util/rust-hir-map.h index a68d81f34ef..8181abe00a9 100644 --- a/gcc/rust/util/rust-hir-map.h +++ b/gcc/rust/util/rust-hir-map.h @@ -85,7 +85,7 @@ public: std::string get_current_crate_name () 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; + tl::optional<NodeId> crate_num_to_nodeid (const CrateNum &crate_num) const; bool node_is_crate (NodeId node_id) const; NodeId get_next_node_id (); -- 2.45.2