diff options
author | Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com> | 2024-05-02 12:33:20 +0200 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2025-03-17 16:35:24 +0100 |
commit | 6dce8a479a288a64ffa87f3e3549f1dc6900b527 (patch) | |
tree | 48daf08531eadceaefae4d70f44f19c8724a28d1 /gcc | |
parent | fa6c5c08a131d108a6a9f927b5154d2db81a84ba (diff) | |
download | gcc-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.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 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 (); |