Skip to content

Commit

Permalink
Rollup merge of rust-lang#5409 - dtolnay:letunit, r=flip1995
Browse files Browse the repository at this point in the history
Downgrade let_unit_value to pedantic

Given that the false positive in rust-lang#1502 is marked E-hard and I don't have much hope of it getting fixed, I think it would be wise to disable this lint by default. I have had to suppress this lint in every substantial codebase (\>100k line) I have worked in. Any time this lint is being triggered, it's always the false positive case.

The motivation for this lint is documented as:

> A unit value cannot usefully be used anywhere. So binding one is kind of pointless.

with this example:

> ```rust
> let x = {
>     1;
> };
> ```

Sure, but the author would find this out via an unused_variable warning or from `x` not being the type that they need further down. If there ends up being a type error on `x`, clippy's advice isn't going to help get the code compiling because it can only run if the code already compiles.

changelog: Remove let_unit_value from default set of enabled lints
  • Loading branch information
flip1995 authored Apr 7, 2020
2 parents 3da43d0 + adcaa1b commit 52ca269
Show file tree
Hide file tree
Showing 8 changed files with 7 additions and 10 deletions.
3 changes: 1 addition & 2 deletions clippy_lints/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1131,6 +1131,7 @@ pub fn register_plugins(store: &mut rustc_lint::LintStore, sess: &Session, conf:
LintId::of(&types::CAST_PRECISION_LOSS),
LintId::of(&types::CAST_SIGN_LOSS),
LintId::of(&types::INVALID_UPCAST_COMPARISONS),
LintId::of(&types::LET_UNIT_VALUE),
LintId::of(&types::LINKEDLIST),
LintId::of(&types::OPTION_OPTION),
LintId::of(&unicode::NON_ASCII_LITERAL),
Expand Down Expand Up @@ -1382,7 +1383,6 @@ pub fn register_plugins(store: &mut rustc_lint::LintStore, sess: &Session, conf:
LintId::of(&types::FN_TO_NUMERIC_CAST),
LintId::of(&types::FN_TO_NUMERIC_CAST_WITH_TRUNCATION),
LintId::of(&types::IMPLICIT_HASHER),
LintId::of(&types::LET_UNIT_VALUE),
LintId::of(&types::REDUNDANT_ALLOCATION),
LintId::of(&types::TYPE_COMPLEXITY),
LintId::of(&types::UNIT_ARG),
Expand Down Expand Up @@ -1495,7 +1495,6 @@ pub fn register_plugins(store: &mut rustc_lint::LintStore, sess: &Session, conf:
LintId::of(&types::FN_TO_NUMERIC_CAST),
LintId::of(&types::FN_TO_NUMERIC_CAST_WITH_TRUNCATION),
LintId::of(&types::IMPLICIT_HASHER),
LintId::of(&types::LET_UNIT_VALUE),
LintId::of(&unsafe_removed_from_name::UNSAFE_REMOVED_FROM_NAME),
LintId::of(&write::PRINTLN_EMPTY_STRING),
LintId::of(&write::PRINT_LITERAL),
Expand Down
2 changes: 1 addition & 1 deletion clippy_lints/src/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -593,7 +593,7 @@ declare_clippy_lint! {
/// };
/// ```
pub LET_UNIT_VALUE,
style,
pedantic,
"creating a `let` binding to a value of unit type, which usually can't be used afterwards"
}

Expand Down
2 changes: 1 addition & 1 deletion src/lintlist/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -999,7 +999,7 @@ pub static ref ALL_LINTS: Vec<Lint> = vec![
},
Lint {
name: "let_unit_value",
group: "style",
group: "pedantic",
desc: "creating a `let` binding to a value of unit type, which usually can\'t be used afterwards",
deprecation: None,
module: "types",
Expand Down
1 change: 0 additions & 1 deletion tests/ui/doc_unsafe.rs
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,6 @@ very_unsafe!();
// we don't lint code from external macros
undocd_unsafe!();

#[allow(clippy::let_unit_value)]
fn main() {
unsafe {
you_dont_see_me();
Expand Down
2 changes: 1 addition & 1 deletion tests/ui/redundant_pattern_matching.fixed
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

#![warn(clippy::all)]
#![warn(clippy::redundant_pattern_matching)]
#![allow(clippy::unit_arg, clippy::let_unit_value, unused_must_use)]
#![allow(clippy::unit_arg, unused_must_use)]

fn main() {
Ok::<i32, i32>(42).is_ok();
Expand Down
2 changes: 1 addition & 1 deletion tests/ui/redundant_pattern_matching.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

#![warn(clippy::all)]
#![warn(clippy::redundant_pattern_matching)]
#![allow(clippy::unit_arg, clippy::let_unit_value, unused_must_use)]
#![allow(clippy::unit_arg, unused_must_use)]

fn main() {
if let Ok(_) = Ok::<i32, i32>(42) {}
Expand Down
1 change: 0 additions & 1 deletion tests/ui/uninit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

use std::mem::MaybeUninit;

#[allow(clippy::let_unit_value)]
fn main() {
let _: usize = unsafe { MaybeUninit::uninit().assume_init() };

Expand Down
4 changes: 2 additions & 2 deletions tests/ui/uninit.stderr
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
error: this call for this type may be undefined behavior
--> $DIR/uninit.rs:7:29
--> $DIR/uninit.rs:6:29
|
LL | let _: usize = unsafe { MaybeUninit::uninit().assume_init() };
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: `#[deny(clippy::uninit_assumed_init)]` on by default

error: this call for this type may be undefined behavior
--> $DIR/uninit.rs:10:31
--> $DIR/uninit.rs:9:31
|
LL | let _: [u8; 0] = unsafe { MaybeUninit::uninit().assume_init() };
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand Down

0 comments on commit 52ca269

Please sign in to comment.