diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/rust/backend/rust-compile-expr.cc | 10 | ||||
-rw-r--r-- | gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc | 9 | ||||
-rw-r--r-- | gcc/rust/util/rust-hir-map.cc | 9 | ||||
-rw-r--r-- | gcc/rust/util/rust-hir-map.h | 2 |
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); |