Skip to content

Commit

Permalink
Auto merge of #11670 - lengyijun:ignored_unit_pattern_ref, r=dswij
Browse files Browse the repository at this point in the history
[`ignored_unit_patterns`]: check &(), &&(), ...

changelog: [`ignored_unit_patterns`]: check &(), &&(), ...
  • Loading branch information
bors committed Oct 25, 2023
2 parents 4eb4192 + 536114c commit 7ce6e0d
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 2 deletions.
2 changes: 1 addition & 1 deletion clippy_lints/src/ignored_unit_patterns.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ impl<'tcx> LateLintPass<'tcx> for IgnoredUnitPatterns {
},
_ => {},
}
if matches!(pat.kind, PatKind::Wild) && cx.typeck_results().pat_ty(pat).is_unit() {
if matches!(pat.kind, PatKind::Wild) && cx.typeck_results().pat_ty(pat).peel_refs().is_unit() {
span_lint_and_sugg(
cx,
IGNORED_UNIT_PATTERNS,
Expand Down
16 changes: 16 additions & 0 deletions tests/ui/ignored_unit_patterns.fixed
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,19 @@ pub fn moo(_: ()) {
let _: () = foo().unwrap();
let _: () = ();
}

fn test_unit_ref_1() {
let x: (usize, &&&&&()) = (1, &&&&&&());
match x {
(1, ()) => unimplemented!(),
//~^ ERROR: matching over `()` is more explicit
_ => unimplemented!(),
};
}

fn test_unit_ref_2(v: &[(usize, ())]) {
for (x, ()) in v {
//~^ ERROR: matching over `()` is more explicit
let _ = x;
}
}
16 changes: 16 additions & 0 deletions tests/ui/ignored_unit_patterns.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,19 @@ pub fn moo(_: ()) {
let _: () = foo().unwrap();
let _: () = ();
}

fn test_unit_ref_1() {
let x: (usize, &&&&&()) = (1, &&&&&&());
match x {
(1, _) => unimplemented!(),
//~^ ERROR: matching over `()` is more explicit
_ => unimplemented!(),
};
}

fn test_unit_ref_2(v: &[(usize, ())]) {
for (x, _) in v {
//~^ ERROR: matching over `()` is more explicit
let _ = x;
}
}
14 changes: 13 additions & 1 deletion tests/ui/ignored_unit_patterns.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -43,5 +43,17 @@ error: matching over `()` is more explicit
LL | let _ = foo().unwrap();
| ^ help: use `()` instead of `_`: `()`

error: aborting due to 7 previous errors
error: matching over `()` is more explicit
--> $DIR/ignored_unit_patterns.rs:45:13
|
LL | (1, _) => unimplemented!(),
| ^ help: use `()` instead of `_`: `()`

error: matching over `()` is more explicit
--> $DIR/ignored_unit_patterns.rs:52:13
|
LL | for (x, _) in v {
| ^ help: use `()` instead of `_`: `()`

error: aborting due to 9 previous errors

0 comments on commit 7ce6e0d

Please sign in to comment.