mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 08:13:41 +00:00
Use item_name
instead of a span snippet when talking about const pattern
This commit is contained in:
parent
c25b44bee9
commit
6dc79f6133
@ -675,13 +675,12 @@ impl<'p, 'tcx> MatchVisitor<'p, 'tcx> {
|
|||||||
subpattern: box Pat { kind: PatKind::Constant { opt_def: Some(def_id), .. }, .. },
|
subpattern: box Pat { kind: PatKind::Constant { opt_def: Some(def_id), .. }, .. },
|
||||||
..
|
..
|
||||||
} = pat.kind
|
} = pat.kind
|
||||||
&& let Ok(snippet) = self.tcx.sess.source_map().span_to_snippet(pat.span)
|
|
||||||
{
|
{
|
||||||
let span = self.tcx.def_span(def_id);
|
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.
|
// When we encounter a constant as the binding name, point at the `const` definition.
|
||||||
interpreted_as_const = Some(span);
|
interpreted_as_const = Some(span);
|
||||||
interpreted_as_const_sugg =
|
interpreted_as_const_sugg = Some(InterpretedAsConst { span: pat.span, variable });
|
||||||
Some(InterpretedAsConst { span: pat.span, variable: snippet });
|
|
||||||
} else if let PatKind::Constant { .. }
|
} else if let PatKind::Constant { .. }
|
||||||
| PatKind::AscribeUserType {
|
| PatKind::AscribeUserType {
|
||||||
subpattern: box Pat { kind: PatKind::Constant { .. }, .. },
|
subpattern: box Pat { kind: PatKind::Constant { .. }, .. },
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
mod foo {
|
mod foo {
|
||||||
pub const b: u8 = 2;
|
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;
|
pub const d: u8 = 2;
|
||||||
//~^ missing patterns are not covered because `d` is interpreted as a constant pattern, not a new variable
|
//~^ missing patterns are not covered because `d` is interpreted as a constant pattern, not a new variable
|
||||||
}
|
}
|
||||||
|
@ -18,13 +18,13 @@ error[E0005]: refutable pattern in local binding
|
|||||||
--> $DIR/const-pattern-irrefutable.rs:19:9
|
--> $DIR/const-pattern-irrefutable.rs:19:9
|
||||||
|
|
|
|
||||||
LL | pub const b: u8 = 2;
|
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;
|
LL | let c = 4;
|
||||||
| ^
|
| ^
|
||||||
| |
|
| |
|
||||||
| patterns `0_u8..=1_u8` and `3_u8..=u8::MAX` not covered
|
| 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: `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
|
= note: for more information, visit https://doc.rust-lang.org/book/ch18-02-refutability.html
|
||||||
|
Loading…
Reference in New Issue
Block a user