Wrap the return type into an optional.
gcc/rust/ChangeLog:
* checks/errors/privacy/rust-visibility-resolver.cc: Update function
call to match the new return type.
* typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_root_path):
Likewise.
* typecheck/rust-hir-type-check-type.cc (TypeCheckType::resolve_root_path):
Likewise.
* util/rust-hir-map.cc (Mappings::insert_module): Likewise.
(Mappings::lookup_module): Change the function's return type.
* util/rust-hir-map.h: Update the function's prototype.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
// these items as private?
return true;
- auto module = mappings.lookup_module (ref);
- if (!module)
+ if (auto module = mappings.lookup_module (ref))
{
- invalid_path.emit ();
- return false;
- }
+ // Fill in the resolved `DefId`
+ id = module.value ()->get_mappings ().get_defid ();
- // Fill in the resolved `DefId`
- id = module->get_mappings ().get_defid ();
-
- return true;
+ return true;
+ }
+ invalid_path.emit ();
+ return false;
}
bool
}
auto ref = hid.value ();
- auto seg_is_module = (nullptr != mappings.lookup_module (ref));
+ auto seg_is_module = mappings.lookup_module (ref).has_value ();
auto seg_is_crate = mappings.is_local_hirid_crate (ref);
if (seg_is_module || seg_is_crate)
{
}
auto ref = hid.value ();
- auto seg_is_module = (nullptr != mappings.lookup_module (ref));
+ auto seg_is_module = mappings.lookup_module (ref).has_value ();
auto seg_is_crate = mappings.is_local_hirid_crate (ref);
if (seg_is_module || seg_is_crate)
{
Mappings::insert_module (HIR::Module *module)
{
auto id = module->get_mappings ().get_hirid ();
- rust_assert (lookup_module (id) == nullptr);
+ rust_assert (!lookup_module (id));
hirModuleMappings[id] = module;
insert_node_to_hir (module->get_mappings ().get_nodeid (), id);
}
-HIR::Module *
+tl::optional<HIR::Module *>
Mappings::lookup_module (HirId id)
{
auto it = hirModuleMappings.find (id);
if (it == hirModuleMappings.end ())
- return nullptr;
+ return tl::nullopt;
return it->second;
}
tl::optional<HIR::ImplBlock *> lookup_impl_block_type (HirId id);
void insert_module (HIR::Module *module);
- HIR::Module *lookup_module (HirId id);
+ tl::optional<HIR::Module *> lookup_module (HirId id);
void insert_hir_implitem (HirId parent_impl_id, HIR::ImplItem *item);
HIR::ImplItem *lookup_hir_implitem (HirId id, HirId *parent_impl_id);