From: Pierre-Emmanuel Patry <[email protected]>
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 <[email protected]>
---
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 1cadf9829fe..99fc4f6bfcc 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 281d4752fe1..1d8b1c5a65c 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 0dd17b2b43a..da66479d608 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 99c2493da14..95d3b3a4d61 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 912d42a4b97..a68d81f34ef 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;
--
2.45.2