]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gccrs: Change return type of lookup_impl_block_type
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Thu, 25 Apr 2024 13:39:33 +0000 (15:39 +0200)
committerArthur Cohen <arthur.cohen@embecosm.com>
Mon, 17 Mar 2025 15:35:24 +0000 (16:35 +0100)
Change the return type to an optional.

gcc/rust/ChangeLog:

* typecheck/rust-type-util.cc (query_type): Adapt code to accomodate
the new return type.
* util/rust-hir-map.cc (Mappings::lookup_impl_block_type): Change
the function's return type and remove the out pointer argument.
* util/rust-hir-map.h: Update the function's prototype.

Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
gcc/rust/typecheck/rust-type-util.cc
gcc/rust/util/rust-hir-map.cc
gcc/rust/util/rust-hir-map.h

index af38acd0c320f5a3c5b9c87ac0552673c0dfc6d5..6847d87ad961cd01be3351ec8f45a9e380d7a84b 100644 (file)
@@ -89,12 +89,10 @@ query_type (HirId reference, TyTy::BaseType **result)
     }
 
   // is it an impl_type?
-  HIR::ImplBlock *impl_block_by_type = nullptr;
-  bool found_impl_block_type
-    = mappings.lookup_impl_block_type (reference, &impl_block_by_type);
-  if (found_impl_block_type)
+  if (auto impl_block_by_type = mappings.lookup_impl_block_type (reference))
     {
-      *result = TypeCheckItem::ResolveImplBlockSelf (*impl_block_by_type);
+      *result
+       = TypeCheckItem::ResolveImplBlockSelf (*impl_block_by_type.value ());
       context->query_completed (reference);
       return true;
     }
index a5b1daf04c11e010994783443e9788116e438534..99c2493da14e939cd0bc0edeadb64ef3d644fda1 100644 (file)
@@ -486,15 +486,14 @@ Mappings::lookup_hir_impl_block (HirId id)
   return it->second;
 }
 
-bool
-Mappings::lookup_impl_block_type (HirId id, HIR::ImplBlock **impl_block)
+tl::optional<HIR::ImplBlock *>
+Mappings::lookup_impl_block_type (HirId id)
 {
   auto it = hirImplBlockTypeMappings.find (id);
   if (it == hirImplBlockTypeMappings.end ())
-    return false;
+    return tl::nullopt;
 
-  *impl_block = it->second;
-  return true;
+  return it->second;
 }
 
 void
index 109693e9c745522c6e33e6d6c4786b80a92906d0..912d42a4b9705ee655b1cec01af881220de1ec33 100644 (file)
@@ -131,7 +131,7 @@ public:
 
   void insert_hir_impl_block (HIR::ImplBlock *item);
   tl::optional<HIR::ImplBlock *> lookup_hir_impl_block (HirId id);
-  bool lookup_impl_block_type (HirId id, HIR::ImplBlock **impl_block);
+  tl::optional<HIR::ImplBlock *> lookup_impl_block_type (HirId id);
 
   void insert_module (HIR::Module *module);
   HIR::Module *lookup_module (HirId id);