]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Change return type of lookup_defid
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Fri, 26 Apr 2024 10:02:53 +0000 (12:02 +0200)
committerP-E-P <32375388+P-E-P@users.noreply.github.com>
Fri, 17 May 2024 15:28:30 +0000 (15:28 +0000)
Change the return type to an optional.

gcc/rust/ChangeLog:

* backend/rust-compile-base.cc (HIRCompileBase::resolve_method_address):
Change calling code to accomodate new return type.
* checks/errors/privacy/rust-privacy-reporter.cc:
Likewise.
* typecheck/rust-hir-type-check-base.cc (TypeCheckBase::get_marker_predicate):
Likewise.
* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
Likewise.
* typecheck/rust-tyty-bounds.cc (TypeBoundsProbe::assemble_builtin_candidate):
Likewise.
* typecheck/rust-tyty.cc (ClosureType::setup_fn_once_output): Likewise.
* util/rust-hir-map.cc (Mappings::lookup_defid): Change function's
return type.
* util/rust-hir-map.h: Update function's prototype.

Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
gcc/rust/backend/rust-compile-base.cc
gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc
gcc/rust/typecheck/rust-hir-type-check-base.cc
gcc/rust/typecheck/rust-hir-type-check-expr.cc
gcc/rust/typecheck/rust-tyty-bounds.cc
gcc/rust/typecheck/rust-tyty.cc
gcc/rust/util/rust-hir-map.cc
gcc/rust/util/rust-hir-map.h

index 5cf9ed948e5037bc4ac9ec947fdd8e3474650703..56665a575b5b2b61a0d7f57d4939fb337d4aa0ce 100644 (file)
@@ -877,13 +877,12 @@ HIRCompileBase::resolve_method_address (TyTy::FnType *fntype,
   // Now we can try and resolve the address since this might be a forward
   // declared function, generic function which has not be compiled yet or
   // its an not yet trait bound function
-  HIR::Item *resolved_item = ctx->get_mappings ().lookup_defid (id);
-  if (resolved_item != nullptr)
+  if (auto resolved_item = ctx->get_mappings ().lookup_defid (id))
     {
       if (!fntype->has_substitutions_defined ())
-       return CompileItem::compile (resolved_item, ctx);
+       return CompileItem::compile (*resolved_item, ctx);
 
-      return CompileItem::compile (resolved_item, ctx, fntype);
+      return CompileItem::compile (*resolved_item, ctx, fntype);
     }
 
   // it might be resolved to a trait item
index 1ce47fda1a9c2c83814ab90ff8c13ee01e7a298c..c1e217d5998796f14c19cad616a8690d07c5160c 100644 (file)
@@ -146,8 +146,7 @@ PrivacyReporter::check_for_privacy_violation (const NodeId &use_id,
        if (!current_module.has_value ())
          return;
 
-       auto module = mappings.lookup_defid (vis.get_module_id ());
-       rust_assert (module != nullptr);
+       auto module = mappings.lookup_defid (vis.get_module_id ()).value ();
 
        auto mod_node_id = module->get_mappings ().get_nodeid ();
 
index 4d92f0c2b4fe613368c5b35826f24b1e4b67159d..82782c68f418466577e8eb0b151575360b274d9e 100644 (file)
@@ -414,8 +414,7 @@ TyTy::TypeBoundPredicate
 TypeCheckBase::get_marker_predicate (LangItem::Kind item_type, location_t locus)
 {
   DefId item_id = mappings.get_lang_item (item_type, locus);
-  HIR::Item *item = mappings.lookup_defid (item_id);
-  rust_assert (item != nullptr);
+  HIR::Item *item = mappings.lookup_defid (item_id).value ();
   rust_assert (item->get_item_kind () == HIR::Item::ItemKind::Trait);
 
   HIR::Trait &trait = *static_cast<HIR::Trait *> (item);
index 57739e5602594a2a1016e105b70b4c85f639ee3c..2565a57b09c23fea9e486abad3aaef3b6685fe56 100644 (file)
@@ -642,8 +642,7 @@ TypeCheckExpr::visit (HIR::RangeFromToExpr &expr)
     }
 
   // look it up and it _must_ be a struct definition
-  HIR::Item *item = mappings.lookup_defid (respective_lang_item_id);
-  rust_assert (item != nullptr);
+  HIR::Item *item = mappings.lookup_defid (respective_lang_item_id).value ();
 
   TyTy::BaseType *item_type = nullptr;
   bool ok
@@ -697,8 +696,7 @@ TypeCheckExpr::visit (HIR::RangeFromExpr &expr)
     }
 
   // look it up and it _must_ be a struct definition
-  HIR::Item *item = mappings.lookup_defid (respective_lang_item_id);
-  rust_assert (item != nullptr);
+  HIR::Item *item = mappings.lookup_defid (respective_lang_item_id).value ();
 
   TyTy::BaseType *item_type = nullptr;
   bool ok
@@ -745,8 +743,7 @@ TypeCheckExpr::visit (HIR::RangeToExpr &expr)
     }
 
   // look it up and it _must_ be a struct definition
-  HIR::Item *item = mappings.lookup_defid (respective_lang_item_id);
-  rust_assert (item != nullptr);
+  HIR::Item *item = mappings.lookup_defid (respective_lang_item_id).value ();
 
   TyTy::BaseType *item_type = nullptr;
   bool ok
