diff options
author | Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com> | 2024-04-25 16:00:23 +0200 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2025-03-17 16:35:24 +0100 |
commit | ddd0fb9e4bc725ba38396b36bfca0b143cb342f1 (patch) | |
tree | eb972a6e29f9b3fa79f15f0fe78ca69bca234d42 | |
parent | ead5584a07347847fea93fb5df7ba28fbce1b735 (diff) | |
download | gcc-ddd0fb9e4bc725ba38396b36bfca0b143cb342f1.zip gcc-ddd0fb9e4bc725ba38396b36bfca0b143cb342f1.tar.gz gcc-ddd0fb9e4bc725ba38396b36bfca0b143cb342f1.tar.bz2 |
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.patry@embecosm.com>
-rw-r--r-- | gcc/rust/resolve/rust-ast-resolve-toplevel.h | 9 | ||||
-rw-r--r-- | gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc | 3 | ||||
-rw-r--r-- | gcc/rust/rust-session-manager.cc | 6 | ||||
-rw-r--r-- | gcc/rust/util/rust-hir-map.cc | 12 | ||||
-rw-r--r-- | 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 1cadf98..99fc4f6 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 281d475..1d8b1c5 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 0dd17b2..da66479 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 99c2493..95d3b3a 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 912d42a..a68d81f 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; |