From: Owen Avery <[email protected]>
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 <[email protected]>
---
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