Rollup merge of #58883 - estebank:unused-closure-arg, r=varkor
Suggest appropriate code for unused field when destructuring pattern Fix #56472.
This commit is contained in:
commit
3005b4d918
3 changed files with 54 additions and 1 deletions
|
|
@ -379,9 +379,22 @@ fn visit_fn<'a, 'tcx: 'a>(ir: &mut IrMaps<'a, 'tcx>,
|
|||
let body = ir.tcx.hir().body(body_id);
|
||||
|
||||
for arg in &body.arguments {
|
||||
let is_shorthand = match arg.pat.node {
|
||||
crate::hir::PatKind::Struct(..) => true,
|
||||
_ => false,
|
||||
};
|
||||
arg.pat.each_binding(|_bm, hir_id, _x, ident| {
|
||||
debug!("adding argument {:?}", hir_id);
|
||||
fn_maps.add_variable(Arg(hir_id, ident.name));
|
||||
let var = if is_shorthand {
|
||||
Local(LocalInfo {
|
||||
id: hir_id,
|
||||
name: ident.name,
|
||||
is_shorthand: true,
|
||||
})
|
||||
} else {
|
||||
Arg(hir_id, ident.name)
|
||||
};
|
||||
fn_maps.add_variable(var);
|
||||
})
|
||||
};
|
||||
|
||||
|
|
|
|||
20
src/test/ui/suggestions/unused-closure-argument.rs
Normal file
20
src/test/ui/suggestions/unused-closure-argument.rs
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
#![deny(unused_variables)]
|
||||
|
||||
struct Point {
|
||||
x: i32,
|
||||
y: i32,
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let points = vec!(Point { x: 1, y: 2 }, Point { x: 3, y: 4 });
|
||||
|
||||
let _: i32 = points.iter()
|
||||
.map(|Point { x, y }| y)
|
||||
//~^ ERROR unused variable
|
||||
.sum();
|
||||
|
||||
let _: i32 = points.iter()
|
||||
.map(|x| 4)
|
||||
//~^ ERROR unused variable
|
||||
.sum();
|
||||
}
|
||||
20
src/test/ui/suggestions/unused-closure-argument.stderr
Normal file
20
src/test/ui/suggestions/unused-closure-argument.stderr
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
error: unused variable: `x`
|
||||
--> $DIR/unused-closure-argument.rs:12:23
|
||||
|
|
||||
LL | .map(|Point { x, y }| y)
|
||||
| ^ help: try ignoring the field: `x: _`
|
||||
|
|
||||
note: lint level defined here
|
||||
--> $DIR/unused-closure-argument.rs:1:9
|
||||
|
|
||||
LL | #![deny(unused_variables)]
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error: unused variable: `x`
|
||||
--> $DIR/unused-closure-argument.rs:17:15
|
||||
|
|
||||
LL | .map(|x| 4)
|
||||
| ^ help: consider prefixing with an underscore: `_x`
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue