https://gcc.gnu.org/g:1c7507dd1a01e02275225e3cb7f2570014e524b0

commit r15-8765-g1c7507dd1a01e02275225e3cb7f2570014e524b0
Author: Arthur Cohen <arthur.co...@embecosm.com>
Date:   Fri Jan 31 12:26:21 2025 +0000

    gccrs: nr2.0: late: Add proper handling for lang item PathInExpressions
    
    gcc/rust/ChangeLog:
    
            * resolve/rust-late-name-resolver-2.0.cc (Late::visit): Special 
case lang item paths.

Diff:
---
 gcc/rust/resolve/rust-late-name-resolver-2.0.cc | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/gcc/rust/resolve/rust-late-name-resolver-2.0.cc 
b/gcc/rust/resolve/rust-late-name-resolver-2.0.cc
index a3b8e6a515f6..7c414c47bc9c 100644
--- a/gcc/rust/resolve/rust-late-name-resolver-2.0.cc
+++ b/gcc/rust/resolve/rust-late-name-resolver-2.0.cc
@@ -254,8 +254,14 @@ Late::visit (AST::PathInExpression &expr)
   // TODO: How do we have a nice error with `can't capture dynamic environment
   // in a function item` error here?
   // do we emit it in `get<Namespace::Labels>`?
+
   if (expr.is_lang_item ())
-    return;
+    {
+      ctx.map_usage (Usage (expr.get_node_id ()),
+                    Definition (Analysis::Mappings::get ().get_lang_item_node (
+                      expr.get_lang_item ())));
+      return;
+    }
 
   auto resolved
     = ctx.values.resolve_path (expr.get_segments ()).or_else ([&] () {

Reply via email to