[COMMITTED 21/42] gccrs: Adjust segment start position errors

arthur.cohen@embecosm.com arthur.cohen@embecosm.com
Mon Apr 28 14:43:45 GMT 2025


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

gcc/rust/ChangeLog:

	* resolve/rust-ast-resolve-path.cc
	(ResolvePath::resolve_path): Adjust error messages.
	* resolve/rust-ast-resolve-type.cc
	(ResolveRelativeTypePath::go): Likewise.
	* resolve/rust-forever-stack.hxx
	(check_leading_kw_at_start): Likewise.

gcc/testsuite/ChangeLog:

	* rust/compile/issue-3568.rs: Adjust expected errors.
	* rust/compile/name_resolution9.rs: Likewise.
	* rust/compile/self-path2.rs: Likewise.

Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
---
 gcc/rust/resolve/rust-ast-resolve-path.cc      | 8 ++++----
 gcc/rust/resolve/rust-ast-resolve-type.cc      | 3 +--
 gcc/rust/resolve/rust-forever-stack.hxx        | 7 +++----
 gcc/testsuite/rust/compile/issue-3568.rs       | 2 +-
 gcc/testsuite/rust/compile/name_resolution9.rs | 4 ++--
 gcc/testsuite/rust/compile/self-path2.rs       | 4 ++--
 6 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/gcc/rust/resolve/rust-ast-resolve-path.cc b/gcc/rust/resolve/rust-ast-resolve-path.cc
index 530926d5d97..fb6715d9528 100644
--- a/gcc/rust/resolve/rust-ast-resolve-path.cc
+++ b/gcc/rust/resolve/rust-ast-resolve-path.cc
@@ -68,8 +68,7 @@ ResolvePath::resolve_path (AST::PathInExpression &expr)
       if (in_middle_of_path && segment.is_lower_self_seg ())
 	{
 	  rust_error_at (segment.get_locus (), ErrorCode::E0433,
-			 "leading path segment %qs can only be used at the "
-			 "beginning of a path",
+			 "%qs in paths can only be used in start position",
 			 segment.as_string ().c_str ());
 	  return UNKNOWN_NODEID;
 	}
@@ -372,8 +371,9 @@ ResolvePath::resolve_path (AST::SimplePath &expr)
 	{
 	  if (!is_first_segment)
 	    {
-	      rust_error_at (segment.get_locus (),
-			     "%<super%> can only be used in start position");
+	      rust_error_at (
+		segment.get_locus (), ErrorCode::E0433,
+		"%<super%> in paths can only be used in start position");
 	      return UNKNOWN_NODEID;
 	    }
 	  if (module_scope_id == crate_scope_id)
diff --git a/gcc/rust/resolve/rust-ast-resolve-type.cc b/gcc/rust/resolve/rust-ast-resolve-type.cc
index 606141cc876..8fd69c3ead6 100644
--- a/gcc/rust/resolve/rust-ast-resolve-type.cc
+++ b/gcc/rust/resolve/rust-ast-resolve-type.cc
@@ -176,8 +176,7 @@ 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,
-			     "leading path segment %qs can only be used at the "
-			     "beginning of a path",
+			     "%qs in paths can only be used in start position",
 			     segment->as_string ().c_str ());
 	      return false;
 	    }
diff --git a/gcc/rust/resolve/rust-forever-stack.hxx b/gcc/rust/resolve/rust-forever-stack.hxx
index 73c795668d9..31a33016f09 100644
--- a/gcc/rust/resolve/rust-forever-stack.hxx
+++ b/gcc/rust/resolve/rust-forever-stack.hxx
@@ -401,10 +401,9 @@ static inline bool
 check_leading_kw_at_start (const S &segment, bool condition)
 {
   if (condition)
-    rust_error_at (
-      segment.get_locus (), ErrorCode::E0433,
-      "leading path segment %qs can only be used at the beginning of a path",
-      segment.as_string ().c_str ());
+    rust_error_at (segment.get_locus (), ErrorCode::E0433,
+		   "%qs in paths can only be used in start position",
+		   segment.as_string ().c_str ());
 
   return condition;
 }
diff --git a/gcc/testsuite/rust/compile/issue-3568.rs b/gcc/testsuite/rust/compile/issue-3568.rs
index 222a174ef38..fef43b5d1e4 100644
--- a/gcc/testsuite/rust/compile/issue-3568.rs
+++ b/gcc/testsuite/rust/compile/issue-3568.rs
@@ -4,4 +4,4 @@ mod foo {
 }
 
 pub use foo::super::foo::S as T;
-// { dg-error ".super. can only be used in start position" "" { target *-*-* } .-1 }
+// { dg-error ".super. in paths can only be used in start position" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/rust/compile/name_resolution9.rs b/gcc/testsuite/rust/compile/name_resolution9.rs
index 93adb46d278..792b3bdd6b5 100644
--- a/gcc/testsuite/rust/compile/name_resolution9.rs
+++ b/gcc/testsuite/rust/compile/name_resolution9.rs
@@ -6,11 +6,11 @@ pub mod foo {
             super::super::super::foo!(); // { dg-error "too many leading .super. keywords" }
                                          // { dg-error "could not resolve macro invocation" "" { target *-*-* } .-1 }
 
-            super::crate::foo!(); // { dg-error "leading path segment .crate. can only be used" }
+            super::crate::foo!(); // { dg-error ".crate. in paths can only be used" }
                                   // { dg-error "could not resolve macro invocation" "" { target *-*-* } .-1 }
 
 			
-            crate::foo::bar::super::foo!(); // { dg-error "leading path segment .super. can only be used" }
+            crate::foo::bar::super::foo!(); // { dg-error ".super. in paths can only be used" }
 		                                    // { dg-error "could not resolve macro invocation" "" { target *-*-* } .-1 }
         }
     }
diff --git a/gcc/testsuite/rust/compile/self-path2.rs b/gcc/testsuite/rust/compile/self-path2.rs
index 6441c3328f9..d955ed0071d 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 "leading path segment .self. can only be used at the beginning of a path" "" { target *-*-* } .-1 }
+    // { dg-error ".self. in paths can only be used in start position" "" { target *-*-* } .-1 }
 }
 
 type a = foo;
 type b = crate::foo;
 type c = self::foo;
 type d = crate::self::foo;
-// { dg-error "leading path segment .self. can only be used at the beginning of a path" "" { target *-*-* } .-1 }
+// { dg-error ".self. in paths can only be used in start position" "" { target *-*-* } .-1 }
-- 
2.49.0



More information about the Gcc-rust mailing list