From: Owen Avery <powerboat9.ga...@gmail.com>

gcc/rust/ChangeLog:

        * resolve/rust-ast-resolve-path.cc
        (ResolvePath::resolve_path): Adjust the error message for a lower
        self segment in the middle of a path.
        * resolve/rust-ast-resolve-type.cc
        (ResolveRelativeTypePath::go): Likewise.

gcc/testsuite/ChangeLog:

        * rust/compile/nr2/exclude: Remove self-path2.rs
        * rust/compile/self-path2.rs: Adjust expected errors.

Signed-off-by: Owen Avery <powerboat9.ga...@gmail.com>
---
 gcc/rust/resolve/rust-ast-resolve-path.cc | 14 +++++++-------
 gcc/rust/resolve/rust-ast-resolve-type.cc |  4 ++--
 gcc/testsuite/rust/compile/nr2/exclude    |  1 -
 gcc/testsuite/rust/compile/self-path2.rs  |  4 ++--
 4 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/gcc/rust/resolve/rust-ast-resolve-path.cc 
b/gcc/rust/resolve/rust-ast-resolve-path.cc
index 256159bc5cc..656b7e64bb7 100644
--- a/gcc/rust/resolve/rust-ast-resolve-path.cc
+++ b/gcc/rust/resolve/rust-ast-resolve-path.cc
@@ -1,4 +1,4 @@
-// Copyright (C) 2020-2025 Free Software Foundation, Inc.
+// Copyright (C) 2020-2024 Free Software Foundation, Inc.
 
 // This file is part of GCC.
 
@@ -68,8 +68,8 @@ ResolvePath::resolve_path (AST::PathInExpression &expr)
       if (in_middle_of_path && segment.is_lower_self_seg ())
        {
          rust_error_at (segment.get_locus (), ErrorCode::E0433,
-                        "failed to resolve: %qs in paths can only be used "
-                        "in start position",
+                        "leading path segment %qs can only be used at the "
+                        "beginning of a path",
                         segment.as_string ().c_str ());
          return UNKNOWN_NODEID;
        }
@@ -192,7 +192,7 @@ ResolvePath::resolve_path (AST::PathInExpression &expr)
              else
                {
                  rust_error_at (segment.get_locus (),
-                                "Cannot find path %qs in this scope",
+                                "Cannot find path %<%s%> in this scope",
                                 segment.as_string ().c_str ());
                  return UNKNOWN_NODEID;
                }
@@ -212,7 +212,7 @@ ResolvePath::resolve_path (AST::PathInExpression &expr)
       else if (is_first_segment)
        {
          rust_error_at (segment.get_locus (), ErrorCode::E0433,
-                        "Cannot find path %qs in this scope",
+                        "Cannot find path %<%s%> in this scope",
                         segment.as_string ().c_str ());
          return UNKNOWN_NODEID;
        }
@@ -331,7 +331,7 @@ ResolvePath::resolve_path (AST::SimplePath &expr)
          else
            {
              rust_error_at (segment.get_locus (),
-                            "Cannot find path %qs in this scope",
+                            "Cannot find path %<%s%> in this scope",
                             segment.as_string ().c_str ());
              return UNKNOWN_NODEID;
            }
@@ -379,7 +379,7 @@ ResolvePath::resolve_path (AST::SimplePath &expr)
       if (resolved_node_id == UNKNOWN_NODEID)
        {
          rust_error_at (segment.get_locus (),
-                        "cannot find simple path segment %qs in this scope",
+                        "cannot find simple path segment %<%s%> in this scope",
                         segment.as_string ().c_str ());
          return UNKNOWN_NODEID;
        }
diff --git a/gcc/rust/resolve/rust-ast-resolve-type.cc 
b/gcc/rust/resolve/rust-ast-resolve-type.cc
index af63898a5d2..87643d775ff 100644
--- a/gcc/rust/resolve/rust-ast-resolve-type.cc
+++ b/gcc/rust/resolve/rust-ast-resolve-type.cc
@@ -176,8 +176,8 @@ ResolveRelativeTypePath::go (AST::TypePath &path, NodeId 
&resolved_node_id)
          if (in_middle_of_path && segment->is_lower_self_seg ())
            {
              rust_error_at (segment->get_locus (), ErrorCode::E0433,
-                            "failed to resolve: %qs in paths can only be used "
-                            "in start position",
+                            "leading path segment %qs can only be used at the "
+                            "beginning of a path",
                             segment->as_string ().c_str ());
              return false;
            }
diff --git a/gcc/testsuite/rust/compile/nr2/exclude 
b/gcc/testsuite/rust/compile/nr2/exclude
index a4bac9ac836..a2a833f9073 100644
--- a/gcc/testsuite/rust/compile/nr2/exclude
+++ b/gcc/testsuite/rust/compile/nr2/exclude
@@ -28,7 +28,6 @@ pub_restricted_2.rs
 pub_restricted_3.rs
 redef_error2.rs
 redef_error5.rs
-self-path2.rs
 sizeof-stray-infer-var-bug.rs
 struct-expr-parse.rs
 undeclared_label.rs
diff --git a/gcc/testsuite/rust/compile/self-path2.rs 
b/gcc/testsuite/rust/compile/self-path2.rs
index b9b82cae5a6..6441c3328f9 100644
--- a/gcc/testsuite/rust/compile/self-path2.rs
+++ b/gcc/testsuite/rust/compile/self-path2.rs
@@ -11,11 +11,11 @@ fn baz() {
     crate::bar();
 
     crate::self::foo();
-    // { dg-error "failed to resolve: .self. in paths can only be used in 
start position" "" { target *-*-* } .-1 }
+    // { dg-error "leading path segment .self. can only be used at the 
beginning of a path" "" { target *-*-* } .-1 }
 }
 
 type a = foo;
 type b = crate::foo;
 type c = self::foo;
 type d = crate::self::foo;
-// { dg-error "failed to resolve: .self. in paths can only be used in start 
position" "" { target *-*-* } .-1 }
+// { dg-error "leading path segment .self. can only be used at the beginning 
of a path" "" { target *-*-* } .-1 }
-- 
2.45.2

Reply via email to