diff options
| author | Quinn Sinclair <me@m-rph.dev> | 2024-03-31 17:53:13 +0200 |
|---|---|---|
| committer | Quinn Sinclair <me@m-rph.dev> | 2024-04-01 13:40:36 +0200 |
| commit | eee4db928fa745fba934e008be01765c22abb4de (patch) | |
| tree | 4283737a9db02788180ac2a293896e9b90582853 /tests | |
| parent | 124e68bef8be61aa151ff33bea325c832728146f (diff) | |
| download | rust-eee4db928fa745fba934e008be01765c22abb4de.tar.gz rust-eee4db928fa745fba934e008be01765c22abb4de.zip | |
Replace elided variable in `let_unit` with `()` when used
Situation: `let_unit` lints when an expression binds a unit (`()`) to a variable. In some cases this binding may be passed down to another function. Currently, the lint removes the binding without considering usage. Change: All usages of the elided variable are now replaced with `()`. fixes: #12594
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/ui/let_unit.fixed | 18 | ||||
| -rw-r--r-- | tests/ui/let_unit.rs | 18 | ||||
| -rw-r--r-- | tests/ui/let_unit.stderr | 21 |
3 files changed, 56 insertions, 1 deletions
diff --git a/tests/ui/let_unit.fixed b/tests/ui/let_unit.fixed index 4d41b5e5e50..20940daffa7 100644 --- a/tests/ui/let_unit.fixed +++ b/tests/ui/let_unit.fixed @@ -177,3 +177,21 @@ async fn issue10433() { } pub async fn issue11502(a: ()) {} + +pub fn issue12594() { + fn returns_unit() {} + + fn returns_result<T>(res: T) -> Result<T, ()> { + Ok(res) + } + + fn actual_test() { + // create first a unit value'd value + returns_unit(); + returns_result(()).unwrap(); + returns_result(()).unwrap(); + // make sure we replace only the first variable + let res = 1; + returns_result(res).unwrap(); + } +} diff --git a/tests/ui/let_unit.rs b/tests/ui/let_unit.rs index daa660be25e..dca66f2e3ed 100644 --- a/tests/ui/let_unit.rs +++ b/tests/ui/let_unit.rs @@ -177,3 +177,21 @@ async fn issue10433() { } pub async fn issue11502(a: ()) {} + +pub fn issue12594() { + fn returns_unit() {} + + fn returns_result<T>(res: T) -> Result<T, ()> { + Ok(res) + } + + fn actual_test() { + // create first a unit value'd value + let res = returns_unit(); + returns_result(res).unwrap(); + returns_result(res).unwrap(); + // make sure we replace only the first variable + let res = 1; + returns_result(res).unwrap(); + } +} diff --git a/tests/ui/let_unit.stderr b/tests/ui/let_unit.stderr index 0f1f3d78223..aafb77bcd0d 100644 --- a/tests/ui/let_unit.stderr +++ b/tests/ui/let_unit.stderr @@ -51,5 +51,24 @@ LL + Some(_) => (), LL + }; | -error: aborting due to 3 previous errors +error: this let-binding has unit value + --> tests/ui/let_unit.rs:190:9 + | +LL | let res = returns_unit(); + | ^^^^^^^^^^^^^^^^^^^^^^^^^ + | +help: omit the `let` binding + | +LL | returns_unit(); + | +help: variable `res` of type `()` can be replaced with explicit `()` + | +LL | returns_result(()).unwrap(); + | ~~ +help: variable `res` of type `()` can be replaced with explicit `()` + | +LL | returns_result(()).unwrap(); + | ~~ + +error: aborting due to 4 previous errors |
