aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>2024-05-02 12:33:20 +0200
committerArthur Cohen <arthur.cohen@embecosm.com>2025-03-17 16:35:24 +0100
commit6dce8a479a288a64ffa87f3e3549f1dc6900b527 (patch)
tree48daf08531eadceaefae4d70f44f19c8724a28d1 /gcc
parentfa6c5c08a131d108a6a9f927b5154d2db81a84ba (diff)
downloadgcc-6dce8a479a288a64ffa87f3e3549f1dc6900b527.zip
gcc-6dce8a479a288a64ffa87f3e3549f1dc6900b527.tar.gz
gcc-6dce8a479a288a64ffa87f3e3549f1dc6900b527.tar.bz2
gccrs: Change return type of lookup trait defid functions.
Wrap the return type with an optional. gcc/rust/ChangeLog: * backend/rust-compile-base.cc (HIRCompileBase::resolve_method_address): Update code around lookup return type. * typecheck/rust-tyty-bounds.cc (TypeCheckBase::get_predicate_from_bound): Likewise. * typecheck/rust-tyty.cc (ClosureType::setup_fn_once_output): Likewise. * util/rust-hir-map.cc (Mappings::insert_defid_mapping): Likewise. (Mappings::lookup_trait_item_defid): Update return type with an optional. (Mappings::get_lang_item): Likewise. * util/rust-hir-map.h: Update the functions prototype. Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rust/backend/rust-compile-base.cc2
-rw-r--r--gcc/rust/typecheck/rust-tyty-bounds.cc7
-rw-r--r--gcc/rust/typecheck/rust-tyty.cc4
-rw-r--r--gcc/rust/util/rust-hir-map.cc10
-rw-r--r--gcc/rust/util/rust-hir-map.h6
5 files changed, 16 insertions, 13 deletions
diff --git a/gcc/rust/backend/rust-compile-base.cc b/gcc/rust/backend/rust-compile-base.cc
index c7031ed..add173c 100644
--- a/gcc/rust/backend/rust-compile-base.cc
+++ b/gcc/rust/backend/rust-compile-base.cc
@@ -887,7 +887,7 @@ HIRCompileBase::resolve_method_address (TyTy::FnType *fntype,
// it might be resolved to a trait item
HIR::TraitItem *trait_item
- = ctx->get_mappings ().lookup_trait_item_defid (id);
+ = ctx->get_mappings ().lookup_trait_item_defid (id).value ();
HIR::Trait *trait = ctx->get_mappings ().lookup_trait_item_mapping (
trait_item->get_mappings ().get_hirid ());
diff --git a/gcc/rust/typecheck/rust-tyty-bounds.cc b/gcc/rust/typecheck/rust-tyty-bounds.cc
index a18a0e4..4340438 100644
--- a/gcc/rust/typecheck/rust-tyty-bounds.cc
+++ b/gcc/rust/typecheck/rust-tyty-bounds.cc
@@ -245,8 +245,11 @@ TypeCheckBase::get_predicate_from_bound (HIR::TypePath &type_path,
rust_assert (fn.has_return_type ());
TypeCheckType::Resolve (fn.get_return_type ().get ());
- HIR::TraitItem *trait_item = mappings.lookup_trait_item_lang_item (
- LangItem::Kind::FN_ONCE_OUTPUT, final_seg->get_locus ());
+ HIR::TraitItem *trait_item
+ = mappings
+ .lookup_trait_item_lang_item (LangItem::Kind::FN_ONCE_OUTPUT,
+ final_seg->get_locus ())
+ .value ();
std::vector<HIR::GenericArgsBinding> bindings;
location_t output_locus = fn.get_return_type ()->get_locus ();
diff --git a/gcc/rust/typecheck/rust-tyty.cc b/gcc/rust/typecheck/rust-tyty.cc
index 2e9a551..565f2bc 100644
--- a/gcc/rust/typecheck/rust-tyty.cc
+++ b/gcc/rust/typecheck/rust-tyty.cc
@@ -2238,8 +2238,8 @@ ClosureType::setup_fn_once_output () const
rust_assert (!trait_ref->is_error ());
// resolve to trait item
- HIR::TraitItem *trait_item = mappings.lookup_trait_item_defid (trait_item_id);
- rust_assert (trait_item != nullptr);
+ HIR::TraitItem *trait_item
+ = mappings.lookup_trait_item_defid (trait_item_id).value ();
rust_assert (trait_item->get_item_kind ()
== HIR::TraitItem::TraitItemKind::TYPE);
std::string item_identifier = trait_item->trait_identifier ();
diff --git a/gcc/rust/util/rust-hir-map.cc b/gcc/rust/util/rust-hir-map.cc
index dcedea9..41e4b04 100644
--- a/gcc/rust/util/rust-hir-map.cc
+++ b/gcc/rust/util/rust-hir-map.cc
@@ -314,7 +314,7 @@ Mappings::insert_defid_mapping (DefId id, HIR::Item *item)
rust_assert (!lookup_defid (id));
rust_assert (!lookup_local_defid (crate_num, local_def_id));
- rust_assert (lookup_trait_item_defid (id) == nullptr);
+ rust_assert (!lookup_trait_item_defid (id));
defIdMappings[id] = item;
insert_local_defid_mapping (crate_num, local_def_id, item);
@@ -338,17 +338,17 @@ Mappings::insert_defid_mapping (DefId id, HIR::TraitItem *item)
rust_assert (!lookup_defid (id));
rust_assert (!lookup_local_defid (crate_num, local_def_id));
- rust_assert (lookup_trait_item_defid (id) == nullptr);
+ rust_assert (!lookup_trait_item_defid (id));
defIdTraitItemMappings[id] = item;
}
-HIR::TraitItem *
+tl::optional<HIR::TraitItem *>
Mappings::lookup_trait_item_defid (DefId id)
{
auto it = defIdTraitItemMappings.find (id);
if (it == defIdTraitItemMappings.end ())
- return nullptr;
+ return tl::nullopt;
return it->second;
}
@@ -1264,7 +1264,7 @@ Mappings::get_lang_item (LangItem::Kind item_type, location_t locus)
return item;
}
-HIR::TraitItem *
+tl::optional<HIR::TraitItem *>
Mappings::lookup_trait_item_lang_item (LangItem::Kind item, location_t locus)
{
DefId trait_item_id = get_lang_item (item, locus);
diff --git a/gcc/rust/util/rust-hir-map.h b/gcc/rust/util/rust-hir-map.h
index b4c39a9..ff0da55 100644
--- a/gcc/rust/util/rust-hir-map.h
+++ b/gcc/rust/util/rust-hir-map.h
@@ -108,7 +108,7 @@ public:
void insert_defid_mapping (DefId id, HIR::Item *item);
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);
+ tl::optional<HIR::TraitItem *> lookup_trait_item_defid (DefId id);
void insert_local_defid_mapping (CrateNum crateNum, LocalDefId id,
HIR::Item *item);
@@ -350,8 +350,8 @@ public:
HIR::ImplBlock *lookup_builtin_marker ();
- HIR::TraitItem *lookup_trait_item_lang_item (LangItem::Kind item,
- location_t locus);
+ tl::optional<HIR::TraitItem *>
+ lookup_trait_item_lang_item (LangItem::Kind item, location_t locus);
private:
Mappings ();