Change the function's return type to use an optional.
gcc/rust/ChangeLog:
* resolve/rust-ast-resolve-toplevel.h: Adapt the code to the new
return type.
* resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit):
Likewise.
* rust-session-manager.cc (Session::load_extern_crate): Likewise.
* util/rust-hir-map.cc (Mappings::lookup_crate_name): Change the return
type to an optional.
* util/rust-hir-map.h: Update the function's prototype.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
}
else
{
- CrateNum found_crate_num = UNKNOWN_CRATENUM;
- bool found
- = mappings.lookup_crate_name (extern_crate.get_referenced_crate (),
- found_crate_num);
- if (!found)
+ auto cnum
+ = mappings.lookup_crate_name (extern_crate.get_referenced_crate ());
+ if (!cnum)
{
rust_error_at (extern_crate.get_locus (), "unknown crate %qs",
extern_crate.get_referenced_crate ().c_str ());
return;
}
+ auto found_crate_num = cnum.value ();
bool ok
= mappings.crate_num_to_nodeid (found_crate_num, resolved_crate);
TopLevel::visit (AST::ExternCrate &crate)
{
auto &mappings = Analysis::Mappings::get ();
- CrateNum num;
- rust_assert (mappings.lookup_crate_name (crate.get_referenced_crate (), num));
+ CrateNum num = *mappings.lookup_crate_name (crate.get_referenced_crate ());
auto attribute_macros = mappings.lookup_attribute_proc_macros (num);
Session::load_extern_crate (const std::string &crate_name, location_t locus)
{
// has it already been loaded?
- CrateNum found_crate_num = UNKNOWN_CRATENUM;
- bool found = mappings.lookup_crate_name (crate_name, found_crate_num);
- if (found)
+ if (auto crate_num = mappings.lookup_crate_name (crate_name))
{
NodeId resolved_node_id = UNKNOWN_NODEID;
bool resolved
- = mappings.crate_num_to_nodeid (found_crate_num, resolved_node_id);
+ = mappings.crate_num_to_nodeid (*crate_num, resolved_node_id);
rust_assert (resolved);
return resolved_node_id;
return name;
}
-bool
-Mappings::lookup_crate_name (const std::string &crate_name,
- CrateNum &resolved_crate_num) const
+tl::optional<CrateNum>
+Mappings::lookup_crate_name (const std::string &crate_name) const
{
for (const auto &it : crate_names)
{
if (it.second.compare (crate_name) == 0)
- {
- resolved_crate_num = it.first;
- return true;
- }
+ return it.first;
}
- return false;
+ return tl::nullopt;
}
bool
bool get_crate_name (CrateNum crate_num, std::string &name) const;
void set_crate_name (CrateNum crate_num, const std::string &name);
std::string get_current_crate_name () const;
- bool lookup_crate_name (const std::string &crate_name,
- CrateNum &resolved_crate_num) const;
+ tl::optional<CrateNum>
+ lookup_crate_name (const std::string &crate_name) const;
bool crate_num_to_nodeid (const CrateNum &crate_num, NodeId &node_id) const;
bool node_is_crate (NodeId node_id) const;