Skip to content

Commit

Permalink
Rollup merge of rust-lang#119402 - est31:fix_if_guard_unused, r=compi…
Browse files Browse the repository at this point in the history
…ler-errors

Also walk bindings created by if-let guards

This change makes the `unused_variables` lint pick up unused bindings created by if-let guards.

Fixes rust-lang#119383
  • Loading branch information
matthiaskrgr committed Dec 29, 2023
2 parents 4b9a76c + ab60a7d commit efd9fd6
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 0 deletions.
3 changes: 3 additions & 0 deletions compiler/rustc_passes/src/liveness.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1328,6 +1328,9 @@ impl<'a, 'tcx> Visitor<'tcx> for Liveness<'a, 'tcx> {

fn visit_arm(&mut self, arm: &'tcx hir::Arm<'tcx>) {
self.check_unused_vars_in_pat(arm.pat, None, None, |_, _, _, _| {});
if let Some(hir::Guard::IfLet(let_expr)) = arm.guard {
self.check_unused_vars_in_pat(let_expr.pat, None, None, |_, _, _, _| {});
}
intravisit::walk_arm(self, arm);
}
}
Expand Down
9 changes: 9 additions & 0 deletions tests/ui/lint/unused/issue-119383.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#![feature(if_let_guard)]
#![deny(unused_variables)]

fn main() {
match () {
() if let Some(b) = Some(()) => {} //~ ERROR unused variable: `b`
_ => {}
}
}
14 changes: 14 additions & 0 deletions tests/ui/lint/unused/issue-119383.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
error: unused variable: `b`
--> $DIR/issue-119383.rs:6:24
|
LL | () if let Some(b) = Some(()) => {}
| ^ help: if this is intentional, prefix it with an underscore: `_b`
|
note: the lint level is defined here
--> $DIR/issue-119383.rs:2:9
|
LL | #![deny(unused_variables)]
| ^^^^^^^^^^^^^^^^

error: aborting due to 1 previous error

0 comments on commit efd9fd6

Please sign in to comment.