aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>2024-04-25 16:15:42 +0200
committerArthur Cohen <arthur.cohen@embecosm.com>2025-03-17 16:35:24 +0100
commit8c5be0dd1c460694a2c8ef78bdadc2c6aea01ad8 (patch)
tree6fe0430c53f1d55cbb3eadfd67bf1bc998324305 /gcc
parentddd0fb9e4bc725ba38396b36bfca0b143cb342f1 (diff)
downloadgcc-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.h11
-rw-r--r--gcc/rust/rust-session-manager.cc8
-rw-r--r--gcc/rust/util/rust-hir-map.cc9
-rw-r--r--gcc/rust/util/rust-hir-map.h2
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 ();