https://gcc.gnu.org/g:2110efcc2a62284efe196d68b614f7aa963c4611

commit r15-8435-g2110efcc2a62284efe196d68b614f7aa963c4611
Author: Owen Avery <powerboat9.ga...@gmail.com>
Date:   Tue Oct 15 15:34:28 2024 -0400

    gccrs: Use name resolver 2.0 in MarkLive
    
    gcc/rust/ChangeLog:
    
            * checks/lints/rust-lint-marklive.cc
            (MarkLive::visit_path_segment): Use name resolver 2.0 when
            enabled.
            (MarkLive::visit): Likewise.
    
    Signed-off-by: Owen Avery <powerboat9.ga...@gmail.com>

Diff:
---
 gcc/rust/checks/lints/rust-lint-marklive.cc | 31 +++++++++++++++++++++++++----
 1 file changed, 27 insertions(+), 4 deletions(-)

diff --git a/gcc/rust/checks/lints/rust-lint-marklive.cc 
b/gcc/rust/checks/lints/rust-lint-marklive.cc
index 24df933c8057..ca26a6690039 100644
--- a/gcc/rust/checks/lints/rust-lint-marklive.cc
+++ b/gcc/rust/checks/lints/rust-lint-marklive.cc
@@ -155,7 +155,17 @@ MarkLive::visit_path_segment (HIR::PathExprSegment seg)
   //
   // We should mark them alive all and ignoring other kind of segments.
   // If the segment we dont care then just return false is fine
-  if (!resolver->lookup_resolved_name (ast_node_id, &ref_node_id))
+  if (flag_name_resolution_2_0)
+    {
+      auto &nr_ctx
+       = Resolver2_0::ImmutableNameResolutionContext::get ().resolver ();
+
+      if (auto id = nr_ctx.lookup (ast_node_id))
+       ref_node_id = *id;
+      else
+       return false;
+    }
+  else if (!resolver->lookup_resolved_name (ast_node_id, &ref_node_id))
     {
       if (!resolver->lookup_resolved_type (ast_node_id, &ref_node_id))
        return false;
@@ -232,9 +242,22 @@ MarkLive::visit (HIR::TupleIndexExpr &expr)
 void
 MarkLive::visit (HIR::TypeAlias &alias)
 {
-  NodeId ast_node_id;
-  resolver->lookup_resolved_type (
-    alias.get_type_aliased ()->get_mappings ().get_nodeid (), &ast_node_id);
+  NodeId ast_node_id = UNKNOWN_NODEID;
+  if (flag_name_resolution_2_0)
+    {
+      auto &nr_ctx
+       = Resolver2_0::ImmutableNameResolutionContext::get ().resolver ();
+
+      if (auto id = nr_ctx.lookup (
+           alias.get_type_aliased ()->get_mappings ().get_nodeid ()))
+       ast_node_id = *id;
+    }
+  else
+    {
+      resolver->lookup_resolved_type (
+       alias.get_type_aliased ()->get_mappings ().get_nodeid (), &ast_node_id);
+    }
+
   if (auto hid = mappings.lookup_node_to_hir (ast_node_id))
     mark_hir_id (*hid);
   else

Reply via email to