Skip to content

Commit

Permalink
Auto merge of #11083 - sylvestre:autofix, r=dswij
Browse files Browse the repository at this point in the history
[`semicolon_if_nothing_returned`]: add an autofix

changelog:
[`semicolon_if_nothing_returned`]: add an autofix
  • Loading branch information
bors committed Jul 14, 2023
2 parents bafde54 + 09f8634 commit 8882969
Show file tree
Hide file tree
Showing 4 changed files with 129 additions and 7 deletions.
2 changes: 1 addition & 1 deletion clippy_lints/src/semicolon_if_nothing_returned.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ impl<'tcx> LateLintPass<'tcx> for SemicolonIfNothingReturned {
if let Some(expr) = block.expr;
let t_expr = cx.typeck_results().expr_ty(expr);
if t_expr.is_unit();
let mut app = Applicability::MaybeIncorrect;
let mut app = Applicability::MachineApplicable;
if let snippet = snippet_with_context(cx, expr.span, block.span.ctxt(), "}", &mut app).0;
if !snippet.ends_with('}') && !snippet.ends_with(';');
if cx.sess().source_map().is_multiline(block.span);
Expand Down
121 changes: 121 additions & 0 deletions tests/ui/semicolon_if_nothing_returned.fixed
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
//@run-rustfix
#![warn(clippy::semicolon_if_nothing_returned)]
#![allow(clippy::redundant_closure, clippy::uninlined_format_args, clippy::needless_late_init)]

fn get_unit() {}

// the functions below trigger the lint
fn main() {
println!("Hello");
}

fn hello() {
get_unit();
}

fn basic101(x: i32) {
let y: i32;
y = x + 1;
}

#[rustfmt::skip]
fn closure_error() {
let _d = || {
hello();
};
}

#[rustfmt::skip]
fn unsafe_checks_error() {
use std::mem::MaybeUninit;
use std::ptr;

let mut s = MaybeUninit::<String>::uninit();
let _d = || unsafe {
ptr::drop_in_place(s.as_mut_ptr());
};
}

// this is fine
fn print_sum(a: i32, b: i32) {
println!("{}", a + b);
assert_eq!(true, false);
}

fn foo(x: i32) {
let y: i32;
if x < 1 {
y = 4;
} else {
y = 5;
}
}

fn bar(x: i32) {
let y: i32;
match x {
1 => y = 4,
_ => y = 32,
}
}

fn foobar(x: i32) {
let y: i32;
'label: {
y = x + 1;
}
}

fn loop_test(x: i32) {
let y: i32;
for &ext in &["stdout", "stderr", "fixed"] {
println!("{}", ext);
}
}

fn closure() {
let _d = || hello();
}

#[rustfmt::skip]
fn closure_block() {
let _d = || { hello() };
}

unsafe fn some_unsafe_op() {}
unsafe fn some_other_unsafe_fn() {}

fn do_something() {
unsafe { some_unsafe_op() };

unsafe { some_other_unsafe_fn() };
}

fn unsafe_checks() {
use std::mem::MaybeUninit;
use std::ptr;

let mut s = MaybeUninit::<String>::uninit();
let _d = || unsafe { ptr::drop_in_place(s.as_mut_ptr()) };
}

// Issue #7768
#[rustfmt::skip]
fn macro_with_semicolon() {
macro_rules! repro {
() => {
while false {
}
};
}
repro!();
}

fn function_returning_option() -> Option<i32> {
Some(1)
}

// No warning
fn let_else_stmts() {
let Some(x) = function_returning_option() else { return; };
}
3 changes: 2 additions & 1 deletion tests/ui/semicolon_if_nothing_returned.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
//@run-rustfix
#![warn(clippy::semicolon_if_nothing_returned)]
#![allow(clippy::redundant_closure, clippy::uninlined_format_args)]
#![allow(clippy::redundant_closure, clippy::uninlined_format_args, clippy::needless_late_init)]

fn get_unit() {}

Expand Down
10 changes: 5 additions & 5 deletions tests/ui/semicolon_if_nothing_returned.stderr
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
error: consider adding a `;` to the last statement for consistent formatting
--> $DIR/semicolon_if_nothing_returned.rs:8:5
--> $DIR/semicolon_if_nothing_returned.rs:9:5
|
LL | println!("Hello")
| ^^^^^^^^^^^^^^^^^ help: add a `;` here: `println!("Hello");`
|
= note: `-D clippy::semicolon-if-nothing-returned` implied by `-D warnings`

error: consider adding a `;` to the last statement for consistent formatting
--> $DIR/semicolon_if_nothing_returned.rs:12:5
--> $DIR/semicolon_if_nothing_returned.rs:13:5
|
LL | get_unit()
| ^^^^^^^^^^ help: add a `;` here: `get_unit();`

error: consider adding a `;` to the last statement for consistent formatting
--> $DIR/semicolon_if_nothing_returned.rs:17:5
--> $DIR/semicolon_if_nothing_returned.rs:18:5
|
LL | y = x + 1
| ^^^^^^^^^ help: add a `;` here: `y = x + 1;`

error: consider adding a `;` to the last statement for consistent formatting
--> $DIR/semicolon_if_nothing_returned.rs:23:9
--> $DIR/semicolon_if_nothing_returned.rs:24:9
|
LL | hello()
| ^^^^^^^ help: add a `;` here: `hello();`

error: consider adding a `;` to the last statement for consistent formatting
--> $DIR/semicolon_if_nothing_returned.rs:34:9
--> $DIR/semicolon_if_nothing_returned.rs:35:9
|
LL | ptr::drop_in_place(s.as_mut_ptr())
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: add a `;` here: `ptr::drop_in_place(s.as_mut_ptr());`
Expand Down

0 comments on commit 8882969

Please sign in to comment.