@@ -792,8 +789,7 @@ TypeCheckExpr::visit (HIR::RangeFullExpr &expr)
     }
 
   // look it up and it _must_ be a struct definition
-  HIR::Item *item = mappings.lookup_defid (respective_lang_item_id);
-  rust_assert (item != nullptr);
+  HIR::Item *item = mappings.lookup_defid (respective_lang_item_id).value ();
 
   TyTy::BaseType *item_type = nullptr;
   bool ok
@@ -823,8 +819,7 @@ TypeCheckExpr::visit (HIR::RangeFromToInclExpr &expr)
     }
 
   // look it up and it _must_ be a struct definition
-  HIR::Item *item = mappings.lookup_defid (respective_lang_item_id);
-  rust_assert (item != nullptr);
+  HIR::Item *item = mappings.lookup_defid (respective_lang_item_id).value ();
 
   TyTy::BaseType *item_type = nullptr;
   bool ok
@@ -1599,7 +1594,7 @@ TypeCheckExpr::visit (HIR::ClosureExpr &expr)
   rust_assert (lang_item_defined);
 
   // these lang items are always traits
-  HIR::Item *item = mappings.lookup_defid (respective_lang_item_id);
+  HIR::Item *item = mappings.lookup_defid (respective_lang_item_id).value ();
   rust_assert (item->get_item_kind () == HIR::Item::ItemKind::Trait);
   HIR::Trait *trait_item = static_cast<HIR::Trait *> (item);
 
index f1abfa9f5710b9485e423442587744d71d3255bb..03ba622704e4c0a610d3d10e109b4e37f6b76217 100644 (file)
@@ -157,9 +157,10 @@ TypeBoundsProbe::assemble_builtin_candidate (LangItem::Kind lang_item)
   if (!found_lang_item)
     return;
 
-  HIR::Item *item = mappings.lookup_defid (id);
-  if (item == nullptr)
+  auto defid = mappings.lookup_defid (id);
+  if (!defid)
     return;
+  auto item = defid.value ();
 
   rust_assert (item->get_item_kind () == HIR::Item::ItemKind::Trait);
   HIR::Trait *trait = static_cast<HIR::Trait *> (item);
index 8d3d3779c0a754232622dccbe00c41f33d74e9df..dc4fac956d1cb8a9ac16f07ab25c4b57ee68b2eb 100644 (file)
@@ -2229,7 +2229,7 @@ ClosureType::setup_fn_once_output () const
   rust_assert (trait_item_lang_item_defined);
 
   // resolve to the trait
-  HIR::Item *item = mappings.lookup_defid (trait_id);
+  HIR::Item *item = mappings.lookup_defid (trait_id).value ();
   rust_assert (item->get_item_kind () == HIR::Item::ItemKind::Trait);
   HIR::Trait *trait = static_cast<HIR::Trait *> (item);
 
index 24c8d618fdfeac8c82cbfc56f71de067fc5b0223..64f2f5c2bfdbcd292fafbf25775a994d1de9f921 100644 (file)
@@ -312,7 +312,7 @@ Mappings::insert_defid_mapping (DefId id, HIR::Item *item)
   CrateNum crate_num = id.crateNum;
   LocalDefId local_def_id = id.localDefId;
 
-  rust_assert (lookup_defid (id) == nullptr);
+  rust_assert (!lookup_defid (id));
   rust_assert (lookup_local_defid (crate_num, local_def_id) == nullptr);
   rust_assert (lookup_trait_item_defid (id) == nullptr);
 
@@ -320,12 +320,12 @@ Mappings::insert_defid_mapping (DefId id, HIR::Item *item)
   insert_local_defid_mapping (crate_num, local_def_id, item);
 }
 
-HIR::Item *
+tl::optional<HIR::Item *>
 Mappings::lookup_defid (DefId id)
 {
   auto it = defIdMappings.find (id);
   if (it == defIdMappings.end ())
-    return nullptr;
+    return tl::nullopt;
 
   return it->second;
 }
@@ -336,7 +336,7 @@ Mappings::insert_defid_mapping (DefId id, HIR::TraitItem *item)
   CrateNum crate_num = id.crateNum;
   LocalDefId local_def_id = id.localDefId;
 
-  rust_assert (lookup_defid (id) == nullptr);
+  rust_assert (!lookup_defid (id));
   rust_assert (lookup_local_defid (crate_num, local_def_id) == nullptr);
   rust_assert (lookup_trait_item_defid (id) == nullptr);
 
index 6bcda0a52bf3648e9b41ade55a55c7fc6d81ca4e..f7d99d18c447b1fc78e9019ef1fc8219e08bb085 100644 (file)
@@ -106,7 +106,7 @@ public:
   bool is_local_hirid_crate (HirId crateNum);
 
   void insert_defid_mapping (DefId id, HIR::Item *item);
-  HIR::Item *lookup_defid (DefId id);
+  tl::optional<HIR::Item *> lookup_defid (DefId id);
   void insert_defid_mapping (DefId id, HIR::TraitItem *item);
   HIR::TraitItem *lookup_trait_item_defid (DefId id);