]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: Change return type of lookup_crate_name
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Thu, 25 Apr 2024 14:00:23 +0000 (16:00 +0200)
committerArthur Cohen <arthur.cohen@embecosm.com>
Mon, 17 Mar 2025 15:35:24 +0000 (16:35 +0100)
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>
gcc/rust/resolve/rust-ast-resolve-toplevel.h
gcc/rust/resolve/rust-toplevel-name-resolver-2.0.cc
gcc/rust/rust-session-manager.cc
gcc/rust/util/rust-hir-map.cc
gcc/rust/util/rust-hir-map.h

index 1cadf9829fee7d91d91145d45ea3bf48f9986a76..99fc4f6bfcc81d4fa80ce06a92d6129205e67e09 100644 (file)
@@ -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);
index 281d4752fe14ba4658afffc12718208d39876359..1d8b1c5a65c185e565a7b421d33fc334ff1c580c 100644 (file)
@@ -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);
 
index 0dd17b2b43a91a554d391620c10dfa09c2a89609..da66479d608cc31a8700d00d56b73ac470b3add8 100644 (file)
@@ -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;
index 99c2493da14e939cd0bc0edeadb64ef3d644fda1..95d3b3a4d611d2994fc95132c16b8c2c7c6ece63 100644 (file)
@@ -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
index 912d42a4b9705ee655b1cec01af881220de1ec33..a68d81f34efe5ccf9aa920d4dca792a15d0ef9dd 100644 (file)
@@ -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;