diff options
author | Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com> | 2024-05-02 11:43:02 +0200 |
---|---|---|
committer | P-E-P <32375388+P-E-P@users.noreply.github.com> | 2024-05-17 15:28:30 +0000 |
commit | a83bc198e19a99d9f266dbb77deb5a7a5200f53f (patch) | |
tree | db67da4334d9666a4c7bc57114f0f07736f7ab13 /gcc | |
parent | d1f2064d643cf9e8865641746e3cf907b276d234 (diff) | |
download | gcc-a83bc198e19a99d9f266dbb77deb5a7a5200f53f.zip gcc-a83bc198e19a99d9f266dbb77deb5a7a5200f53f.tar.gz gcc-a83bc198e19a99d9f266dbb77deb5a7a5200f53f.tar.bz2 |
Change lookup_local_defid return type to optional
Make the API more convenient by changing the function's return type. We
can now differentiate between a stored null pointer and a missing value.
gcc/rust/ChangeLog:
* util/rust-hir-map.cc (Mappings::insert_defid_mapping): Adapt call
to new return type.
(Mappings::insert_local_defid_mapping): Likewise.
(Mappings::lookup_local_defid): Change return type to wrap it with an
optional.
* util/rust-hir-map.h: Update the function's prototype.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/rust/util/rust-hir-map.cc | 12 | ||||
-rw-r--r-- | gcc/rust/util/rust-hir-map.h | 3 |
2 files changed, 8 insertions, 7 deletions
diff --git a/gcc/rust/util/rust-hir-map.cc b/gcc/rust/util/rust-hir-map.cc index 64f2f5c..798f457 100644 --- a/gcc/rust/util/rust-hir-map.cc +++ b/gcc/rust/util/rust-hir-map.cc @@ -313,7 +313,7 @@ Mappings::insert_defid_mapping (DefId id, HIR::Item *item) LocalDefId local_def_id = id.localDefId; rust_assert (!lookup_defid (id)); - rust_assert (lookup_local_defid (crate_num, local_def_id) == nullptr); + rust_assert (!lookup_local_defid (crate_num, local_def_id)); rust_assert (lookup_trait_item_defid (id) == nullptr); defIdMappings[id] = item; @@ -337,7 +337,7 @@ Mappings::insert_defid_mapping (DefId id, HIR::TraitItem *item) LocalDefId local_def_id = id.localDefId; rust_assert (!lookup_defid (id)); - rust_assert (lookup_local_defid (crate_num, local_def_id) == nullptr); + rust_assert (!lookup_local_defid (crate_num, local_def_id)); rust_assert (lookup_trait_item_defid (id) == nullptr); defIdTraitItemMappings[id] = item; @@ -718,20 +718,20 @@ void Mappings::insert_local_defid_mapping (CrateNum crateNum, LocalDefId id, HIR::Item *item) { - rust_assert (lookup_local_defid (crateNum, id) == nullptr); + rust_assert (!lookup_local_defid (crateNum, id)); localDefIdMappings[crateNum][id] = item; } -HIR::Item * +tl::optional<HIR::Item *> Mappings::lookup_local_defid (CrateNum crateNum, LocalDefId id) { auto it = localDefIdMappings.find (crateNum); if (it == localDefIdMappings.end ()) - return nullptr; + return tl::nullopt; auto iy = it->second.find (id); if (iy == it->second.end ()) - return nullptr; + return tl::nullopt; return iy->second; } diff --git a/gcc/rust/util/rust-hir-map.h b/gcc/rust/util/rust-hir-map.h index f7d99d1..e4e7f55 100644 --- a/gcc/rust/util/rust-hir-map.h +++ b/gcc/rust/util/rust-hir-map.h @@ -112,7 +112,8 @@ public: void insert_local_defid_mapping (CrateNum crateNum, LocalDefId id, HIR::Item *item); - HIR::Item *lookup_local_defid (CrateNum crateNum, LocalDefId id); + tl::optional<HIR::Item *> lookup_local_defid (CrateNum crateNum, + LocalDefId id); void insert_hir_item (HIR::Item *item); tl::optional<HIR::Item *> lookup_hir_item (HirId id); |