public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc/devel/rust/master] Prevent getting immutable context with classic nr
@ 2024-05-07 16:28 Thomas Schwinge
  0 siblings, 0 replies; only message in thread
From: Thomas Schwinge @ 2024-05-07 16:28 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:a63f0ac77e448551b7320dac3acfb0a6331d6fe9

commit a63f0ac77e448551b7320dac3acfb0a6331d6fe9
Author: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Date:   Wed Mar 13 16:44:00 2024 +0100

    Prevent getting immutable context with classic nr
    
    Immutable name resolution context is not initialized when the classic
    name resolution is in use. It can therefore not be used, the getter would
    error out.
    
    gcc/rust/ChangeLog:
    
            * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_root_path):
            Only get immutable name resolution context when name resolution 2.0 is
            used.
            * typecheck/rust-hir-type-check-type.cc (TypeCheckType::resolve_root_path):
            Likewise.
    
    Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>

Diff:
---
 gcc/rust/typecheck/rust-hir-type-check-path.cc | 14 ++++++++------
 gcc/rust/typecheck/rust-hir-type-check-type.cc | 17 +++++++++--------
 2 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/gcc/rust/typecheck/rust-hir-type-check-path.cc b/gcc/rust/typecheck/rust-hir-type-check-path.cc
index b0e52c454e9d..dd6ab03a3627 100644
--- a/gcc/rust/typecheck/rust-hir-type-check-path.cc
+++ b/gcc/rust/typecheck/rust-hir-type-check-path.cc
@@ -199,16 +199,18 @@ TypeCheckExpr::resolve_root_path (HIR::PathInExpression &expr, size_t *offset,
       bool is_root = *offset == 0;
       NodeId ast_node_id = seg.get_mappings ().get_nodeid ();
 
-      auto nr_ctx
-	= Resolver2_0::ImmutableNameResolutionContext::get ().resolver ();
-
       // then lookup the reference_node_id
       NodeId ref_node_id = UNKNOWN_NODEID;
 
       if (flag_name_resolution_2_0)
-	// assign the ref_node_id if we've found something
-	nr_ctx.lookup (expr.get_mappings ().get_nodeid ())
-	  .map ([&ref_node_id] (NodeId resolved) { ref_node_id = resolved; });
+	{
+	  auto nr_ctx
+	    = Resolver2_0::ImmutableNameResolutionContext::get ().resolver ();
+
+	  // assign the ref_node_id if we've found something
+	  nr_ctx.lookup (expr.get_mappings ().get_nodeid ())
+	    .map ([&ref_node_id] (NodeId resolved) { ref_node_id = resolved; });
+	}
       else if (!resolver->lookup_resolved_name (ast_node_id, &ref_node_id))
 	resolver->lookup_resolved_type (ast_node_id, &ref_node_id);
 
diff --git a/gcc/rust/typecheck/rust-hir-type-check-type.cc b/gcc/rust/typecheck/rust-hir-type-check-type.cc
index 588e5bce88e1..44ebc159b23a 100644
--- a/gcc/rust/typecheck/rust-hir-type-check-type.cc
+++ b/gcc/rust/typecheck/rust-hir-type-check-type.cc
@@ -341,19 +341,20 @@ TypeCheckType::resolve_root_path (HIR::TypePath &path, size_t *offset,
       bool is_root = *offset == 0;
       NodeId ast_node_id = seg->get_mappings ().get_nodeid ();
 
-      auto nr_ctx
-	= Resolver2_0::ImmutableNameResolutionContext::get ().resolver ();
-
       // then lookup the reference_node_id
       NodeId ref_node_id = UNKNOWN_NODEID;
 
       // FIXME: HACK: ARTHUR: Remove this
       if (flag_name_resolution_2_0)
-	// assign the ref_node_id if we've found something
-	nr_ctx.lookup (path.get_mappings ().get_nodeid ())
-	  .map ([&ref_node_id, &path] (NodeId resolved) {
-	    ref_node_id = resolved;
-	  });
+	{
+	  auto nr_ctx
+	    = Resolver2_0::ImmutableNameResolutionContext::get ().resolver ();
+	  // assign the ref_node_id if we've found something
+	  nr_ctx.lookup (path.get_mappings ().get_nodeid ())
+	    .map ([&ref_node_id, &path] (NodeId resolved) {
+	      ref_node_id = resolved;
+	    });
+	}
       else if (!resolver->lookup_resolved_name (ast_node_id, &ref_node_id))
 	resolver->lookup_resolved_type (ast_node_id, &ref_node_id);

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2024-05-07 16:28 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-05-07 16:28 [gcc/devel/rust/master] Prevent getting immutable context with classic nr Thomas Schwinge

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).