diff options
author | Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com> | 2024-05-02 12:33:20 +0200 |
---|---|---|
committer | P-E-P <32375388+P-E-P@users.noreply.github.com> | 2024-05-17 15:28:30 +0000 |
commit | 310081b7d629e4640d0b962f727ac4249bd51e25 (patch) | |
tree | 2dd5835e8ffddee0c5b9b13911a0f9b73edf306a | |
parent | a83bc198e19a99d9f266dbb77deb5a7a5200f53f (diff) | |
download | gcc-310081b7d629e4640d0b962f727ac4249bd51e25.zip gcc-310081b7d629e4640d0b962f727ac4249bd51e25.tar.gz gcc-310081b7d629e4640d0b962f727ac4249bd51e25.tar.bz2 |
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>
-rw-r--r-- | gcc/rust/backend/rust-compile-base.cc | 2 | ||||
-rw-r--r-- | gcc/rust/typecheck/rust-tyty-bounds.cc | 7 | ||||
-rw-r--r-- | gcc/rust/typecheck/rust-tyty.cc | 4 | ||||
-rw-r--r-- | gcc/rust/util/rust-hir-map.cc | 10 | ||||
-rw-r--r-- | gcc/rust/util/rust-hir-map.h | 6 |
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 56665a5..e3b27f6 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 03ba622..cc97016 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 dc4fac9..9839ff7 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 798f457..80b7b1d 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 e4e7f55..bfa83fc 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 (); |