diff options
author | Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com> | 2024-04-25 16:15:42 +0200 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2025-03-17 16:35:24 +0100 |
commit | 8c5be0dd1c460694a2c8ef78bdadc2c6aea01ad8 (patch) | |
tree | 6fe0430c53f1d55cbb3eadfd67bf1bc998324305 /gcc | |
parent | ddd0fb9e4bc725ba38396b36bfca0b143cb342f1 (diff) | |
download | gcc-8c5be0dd1c460694a2c8ef78bdadc2c6aea01ad8.zip gcc-8c5be0dd1c460694a2c8ef78bdadc2c6aea01ad8.tar.gz gcc-8c5be0dd1c460694a2c8ef78bdadc2c6aea01ad8.tar.bz2 |
gccrs: Change crate_num_to_nodeid return type
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.patry@embecosm.com>
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/rust/resolve/rust-ast-resolve-toplevel.h | 11 | ||||
-rw-r--r-- | gcc/rust/rust-session-manager.cc | 8 | ||||
-rw-r--r-- | gcc/rust/util/rust-hir-map.cc | 9 | ||||
-rw-r--r-- | 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 99fc4f6..565ca92 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 da66479..61a76d6 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 95d3b3a..76642a1 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 a68d81f..8181abe 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 (); |