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) {
|
if self.ir.variable_is_shorthand(var) {
|
||||||
err.multipart_suggestion(
|
if let Node::Binding(pat) = self.ir.tcx.hir().get_by_hir_id(hir_id) {
|
||||||
"try ignoring the field",
|
// Handle `ref` and `ref mut`.
|
||||||
spans.iter().map(|span| (*span, format!("{}: _", name))).collect(),
|
let spans = spans.iter()
|
||||||
Applicability::MachineApplicable
|
.map(|_span| (pat.span, format!("{}: _", name)))
|
||||||
);
|
.collect();
|
||||||
|
|
||||||
|
err.multipart_suggestion(
|
||||||
|
"try ignoring the field",
|
||||||
|
spans,
|
||||||
|
Applicability::MachineApplicable,
|
||||||
|
);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
err.multipart_suggestion(
|
err.multipart_suggestion(
|
||||||
"consider prefixing with an underscore",
|
"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