Rollup merge of #59993 - euclio:unused-ref-field, r=estebank
include mode in unused binding suggestion span Fixes #54180.
This commit is contained in:
commit
a95ca298a6
@ -1626,11 +1626,18 @@ impl<'a, 'tcx> Liveness<'a, 'tcx> {
|
||||
);
|
||||
|
||||
if self.ir.variable_is_shorthand(var) {
|
||||
err.multipart_suggestion(
|
||||
"try ignoring the field",
|
||||
spans.iter().map(|span| (*span, format!("{}: _", name))).collect(),
|
||||
Applicability::MachineApplicable
|
||||
);
|
||||
if let Node::Binding(pat) = self.ir.tcx.hir().get_by_hir_id(hir_id) {
|
||||
// Handle `ref` and `ref mut`.
|
||||
let spans = spans.iter()
|
||||
.map(|_span| (pat.span, format!("{}: _", name)))
|
||||
.collect();
|
||||
|
||||
err.multipart_suggestion(
|
||||
"try ignoring the field",
|
||||
spans,
|
||||
Applicability::MachineApplicable,
|
||||
);
|
||||
}
|
||||
} else {
|
||||
err.multipart_suggestion(
|
||||
"consider prefixing with an underscore",
|
||||
|
34
src/test/ui/lint/issue-54180-unused-ref-field.fixed
Normal file
34
src/test/ui/lint/issue-54180-unused-ref-field.fixed
Normal file
@ -0,0 +1,34 @@
|
||||
// run-rustfix
|
||||
|
||||
#![deny(unused)]
|
||||
|
||||
pub struct S {
|
||||
pub f1: i32,
|
||||
}
|
||||
|
||||
pub struct Point {
|
||||
pub x: i32,
|
||||
pub y: i32,
|
||||
}
|
||||
|
||||
pub enum E {
|
||||
Variant { field: String }
|
||||
}
|
||||
|
||||
pub fn foo(arg: &E) {
|
||||
match arg {
|
||||
E::Variant { field: _ } => (), //~ ERROR unused variable
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let s = S { f1: 123 };
|
||||
let S { f1: _ } = s; //~ ERROR unused variable
|
||||
|
||||
let points = vec![Point { x: 1, y: 2 }];
|
||||
let _: i32 = points.iter().map(|Point { x: _, y }| y).sum(); //~ ERROR unused variable
|
||||
|
||||
match (Point { x: 1, y: 2 }) {
|
||||
Point { y, x: _ } => y, //~ ERROR unused variable
|
||||
};
|
||||
}
|
34
src/test/ui/lint/issue-54180-unused-ref-field.rs
Normal file
34
src/test/ui/lint/issue-54180-unused-ref-field.rs
Normal file
@ -0,0 +1,34 @@
|
||||
// run-rustfix
|
||||
|
||||
#![deny(unused)]
|
||||
|
||||
pub struct S {
|
||||
pub f1: i32,
|
||||
}
|
||||
|
||||
pub struct Point {
|
||||
pub x: i32,
|
||||
pub y: i32,
|
||||
}
|
||||
|
||||
pub enum E {
|
||||
Variant { field: String }
|
||||
}
|
||||
|
||||
pub fn foo(arg: &E) {
|
||||
match arg {
|
||||
E::Variant { ref field } => (), //~ ERROR unused variable
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let s = S { f1: 123 };
|
||||
let S { ref f1 } = s; //~ ERROR unused variable
|
||||
|
||||
let points = vec![Point { x: 1, y: 2 }];
|
||||
let _: i32 = points.iter().map(|Point { x, y }| y).sum(); //~ ERROR unused variable
|
||||
|
||||
match (Point { x: 1, y: 2 }) {
|
||||
Point { y, ref mut x } => y, //~ ERROR unused variable
|
||||
};
|
||||
}
|
39
src/test/ui/lint/issue-54180-unused-ref-field.stderr
Normal file
39
src/test/ui/lint/issue-54180-unused-ref-field.stderr
Normal file
@ -0,0 +1,39 @@
|
||||
error: unused variable: `field`
|
||||
--> $DIR/issue-54180-unused-ref-field.rs:20:26
|
||||
|
|
||||
LL | E::Variant { ref field } => (),
|
||||
| ----^^^^^
|
||||
| |
|
||||
| help: try ignoring the field: `field: _`
|
||||
|
|
||||
note: lint level defined here
|
||||
--> $DIR/issue-54180-unused-ref-field.rs:3:9
|
||||
|
|
||||
LL | #![deny(unused)]
|
||||
| ^^^^^^
|
||||
= note: #[deny(unused_variables)] implied by #[deny(unused)]
|
||||
|
||||
error: unused variable: `x`
|
||||
--> $DIR/issue-54180-unused-ref-field.rs:29:45
|
||||
|
|
||||
LL | let _: i32 = points.iter().map(|Point { x, y }| y).sum();
|
||||
| ^ help: try ignoring the field: `x: _`
|
||||
|
||||
error: unused variable: `f1`
|
||||
--> $DIR/issue-54180-unused-ref-field.rs:26:17
|
||||
|
|
||||
LL | let S { ref f1 } = s;
|
||||
| ----^^
|
||||
| |
|
||||
| help: try ignoring the field: `f1: _`
|
||||
|
||||
error: unused variable: `x`
|
||||
--> $DIR/issue-54180-unused-ref-field.rs:32:28
|
||||
|
|
||||
LL | Point { y, ref mut x } => y,
|
||||
| --------^
|
||||
| |
|
||||
| help: try ignoring the field: `x: _`
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
|
Loading…
Reference in New Issue
Block a user