]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
nr2.0: Adjust indentifier expression handling
authorOwen Avery <powerboat9.gamer@gmail.com>
Wed, 19 Mar 2025 00:28:25 +0000 (20:28 -0400)
committerCohenArthur <arthur.cohen@embecosm.com>
Fri, 21 Mar 2025 14:44:35 +0000 (14:44 +0000)
gcc/rust/ChangeLog:

* resolve/rust-late-name-resolver-2.0.cc
(Late::visit): Make sure to return early after a resolution
error, improve the resolution error message, fix a typo, handle
ambiguous resolutions, and remove an old comment.

gcc/testsuite/ChangeLog:

* rust/compile/nr2/exclude: Remove entries.

Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
gcc/rust/resolve/rust-late-name-resolver-2.0.cc
gcc/testsuite/rust/compile/nr2/exclude

index 71c63f1be147616f523fffd773c0b18f8d358c54..1d8e66195be203e9f6d93033f7c5f8f59943a11d 100644 (file)
@@ -232,21 +232,29 @@ Late::visit (AST::IdentifierExpr &expr)
     }
   else
     {
-      if (auto typ = ctx.types.get_prelude (expr.get_ident ()))
-       resolved = typ;
+      if (auto type = ctx.types.get_prelude (expr.get_ident ()))
+       {
+         resolved = type;
+       }
       else
-       rust_error_at (expr.get_locus (),
-                      "could not resolve identifier expression: %qs",
-                      expr.get_ident ().as_string ().c_str ());
+       {
+         rust_error_at (expr.get_locus (), ErrorCode::E0425,
+                        "cannot find value %qs in this scope",
+                        expr.get_ident ().as_string ().c_str ());
+         return;
+       }
+    }
+
+  if (resolved->is_ambiguous ())
+    {
+      rust_error_at (expr.get_locus (), ErrorCode::E0659, "%qs is ambiguous",
+                    expr.as_string ().c_str ());
+      return;
     }
 
   ctx.map_usage (Usage (expr.get_node_id ()),
                 Definition (resolved->get_node_id ()));
 
-  // in the old resolver, resolutions are kept in the resolver, not the mappings
-  // :/ how do we deal with that?
-  // ctx.mappings.insert_resolved_name(expr, resolved);
-
   // For empty types, do we perform a lookup in ctx.types or should the
   // toplevel instead insert a name in ctx.values? (like it currently does)
 }
index de5824813b47794b3c0b6cd0c06e936e68e62dea..59964fc90e28c927112618ba68f2239f5875eb67 100644 (file)
@@ -1,8 +1,6 @@
-break-rust2.rs
 canonical_paths1.rs
 cfg1.rs
 const_generics_3.rs
-const_generics_4.rs
 feature_rust_attri0.rs
 generics9.rs
 issue-1901.rs
@@ -19,7 +17,6 @@ macros/mbe/macro43.rs
 macros/mbe/macro6.rs
 multiple_bindings1.rs
 multiple_bindings2.rs
-not_find_value_in_scope.rs
 privacy5.rs
 privacy8.rs
 pub_restricted_1.rs