about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2024-11-06 21:28:26 +0000
committerEsteban Küber <esteban@kuber.com.ar>2024-11-17 23:40:00 +0000
commit6dc79f6133d24100cecbcb24e256b9f149d2b47a (patch)
tree048ff29e80fe93d338fa602a8c2119010d5b787c
parentc25b44bee96e4489dab8f44409ba347bfeb328b9 (diff)
downloadrust-6dc79f6133d24100cecbcb24e256b9f149d2b47a.tar.gz
rust-6dc79f6133d24100cecbcb24e256b9f149d2b47a.zip
Use `item_name` instead of a span snippet when talking about const pattern
-rw-r--r--compiler/rustc_mir_build/src/thir/pattern/check_match.rs5
-rw-r--r--tests/ui/consts/const-pattern-irrefutable.rs2
-rw-r--r--tests/ui/consts/const-pattern-irrefutable.stderr4
3 files changed, 5 insertions, 6 deletions
diff --git a/compiler/rustc_mir_build/src/thir/pattern/check_match.rs b/compiler/rustc_mir_build/src/thir/pattern/check_match.rs
index f3cfc8b1a22..a8830b346ae 100644
--- a/compiler/rustc_mir_build/src/thir/pattern/check_match.rs
+++ b/compiler/rustc_mir_build/src/thir/pattern/check_match.rs
@@ -675,13 +675,12 @@ impl<'p, 'tcx> MatchVisitor<'p, 'tcx> {
             subpattern: box Pat { kind: PatKind::Constant { opt_def: Some(def_id), .. }, .. },
             ..
         } = pat.kind
-            && let Ok(snippet) = self.tcx.sess.source_map().span_to_snippet(pat.span)
         {
             let span = self.tcx.def_span(def_id);
+            let variable = self.tcx.item_name(def_id).to_string();
             // When we encounter a constant as the binding name, point at the `const` definition.
             interpreted_as_const = Some(span);
-            interpreted_as_const_sugg =
-                Some(InterpretedAsConst { span: pat.span, variable: snippet });
+            interpreted_as_const_sugg = Some(InterpretedAsConst { span: pat.span, variable });
         } else if let PatKind::Constant { .. }
         | PatKind::AscribeUserType {
             subpattern: box Pat { kind: PatKind::Constant { .. }, .. },
diff --git a/tests/ui/consts/const-pattern-irrefutable.rs b/tests/ui/consts/const-pattern-irrefutable.rs
index 54d2ad32386..c590ec8fcd3 100644
--- a/tests/ui/consts/const-pattern-irrefutable.rs
+++ b/tests/ui/consts/const-pattern-irrefutable.rs
@@ -1,6 +1,6 @@
 mod foo {
     pub const b: u8 = 2;
-    //~^ missing patterns are not covered because `c` is interpreted as a constant pattern, not a new variable
+    //~^ missing patterns are not covered because `b` is interpreted as a constant pattern, not a new variable
     pub const d: u8 = 2;
     //~^ missing patterns are not covered because `d` is interpreted as a constant pattern, not a new variable
 }
diff --git a/tests/ui/consts/const-pattern-irrefutable.stderr b/tests/ui/consts/const-pattern-irrefutable.stderr
index d4365fa16e8..c118ce9e48f 100644
--- a/tests/ui/consts/const-pattern-irrefutable.stderr
+++ b/tests/ui/consts/const-pattern-irrefutable.stderr
@@ -18,13 +18,13 @@ error[E0005]: refutable pattern in local binding
   --> $DIR/const-pattern-irrefutable.rs:19:9
    |
 LL |     pub const b: u8 = 2;
-   |     --------------- missing patterns are not covered because `c` is interpreted as a constant pattern, not a new variable
+   |     --------------- missing patterns are not covered because `b` is interpreted as a constant pattern, not a new variable
 ...
 LL |     let c = 4;
    |         ^
    |         |
    |         patterns `0_u8..=1_u8` and `3_u8..=u8::MAX` not covered
-   |         help: introduce a variable instead: `c_var`
+   |         help: introduce a variable instead: `b_var`
    |
    = note: `let` bindings require an "irrefutable pattern", like a `struct` or an `enum` with only one variant
    = note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html