about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2024-10-19 17:25:33 +0200
committerGitHub <noreply@github.com>2024-10-19 17:25:33 +0200
commita394d4928b73bd6f44deb5bb46b61b92997f27ab (patch)
treeeefbc3e558fca08f7fa92f82e55021168ed22ae9
parent5a3ecd53e4e23ff1b6389c7684d5bdadb9980666 (diff)
parent8f2273e518c939f10c3ba891058cd7a43aedce23 (diff)
downloadrust-a394d4928b73bd6f44deb5bb46b61b92997f27ab.tar.gz
rust-a394d4928b73bd6f44deb5bb46b61b92997f27ab.zip
Rollup merge of #131537 - hirschenberger:master, r=compiler-errors
Fix range misleading field access

Fixes #131471 by checking if the range-start is a literal.
-rw-r--r--compiler/rustc_resolve/src/late.rs1
-rw-r--r--tests/ui/range/misleading-field-access-hint.rs8
-rw-r--r--tests/ui/range/misleading-field-access-hint.stderr9
3 files changed, 18 insertions, 0 deletions
diff --git a/compiler/rustc_resolve/src/late.rs b/compiler/rustc_resolve/src/late.rs
index b84cbf9c629..98db36b12be 100644
--- a/compiler/rustc_resolve/src/late.rs
+++ b/compiler/rustc_resolve/src/late.rs
@@ -4011,6 +4011,7 @@ impl<'a, 'ast, 'ra: 'ast, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
                 let instead = res.is_some();
                 let suggestion = if let Some((start, end)) = this.diag_metadata.in_range
                     && path[0].ident.span.lo() == end.span.lo()
+                    && !matches!(start.kind, ExprKind::Lit(_))
                 {
                     let mut sugg = ".";
                     let mut span = start.span.between(end.span);
diff --git a/tests/ui/range/misleading-field-access-hint.rs b/tests/ui/range/misleading-field-access-hint.rs
new file mode 100644
index 00000000000..252f1a4833c
--- /dev/null
+++ b/tests/ui/range/misleading-field-access-hint.rs
@@ -0,0 +1,8 @@
+// Check if rustc still displays the misleading hint to write `.` instead of `..`
+fn main() {
+    let width = 10;
+    // ...
+    for _ in 0..w {
+        //~^ ERROR cannot find value `w`
+    }
+}
diff --git a/tests/ui/range/misleading-field-access-hint.stderr b/tests/ui/range/misleading-field-access-hint.stderr
new file mode 100644
index 00000000000..9b112a5fdd8
--- /dev/null
+++ b/tests/ui/range/misleading-field-access-hint.stderr
@@ -0,0 +1,9 @@
+error[E0425]: cannot find value `w` in this scope
+  --> $DIR/misleading-field-access-hint.rs:5:17
+   |
+LL |     for _ in 0..w {
+   |                 ^ not found in this scope
+
+error: aborting due to 1 previous error
+
+For more information about this error, try `rustc --explain E0425`.