aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>2024-04-25 16:00:23 +0200
committerArthur Cohen <arthur.cohen@embecosm.com>2025-03-17 16:35:24 +0100
commitddd0fb9e4bc725ba38396b36bfca0b143cb342f1 (patch)
treeeb972a6e29f9b3fa79f15f0fe78ca69bca234d42
parentead5584a07347847fea93fb5df7ba28fbce1b735 (diff)
downloadgcc-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.h9
-rw-r--r--gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc3
-rw-r--r--gcc/rust/rust-session-manager.cc6
-rw-r--r--gcc/rust/util/rust-hir-map.cc12
-rw-r--r--gcc/rust/util/rust-hir-map.h4
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;