https://gcc.gnu.org/g:ba56cdb52711990414a50dd52c853cefcdd23f53

commit r15-8138-gba56cdb52711990414a50dd52c853cefcdd23f53
Author: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com>
Date:   Sat May 4 04:10:08 2024 +0200

    gccrs: Change lookup_ast_item's return type
    
    Wrap the function's return type within an optional.
    
    gcc/rust/ChangeLog:
    
            * metadata/rust-export-metadata.cc (ExportContext::emit_trait):
            Adapt call site to the new return type.
            (ExportContext::emit_function): Likewise.
            (ExportContext::emit_macro): Likewise.
            * util/rust-hir-map.cc (Mappings::lookup_ast_item): Change the
            function's return type.
            * util/rust-hir-map.h: Update the function's prototype.
    
    Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.pa...@embecosm.com>

Diff:
---
 gcc/rust/metadata/rust-export-metadata.cc | 15 +++++----------
 gcc/rust/util/rust-hir-map.cc             |  9 ++++-----
 gcc/rust/util/rust-hir-map.h              |  2 +-
 3 files changed, 10 insertions(+), 16 deletions(-)

diff --git a/gcc/rust/metadata/rust-export-metadata.cc 
b/gcc/rust/metadata/rust-export-metadata.cc
index 46afe3564255..79c5f30d7554 100644
--- a/gcc/rust/metadata/rust-export-metadata.cc
+++ b/gcc/rust/metadata/rust-export-metadata.cc
@@ -56,10 +56,8 @@ void
 ExportContext::emit_trait (const HIR::Trait &trait)
 {
   // lookup the AST node for this
-  AST::Item *item = nullptr;
-  bool ok
-    = mappings.lookup_ast_item (trait.get_mappings ().get_nodeid (), &item);
-  rust_assert (ok);
+  AST::Item *item
+    = mappings.lookup_ast_item (trait.get_mappings ().get_nodeid ()).value ();
 
   std::stringstream oss;
   AST::Dump dumper (oss);
@@ -72,9 +70,8 @@ void
 ExportContext::emit_function (const HIR::Function &fn)
 {
   // lookup the AST node for this
-  AST::Item *item = nullptr;
-  bool ok = mappings.lookup_ast_item (fn.get_mappings ().get_nodeid (), &item);
-  rust_assert (ok);
+  AST::Item *item
+    = mappings.lookup_ast_item (fn.get_mappings ().get_nodeid ()).value ();
 
   // is this a CFG macro or not
   if (item->is_marked_for_strip ())
@@ -119,9 +116,7 @@ ExportContext::emit_macro (NodeId macro)
   std::stringstream oss;
   AST::Dump dumper (oss);
 
-  AST::Item *item;
-  auto ok = mappings.lookup_ast_item (macro, &item);
-  rust_assert (ok);
+  AST::Item *item = mappings.lookup_ast_item (macro).value ();
 
   dumper.go (*item);
 
diff --git a/gcc/rust/util/rust-hir-map.cc b/gcc/rust/util/rust-hir-map.cc
index 7418fa4fb0be..03b3343eaa17 100644
--- a/gcc/rust/util/rust-hir-map.cc
+++ b/gcc/rust/util/rust-hir-map.cc
@@ -1225,15 +1225,14 @@ Mappings::insert_ast_item (AST::Item *item)
   ast_item_mappings[item->get_node_id ()] = item;
 }
 
-bool
-Mappings::lookup_ast_item (NodeId id, AST::Item **result)
+tl::optional<AST::Item *>
+Mappings::lookup_ast_item (NodeId id)
 {
   auto it = ast_item_mappings.find (id);
   if (it == ast_item_mappings.end ())
-    return false;
+    return tl::nullopt;
 
-  *result = it->second;
-  return true;
+  return it->second;
 }
 
 HIR::ImplBlock *
diff --git a/gcc/rust/util/rust-hir-map.h b/gcc/rust/util/rust-hir-map.h
index c70af5bb1bc9..bb7318e32ecc 100644
--- a/gcc/rust/util/rust-hir-map.h
+++ b/gcc/rust/util/rust-hir-map.h
@@ -345,7 +345,7 @@ public:
   bool node_is_module (NodeId query);
 
   void insert_ast_item (AST::Item *item);
-  bool lookup_ast_item (NodeId id, AST::Item **result);
+  tl::optional<AST::Item *> lookup_ast_item (NodeId id);
 
   HIR::ImplBlock *lookup_builtin_marker ();

Reply via email to