aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rust/backend/rust-compile-expr.cc10
-rw-r--r--gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc9
-rw-r--r--gcc/rust/util/rust-hir-map.cc9
-rw-r--r--gcc/rust/util/rust-hir-map.h2
4 files changed, 14 insertions, 16 deletions
diff --git a/gcc/rust/backend/rust-compile-expr.cc b/gcc/rust/backend/rust-compile-expr.cc
index 28b901e..e2fa6dd 100644
--- a/gcc/rust/backend/rust-compile-expr.cc
+++ b/gcc/rust/backend/rust-compile-expr.cc
@@ -2216,10 +2216,12 @@ CompileExpr::generate_closure_function (HIR::ClosureExpr &expr,
const Resolver::CanonicalPath &parent_canonical_path
= closure_tyty.get_ident ().path;
- NodeId node_id;
- bool ok = ctx->get_mappings ().lookup_hir_to_node (
- expr.get_mappings ().get_hirid (), &node_id);
- rust_assert (ok);
+
+ tl::optional<NodeId> nid = ctx->get_mappings ().lookup_hir_to_node (
+ expr.get_mappings ().get_hirid ());
+ rust_assert (nid.has_value ());
+ auto node_id = nid.value ();
+
Resolver::CanonicalPath path = parent_canonical_path.append (
Resolver::CanonicalPath::new_seg (node_id, "{{closure}}"));
diff --git a/gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc b/gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc
index 869f99c..3a304e8 100644
--- a/gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc
+++ b/gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc
@@ -201,12 +201,9 @@ PrivacyReporter::check_base_type_privacy (Analysis::NodeMapping &node_mappings,
case TyTy::ADT:
case TyTy::STR: {
auto ref_id = ty->get_ref ();
- NodeId lookup_id;
-
- bool ok = mappings.lookup_hir_to_node (ref_id, &lookup_id);
- rust_assert (ok);
-
- return check_for_privacy_violation (lookup_id, locus);
+ if (auto lookup_id = mappings.lookup_hir_to_node (ref_id))
+ return check_for_privacy_violation (*lookup_id, locus);
+ rust_unreachable ();
}
case TyTy::REF:
return recursive_check (
diff --git a/gcc/rust/util/rust-hir-map.cc b/gcc/rust/util/rust-hir-map.cc
index 78ce17d..b8d3937 100644
--- a/gcc/rust/util/rust-hir-map.cc
+++ b/gcc/rust/util/rust-hir-map.cc
@@ -779,15 +779,14 @@ Mappings::lookup_node_to_hir (NodeId id)
return {it->second};
}
-bool
-Mappings::lookup_hir_to_node (HirId id, NodeId *ref)
+tl::optional<NodeId>
+Mappings::lookup_hir_to_node (HirId id)
{
auto it = hirIdToNodeMappings.find (id);
if (it == hirIdToNodeMappings.end ())
- return false;
+ return tl::nullopt;
- *ref = it->second;
- return true;
+ return {it->second};
}
void
diff --git a/gcc/rust/util/rust-hir-map.h b/gcc/rust/util/rust-hir-map.h
index c2b3e27..6fd0e7a 100644
--- a/gcc/rust/util/rust-hir-map.h
+++ b/gcc/rust/util/rust-hir-map.h
@@ -171,7 +171,7 @@ public:
void insert_node_to_hir (NodeId id, HirId ref);
tl::optional<HirId> lookup_node_to_hir (NodeId id);
- bool lookup_hir_to_node (HirId id, NodeId *ref);
+ tl::optional<NodeId> lookup_hir_to_node (HirId id);
void insert_location (HirId id, location_t locus);
location_t lookup_location (HirId id);